执行调优
使用ATC工具进行模型转换时调优
在执行ATC工具进行模型转换时,可通过--auto_tune_mode="xx"开关,使能Auto Tune调优工具。
- "RL,GA":同时进行RL与GA的调优,RL与GA顺序不区分,Auto Tune工具会自动根据算子特点选择使用RL调优模式还是GA调优模式。
- "RL":仅针对RL调优模式支持的算子进行调优。
- "GA":仅针对GA调优模式支持的算子进行调优。
说明:请根据网络中的算子类型,选择合适的调优模式。当前版本RL调优模式耗时较长,通常一个算子调优大约需要5分钟,会根据网络中算子个数进行时间的累加。
命令示例如下所示:
atc --model=./tune.pb --framework=3 --output=./add_tune --output_type=FP16 --soc_version=${soc_version} --auto_tune_mode="RL,GA"
- ATC模型转换时默认不记录日志信息,若想输出Auto Tune的日志信息(Auto Tune记录的为Info级别的日志),请在执行atc命令时添加“--log=info”参数,则Auto Tune的日志信息会记录到Host侧日志中,ATC命令详细解释请参见《ATC工具使用指南》中的约束及参数说明。
- 调优过程中可通过环境变量进行如下功能的设置:
- 如果网络模型中某个算子已命中知识库,默认不会重复调优,可通过配置REPEAT_TUNE环境变量强制调优。
- 网络调优场景中,若某层算子性能较低,可通过配置TUNE_OPS_NAME环境变量对指定层进行调优。
- Auto Tune工具还提供了其他环境变量控制功能,详情可参见配置环境变量。
- 当前在同一个Host上允许开启多个ATC进程同时调优,多进程并行在一定范围内会提升调优效率,但由于资源的限制,达到一定峰值后调优效率会随着进程数的增多下降,ATC进程数配置建议满足如下规则:
ATC进程数 * TE_PARALLEL_COMPILER * 2 < Host侧CPU核数,其中TE_PARALLEL_COMPILER为算子并行编译进程数。
TBE算子并行编译场景下(即TE_PARALLEL_COMPILER>1),一个调优进程需要对应一个Device,即在进行调优时,不可以进行需要使用Device资源的其他操作,否则会调优异常。
- 调优后生成的自定义知识库的属组为执行调优操作的用户,权限为“640”,属组外用户无权限(超级用户除外),若希望其他用户可使用调优后的自定义知识库,需要手工赋权。
IR模型构建时调优
在使用Ascend Graph接口构建离线模型时,可在模型构建初始化接口“aclgrphBuildInitialize”的“global_options”参数中进行如下配置,使能Auto Tune调优工具。
std::map<std::string, std::string> global_options = { {ge::ir_option::SOC_VERSION, "Ascend310"}, {ge::ir_option::EXEC_DISABLE_REUSED_MEMORY, "0"}, {ge::ir_option::AUTO_TUNE_MODE, "RL,GA"} }; auto status = aclgrphBuildInitialize( global_options );
- "RL,GA":同时进行RL与GA的调优,RL与GA顺序不区分,Auto Tune工具会自动根据算子特点选择使用RL调优模式还是GA调优模式。
- "RL":仅针对RL调优模式支持的算子进行调优。
- "GA":仅针对GA调优模式支持的算子进行调优。
说明:请根据网络中的算子类型,选择合适的调优模式。当前版本RL调优模式耗时较长,通常一个算子调优大约需要5分钟,会根据网络中算子个数进行时间的累加。
IR模型构建时默认不记录日志信息,若想输出Auto Tune的日志信息(Auto Tune记录的为Info级别的日志),请在模型编译接口“aclgrphBuildModel”的“options”参数中添加如下配置:
{ge::ir_option::LOG_LEVEL, "info"}
则Auto Tune的日志信息会记录到Host侧日志中。IR模型构建的详细方法可参见《Ascend Graph开发指南》。
调优过程中可通过环境变量进行如下功能的设置:
- 如果网络模型中某个算子已命中知识库,默认不会重复调优,可通过配置REPEAT_TUNE环境变量强制调优。
- 网络调优场景中,若某层算子性能较低,可通过配置TUNE_OPS_NAME环境变量对指定层进行调优。
- Auto Tune工具还提供了其他环境变量控制功能,详情可参见配置环境变量。
- 当前在同一个Host上允许开启多个构图进程同时调优,多进程并行在一定范围内会提升调优效率,但由于资源的限制,达到一定峰值后调优效率会随着进程数的增多下降,构图进程数配置建议满足如下规则:
构图进程数 * TE_PARALLEL_COMPILER * 2 < Host侧CPU核数。其中TE_PARALLEL_COMPILER为算子并行编译进程数。
TBE算子并行编译场景下(即TE_PARALLEL_COMPILER>1),建议一个构图进程对应一个Device。
基于DUMP数据离线调优
- 用户需要在使用ATC工具进行模型转换或者执行IR模型构建时获取调优所需的DUMP数据(包含算子输出描述文件、算子的二进制文件等)。
- 直接执行Auto Tune调优工具,基于上述步骤获取的DUMP数据进行离线调优。
详细操作如下所示:
- 使用ATC工具进行模型转换或者执行IR模型构建时获取网络模型中算子的DUMP数据。
DUMP数据主要包含算子的输出描述文件以及算子的二进制文件等,生成DUMP数据的前提为:
- 配置DUMP相关环境变量。开启DUMP数据开关。
- 配置Auto Tune所需必选环境变量:
请参见•基础环境变量。
- 开启DUMP数据开关:
export ENABLE_TUNE_DUMP=True
- 设置DUMP数据存储路径:
export TUNE_DUMP_PATH=/home/username/DumpData
- 配置Auto Tune所需必选环境变量:
- 在使能Auto Tune调优工具的前提下执行ATC工具进行模型转换或者执行IR模型构建操作,同步生成DUMP数据。
- 使用ATC工具进行模型转换,同步使能Auto Tune调优工具。
使能Auto Tune调优工具的方法为配置auto_tune_mode参数,详细操作方法可参见使用ATC工具进行模型转换时调优。
- 执行IR模型构建,同步使能Auto Tune调优工具。
使能Auto Tune调优工具的方法为在模型构建初始化接口“aclgrphBuildInitialize”的“global_options”参数中配置AUTO_TUNE_MODE,详细操作方法可参见IR模型构建时调优。
模型构建完成后,会在“TUNE_DUMP_PATH”指定的路径下生成DUMP数据。
- 使用ATC工具进行模型转换,同步使能Auto Tune调优工具。
- 配置DUMP相关环境变量。开启DUMP数据开关。
- 基于DUMP数据,执行Auto Tune工具进行离线调优。
Auto Tune工具离线调优入口脚本为CANN软件安装后文件存储路径下的:python/site-packages/schedule_search/msoptune.py,用户可直接调用此python文件实现离线调优,调用命令如下:
python3.7.5 {msoptune.py文件所在路径} --start {DUMP数据所在目录}
示例:
python3.7.5 ${INSTALL_DIR}/python/site-packages/schedule_search/msoptune.py --start /home/usrname/DumpData
- ${INSTALL_DIR}:CANN软件安装后文件存储路径,请根据实际情况替换。
- /home/username/DumpData:生成的DUMP数据所在目录,可配置为绝对路径,或者相对于当前脚本执行所在目录的相对路径。
当前版本同一个Host上只允许开启一个进程进行离线调优,不允许多进程并发调优。