有些模型在模型计算的过程中会存在动态shape场景,即在模型计算过程中,模型的输入和输出存在多种shape。这种情况下,由于编译时无法已知全部shape信息,每次调用算子进行计算时都需要进行编译,会增加编译开销和内存使用,降低性能。
使用PyTorch Analyse工具的动态shape模式对于模型脚本进行分析,判断是否存在动态shape算子。
使用PyTorch Analyse工具的动态shape模式对于模型脚本进行分析,生成动态shape的分析报告msft_dynamic_shape_analysis_report.csv。
cd Ascend-cann-toolkit安装目录/ascend-toolkit/latest/tools/ms_fmk_transplt/
./pytorch_analyse.sh -i 待分析脚本路径 -o 分析结果输出路径 -v 待分析脚本框架版本 -m dynamic_shape
参数 |
参数说明 |
取值示例 |
---|---|---|
-i --input |
|
/home/xxx/analysis |
-o --output |
|
/home/xxx/analysis_output |
-v --version |
|
|
-m --mode |
|
|
-env --env-path |
|
/home/xxx/transformers/src /home/xxx/transformers/utils 多个文件路径使用空格隔开。 |
-api --api-files |
|
/home/xxx/mmcv_analysis/full_unsupported_results.csv /home/xxx/transformers_analysis/full_unsupported_results.csv 多个文件路径使用空格隔开。 |
-h --help |
显示帮助信息。 |
- |
for i, (ings, targets, paths, _) in pbar:
for i, (ings, targets, paths, _) in DETECTOR.start(pbar):
在代码中使能算子二进制即可完成性能调优。
vi train.py
if __name__ == '__main__': torch_npu.npu.set_compile_mode(jit_compile=False) main()