执行调优
前提条件
- 已经完成IR构图,具体开发过程请参见《Ascend Graph开发指南》。
- 获取IR构图对应的air文件。步骤如下。
- 打开开发好的图cpp文件,在构图之后,调用aclgrphBuildInitialize接口之前,通过增加如下代码可以生成对应的air文件。/path/to/graph.air表示对应的air文件路径和名称,请根据实际情况修改。SaveToFile接口的详细描述请参见SaveToFile。
graph.SaveToFile("/path/to/graph.air");
- 保存如上cpp文件,并重新执行该文件。获取对应的air文件graph.air。
调优完成后,请将graph.SaveToFile("/path/to/graph.air");注释掉,防止生成冗余的air文件。
AIR(Ascend Intermediate Representation),类似ONNX,是华为定义的针对机器学习所设计的开放式的文件格式,能更好地适配Ascend AI处理器。
- 打开开发好的图cpp文件,在构图之后,调用aclgrphBuildInitialize接口之前,通过增加如下代码可以生成对应的air文件。/path/to/graph.air表示对应的air文件路径和名称,请根据实际情况修改。SaveToFile接口的详细描述请参见SaveToFile。
操作步骤
- 单个AOE进程时,请确保具备如下条件。多个AOE进程时,可参考如下条件自行扩展。
- 调优用户的家目录下磁盘可用空间>=20G。
- 可用内存>=32G。注意:如果模型中存在大shape算子,可能需要更多内存。
- 算子调优时Host CPU要求:若调优时未指定--model_path,则Host CPU建议>=TE_PARALLEL_COMPILER + TUNING_PARALLEL_NUM + 1 + min(CPU的核数/2, 8) + 50。若调优时指定了--model_path,则Host CPU建议>=TE_PARALLEL_COMPILER + TUNING_PARALLEL_NUM + 1 + min(CPU的核数/2, 8) + 58。其中TE_PARALLEL_COMPILER和TUNING_PARALLEL_NUM的说明请分别参考表1和表1。
- 子图调优时Host CPU建议>=2 *TUNING_PARALLEL_NUM + TE_PARALLEL_COMPILER + 1。其中TE_PARALLEL_COMPILER和TUNING_PARALLEL_NUM的说明请分别参考表1和表1。
- Device核数>=模型中所有算子使用的最大核数。
- Device内存:和模型相关,和模型的内存复用相关。
- 调优前,请确保关闭Profiling功能,避免影响调优结果。关闭Profiling功能具体操作请参见《性能调优工具指南》。
- AOE不支持不同用户同时使用同一device进行调优。
- AOE调优引擎还提供了其他环境变量控制功能,详情可参见配置环境变量。
- 推荐先进行子图调优,再进行算子调优。原因是:先进行子图调优会生成图的切分方式,子图调优后算子已经被切分成最终的shape了,再进行算子调优,会基于这个最终shape去做算子调优。如果优先算子调优,这时调优的算子shape不是最终切分后的算子shape,不符合实际使用场景。
- 执行AOE调优引擎进行子图重载调优
子图调优中断后,希望从上次的已有的调优阶段开始继续调优,则可以选择该模式。
aoe --framework=1 --model=./xxxx.air --job_type=1 --reload
该命令必须在上次执行调优命令的相同目录下使用。原因是重载调优需要使用上次调优的中间文件,中间文件存放在上次执行调优命令路径下的aoe_workspace目录。
- 执行AOE调优引擎进行算子调优
aoe --framework=1 --model=./xxxx.air --job_type=2
更多AOE参数请参见AOE参数说明。
父主题: IR构图场景下调优