用户可使用PyTorch Analyse工具在迁移前分析PyTorch训练脚本的算子支持情况、三方库套件中三方库API和动态shape的支持情况。三种模式区别如下:
PyTorch Analyse工具当前支持PyTorch1.8.1和1.11.0版本的训练脚本的分析和迁移。
PyTorch Analyse工具使用步骤如下:
pip3 install pandas #pandas版本号需大于或等于1.2.4 pip3 install libcst #Python语法树解析器,用于解析Python文件 pip3 install prettytable #将数据可视化为图表形式 pip3 install jedi #三方库套件分析时必须安装
cd Ascend-cann-toolkit安装目录/ascend-toolkit/latest/tools/ms_fmk_transplt/
./pytorch_analyse.sh -i 待分析脚本路径 -o 分析结果输出路径 -v 待分析脚本框架版本 [-m 分析模式]
参数 |
参数说明 |
取值示例 |
---|---|---|
-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算子列表 │ ├── unknown_api.csv //支持情况存疑的API列表 │ ├── unsupported_api.csv //不支持的API列表 │ ├── pytorch_analysis.txt // 分析过程日志
├── xxxx_analysis // 分析结果输出目录 │ ├── cuda_op.csv //cuda算子列表 │ ├── framework_unsupported_op.csv //框架不支持的算子列表 │ ├── full_unsupported_results.csv //全量不支持的算子列表 │ ├── migration_needed_op.csv //待迁移的算子列表 │ ├── unknown_op.csv //支持情况存疑的算子列表 │ ├── pytorch_analysis.txt // 分析过程日志
├── xxxx_analysis // 分析结果输出目录 │ ├── affinity_api_call.csv // 可替换为亲和API的原生API调用列表 │ ├── pytorch_analysis.txt // 分析过程日志
├── xxxx_analysis // 分析结果输出目录 │ ├── 生成脚本文件 // 与分析前的脚本文件目录结构一致 │ ├── msft_dynamic_analysis │ ├── hook.py //包含动态shape分析的功能参数 │ ├── __init__.py
for i, (ings, targets, paths, _) in pbar:
for i, (ings, targets, paths, _) in DETECTOR.start(pbar):
修改后在GPU上运行分析后的训练脚本,在分析时指定的输出目录下生成保存动态shape的分析报告msft_dynamic_shape_analysis_report.csv,分析报告包括函数名称、调用栈、输入输出的shape范围等内容。
更多内容可参见《分析迁移工具》中的“msFmkTransplt”章节。