昇腾TensorFlow适配器算子编译与图编译

昇腾TensorFlow适配器算子编译与图编译 算子编译与图编译【免费下载链接】tensorflowAscend TensorFlow Adapter项目地址: https://gitcode.com/cann/tensorflowop_compiler_cache_mode用于配置算子编译磁盘缓存模式。enable默认值启用算子编译缓存功能。启用后算子编译信息缓存至磁盘相同编译参数的算子无需重复编译直接使用缓存内容从而提升编译速度。force启用算子编译缓存功能区别于enable模式force模式下会先删除已有缓存再重新编译并加入缓存。例如当用户的Python变更、依赖库变更、算子调优后知识库变更时需要先指定为force用于先清理已有的缓存后续再修改为enable模式避免每次编译时都强制刷新缓存。需要注意force选项不建议在程序并行编译时设置否则可能会导致其他模型因使用的缓存内容被清除而编译失败。disable禁用算子编译缓存功能。使用说明启动算子编译缓存功能时可通过op_compiler_cache_dir配置算子编译缓存文件存储路径。建议模型最终发布时设置编译缓存选项为disable或者force。若op_debug_level配置非0值会忽略op_compiler_cache_mode的配置不启用算子编译缓存功能算子全部重新编译。若op_debug_config配置非空且配置文件中未配置op_debug_list字段会忽略op_compiler_cache_mode的配置不启用算子编译缓存功能算子全部重新编译。若op_debug_config配置非空且配置文件中配置了op_debug_list字段当op_compiler_cache_mode配置为enable或force时列表中的算子会重新编译列表外的算子会启用算子编译缓存不再重新编译。启用算子编译缓存功能时默认使用的缓存文件磁盘空间大小是500MB磁盘空间不足时会删除缓存文件默认保留50%的缓存空间。开发者也可以通过以下方式自定义存储缓存文件的磁盘空间大小与保留缓存空间比例通过配置文件op_cache.ini设置。算子编译完成后会在op_compiler_cache_dir指定的目录下自动生成op_cache.ini文件开发者可通过该文件设置缓存磁盘空间大小与保留缓存空间比例。若op_cache.ini文件不存在可手动创建。在“op_cache.ini”文件中增加如下信息#配置文件格式必须包含自动生成的文件中默认包括如下信息手动创建时需要输入 [op_compiler_cache] #限制某个AI处理器下缓存文件的磁盘空间的大小整数单位为MB max_op_cache_size500 #当磁盘空间不足时设置需要保留的缓存文件比例取值范围[1,100]单位为百分比例如80表示磁盘空间不足时会保留80%的缓存空间中的文件其余删除 remain_cache_size_ratio80上述文件中的max_op_cache_size和remain_cache_size_ratio参数取值都有效时op_cache.ini文件才会生效。当编译缓存文件大小超过“max_op_cache_size”的设置值且超过半小时缓存文件未被访问时缓存文件就会老化算子编译时不会因为编译缓存文件大小超过设置值而中断所以当“max_op_cache_size”设置过小时会出现实际编译缓存文件大小超过此设置值的情况。若需要关闭编译缓存老化功能可将“max_op_cache_size”设置为“-1”此时访问算子缓存时不会更新访问时间算子编译缓存不会老化磁盘空间使用默认大小500MB。若多个使用者使用相同的缓存路径该配置文件会影响所有使用者。通过环境变量ASCEND_MAX_OP_CACHE_SIZE设置。开发者可以通过环境变量ASCEND_MAX_OP_CACHE_SIZE来限制某个AI处理器下缓存文件的磁盘空间的大小当编译缓存空间大小达到ASCEND_MAX_OP_CACHE_SIZE设置的取值且超过半个小时缓存文件未被访问时缓存文件就会老化。可通过环境变量ASCEND_REMAIN_CACHE_SIZE_RATIO设置需要保留缓存的空间大小比例。关于环境变量的详细说明可参见《环境变量参考》中的“算子编译”章节。若需要关闭编译缓存老化功能可将环境变量“ASCEND_MAX_OP_CACHE_SIZE”设置为-1。若同时配置了op_cache.ini文件和环境变量则优先读取op_cache.ini文件中的配置项若op_cache.ini文件和环境变量都未设置则读取系统默认值默认磁盘空间大小500MB默认保留缓存的空间50%。配置示例config NPURunConfig(op_compiler_cache_modeenable)op_compiler_cache_dir用于配置算子编译磁盘缓存的目录。路径支持大小写字母a-zA-Z、数字0-9、下划线_、中划线-、句点.、中文字符。若指定的路径存在且路径有效会在指定的路径下自动创建子目录kernel_cache如果指定的路径不存在但路径有效则先自动创建目录然后在该路径下自动创建子目录kernel_cache。算子编译缓存文件存储优先级为配置参数“op_compiler_cache_dir” ${ASCEND_CACHE_PATH}/kernel_cache 默认路径$HOME/atc_data。关于环境变量ASCEND_CACHE_PATH的详细说明可参见《环境变量参考》。配置示例config NPURunConfig(op_compiler_cache_dir/home/test/kernel_cache)aicore_num用于配置算子编译时使用的最大Cube Core数量和Vector Core数量。配置格式“整数1|整数2”中间使用“|”分割整数1表示算子编译时使用的最大Cube Core数量整数2表示算子编译时使用的最大Vector Core数量整数1与整数2都需要大于0小于等于AI处理器包含的Cube Core数量和Vector Core数量。说明该参数支持如下产品Atlas A3 训练系列产品/Atlas A3 推理系列产品Atlas A2 训练系列产品/Atlas A2 推理系列产品不同型号的AI处理器包含的最大Cube Core与Vector Core的数量可通过“CANN软件安装目录/arch-linux/data/platform_config/soc_version.ini”文件查看如下所示说明AI处理器上存在24个Cube Core48个Vector Core。[SoCInfo] ai_core_cnt24 cube_core_cnt24 vector_core_cnt48静态shape场景下如果模型编译时复用了已有算子二进制文件即“jit_compile”参数设为“fasle”“aicore_num”参数不生效。配置示例config NPURunConfig(aicore_num2|4)oo_constant_folding常量折叠功能开启与关闭开关。常量折叠是指在图编译阶段直接计算并替换常量表达式的值从而降低内存占用。一般情况下建议保持默认值启用常量折叠功能。但有些网络编译运行过程中需要较多的内存而常量内存在图的整个生命周期会一直占用若存在常量折叠后会增加总内存的场景可考虑通过此参数关闭常量折叠功能。True默认值启用常量折叠功能。此配置下若用户在脚本中通过TensorFlow图优化器Grappler的“_grappler_do_not_remove”属性设置了某个节点a不被折叠则图编译过程中节点a不会被折叠但其他满足折叠条件的节点仍会被折叠。False关闭常量折叠功能。config NPURunConfig(oo_constant_foldingTrue)说明关闭常量折叠功能后若网络编译运行出错如下所示示例1 debug日志中报错信息如下所示[ERROR] GE(3469659,python3.7):2025-02-25-05:** [ge_deleted_op.cc:21]3470503 Run: ErrorNo: 4294967295(failed) [Delete][Node] Node:HcomAllReduce/input type is ExpandDims, should be deleted by ge.如上错误信息说明网络中存在图编译时需要被常量折叠的算子“ExpandDims”所以不支持关闭常量折叠功能。示例2 返回错误码“EZ3003”打屏信息如下所示Error Message is : EZ3003: [PID: 3482331] 2025-02-25-14:07:19.774.362 No supported Ops kernel and engine are found for [import/conv2d_1/convolutionimport/batch_normalization_1/FusedBatchNorm_1_filter_host], optype [ConvBnFilterHost]. Possible Cause: The operator is not supported by the system. Therefore, no hit is found in any operator information library.如上错误信息说明网络中存在图编译时需要被常量折叠的算子“ConvBnFilterHost”所以不支持关闭常量折叠功能。解决方法开发者可以启用常量折叠功能oo_constant_folding配置为True然后通过TensorFlow图优化器Grappler的“_grappler_do_not_remove”属性精准关闭某些算子的常量折叠功能。【免费下载链接】tensorflowAscend TensorFlow Adapter项目地址: https://gitcode.com/cann/tensorflow创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考