ExperimentalConfig构造函数【免费下载链接】tensorflowAscend TensorFlow Adapter项目地址: https://gitcode.com/cann/tensorflow功能说明ExperimentalConfig类的构造函数调试功能扩展参数后续版本可能会存在变动不支持应用于商用产品中。函数原型class ExperimentalConfig(): def __init__(self, graph_compiler_cache_dirNone, …… )参数说明graph_compiler_cache_dir输入该参数用于配置图编译磁盘缓存目录当该参数配置为非空时图编译磁盘缓存功能生效。图编译缓存功能支持将图编译结果进行磁盘持久化当再次执行图编译运行时可直接加载磁盘上缓存的编译结果从而减少图编译时长。需要注意配置的缓存目录必须存在否则会导致编译失败。图编译时会根据此参数的值确定缓存文件若缓存文件不存在则保存缓存若缓存文件存在则直接加载缓存。图发生变化后原来的缓存文件不可用用户需要手动删除缓存目录中的缓存文件然后重新编译生成缓存文件。缓存不保证跨版本的兼容性如果版本升级需要清理缓存目录重新编译生成缓存。该功能当前不支持带资源类算子的模型。配置示例graph_compiler_cache_dir/root/build_cache_diraccelerate_train_mode输入针对超过1小时以上的训练场景开发者可以通过此配置触发训练加速提升训练性能。软件内部会根据开发者配置的加速类型、加速触发模式以及低精度训练流程占比对相应比例的训练流程降精度编译运行剩余的训练流程仍按照原始精度编译运行。该配置项取值类型为字符串由“|”符号分割为三个字段例如fast|step|0.9。第一个字段代表加速类型支持“fast”与“fast1”两种取值。“fast”表示降精度时按照float16的数据类型编译执行。“fast1”表示降精度时按照bf16的数据类型编译执行。第二个字段支持“step”和“loss”两种取值分别表示根据step值或者loss值来分割整个训练流程为低精度训练和高精度训练。第三个字段代表低精度训练流程在总step或总loss中的占比。当第二个字段取值为“step”时此字段的合法取值范围为“0.2 ~ 0.9”默认值为“0.9”。当第二个字段的取值为“loss”时此字段的合法取值范围为“1.01 ~ 1.5”默认值为“1.05”。配置示例按照step触发加速accelerate_train_modefast|step|0.9按照loss触发加速accelerate_train_modefast|loss|1.05需要注意若需要通过此配置项触发训练加速需要确保网络脚本能够正常收敛。针对网络脚本训练耗时较短的场景若开启此配置项端到端性能耗时不一定能够产生正向收益。此配置项的功能与网络脚本中配置的精度模式有关当通过“precision_mode”参数配置精度模式时仅支持取值为allow_fp32_to_fp16 “must_keep_origin_dtype”或者“空”的场景下开启此配置。当通过“precision_mode_v2”参数配置精度模式时仅支持取值为“origin”或者“空”的场景下开启此配置。此配置项功能与小循环次数有关开启小循环的场景下可能不能准确按照指定的步数或者loss值分割整个训练流程最终可能对loss和精度产生影响。开启此配置项时开发者需要对网络脚本适配修改通过TellMeStepOrLossHook构造函数通知底层软件当前执行的步数和总的步数或者当前执行的loss和最终的目标loss。示例如下from npu_bridge.npu_init import * from npu_bridge.estimator.npu.npu_config import ExperimentalConfig from npu_bridge.estimator.npu.npu_hook import TellMeStepOrLossHook # 使能fast加速模式按照总step的0.9比例分割训练流程即0.9占比的step数进行低精度训练剩余step数进行高精度训练 experimental_config npu_config.ExperimentalConfig(accelerate_train_modefast|step|0.9) config NPURunConfig(experimental_configexperimental_config) est NPUEstimator( model_fnmodel_fn, configconfig, paramsparams) hooks [] max_steps 10000 # step分割方式告知底层当前执行的步数和总步数值“global_step:0”仅为示例请配置为当前步数的实际Tensor名称 my_hook TellMeStepOrLossHook(stepglobal_step:0, total_stepmax_steps ) # loss分割方式告知底层当前执行的loss和目标loss值“loss:0”仅为示例请配置为当前loss的实际Tensor名称 # my_hook TellMeStepOrLossHook(lossloss:0, final_loss7.1) hooks.append(my_hook) # 开启训练 est.train( input_fnimagenet_train.input_fn, max_stepsmax_steps hookshooks)返回值返回ExperimentalConfig类对象作为NPURunConfig的参数传入。约束说明无调用示例from npu_bridge.npu_init import * from npu_bridge.estimator.npu.npu_config import ExperimentalConfig ... experimental_configExperimentalConfig(accelerate_train_modefast|step|0.9) session_configtf.ConfigProto(allow_soft_placementTrue) config NPURunConfig(experimental_configexperimental_config, session_configsession_config)【免费下载链接】tensorflowAscend TensorFlow Adapter项目地址: https://gitcode.com/cann/tensorflow创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考