PyTorch Analyse工具提供分析脚本,帮助用户在执行迁移操作前,分析基于GPU平台的PyTorch训练脚本中API、三方库套件、亲和API分析以及动态shape的支持情况,四种模式区别如下:
三方库API是指在三方库代码中的函数,如果某函数的函数体内使用了不支持的torch算子或者cuda自定义算子,则此函数就是三方库不支持的API。如果第三方库中其他函数调用了这些不支持的API,则这些调用函数也为不支持的API。
使用PyTorch Analyse工具前须安装如下依赖。
pip3 install pandas #pandas版本号需大于或等于1.2.4 pip3 install libcst #Python语法树解析器,用于解析Python文件 pip3 install prettytable #将数据可视化为图表形式 pip3 install jedi #三方库套件、亲和API分析时必须安装
cd Ascend-cann-toolkit安装目录/ascend-toolkit/latest/tools/ms_fmk_transplt/
./pytorch_analyse.sh -i 待分析脚本路径 -o 分析结果输出路径 -v 待分析脚本框架版本 [-m 分析模式]
其中“[]”表示可选参数,实际使用可不用添加。若“-m/--mode”参数指定的分析模式为dynamic_shape,分析任务完成后需参考后续操作对训练脚本进行修改,才能获取动态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 |
显示帮助信息。 |
- |
├── xxxx_analysis // 分析结果输出目录 │ ├── cuda_op_list.csv //cuda API列表 │ ├── unknown_api.csv //支持情况存疑的API列表 │ ├── unsupported_api.csv //不支持的API列表 │ ├── api_precision_advice.csv //API精度调优的专家建议 │ ├── api_performance_advice.csv //API性能调优的专家建议和和指导措施 │ ├── pytorch_analysis.txt // 分析过程日志
├── xxxx_analysis // 分析结果输出目录 │ ├── cuda_op.csv //cuda API列表 │ ├── framework_unsupported_op.csv //框架不支持的API列表 │ ├── full_unsupported_results.csv //全量不支持的API列表 │ ├── migration_needed_op.csv //待迁移的API列表 │ ├── unknown_op.csv //支持情况存疑的API列表 │ ├── pytorch_analysis.txt // 分析过程日志
├── xxxx_analysis // 分析结果输出目录 │ ├── affinity_api_call.csv // 可替换为亲和API的原生API调用列表 │ ├── pytorch_analysis.txt // 分析过程日志
├── xxxx_analysis // 分析结果输出目录 │ ├── 生成脚本文件 // 与分析前的脚本文件目录结构一致 │ ├── msft_dynamic_analysis │ ├── hook.py //包含动态shape分析的功能参数 │ ├── __init__.py
生成动态shape分析结果件后,还需要先修改训练脚本文件读取训练数据集的for循环,手动开启动态shape检测,请参考下方示例进行修改。
for i, (ings, targets, paths, _) in pbar:
修改如下加粗字体信息:
for i, (ings, targets, paths, _) in DETECTOR.start(pbar):
运行分析修改后的训练脚本,将在分析结果件所在的根目录下生成保存动态shape的分析报告msft_dynamic_shape_analysis_report.csv。