功能介绍
昇腾NPU是AI算力的后起之秀,但目前训练和在线推理脚本大多是基于GPU的。由于NPU与GPU的架构差异,基于GPU的训练和在线推理脚本不能直接在NPU上使用。
msFmkTransplt工具提供PyTorch Analyse工具,帮助用户分析PyTorch训练脚本的算子、三方库API、亲和API分析以及动态shape的支持情况。同时提供了自动迁移和PyTorch GPU2Ascend工具两种迁移方式,将基于GPU的脚本迁移为基于NPU的脚本的自动化方法,节省了人工手动进行脚本迁移的学习成本与工作量,大幅提升了迁移效率。
两种迁移方式的区别如下:
- (推荐)自动迁移:修改内容少,只需在训练脚本中导入库代码,迁移后直接在昇腾NPU平台上运行。
- PyTorch GPU2Ascend工具迁移:迁移过程会生成分析文件,支持用户查看算子支持度分析报告和迁移过程中对原训练脚本的修改内容,并支持单卡脚本迁移为多卡脚本以及迁移至ModelArts平台。
约束说明
- 分析和迁移工具当前支持PyTorch1.8.1和1.11.0版本的训练脚本的分析和迁移。
- 原脚本需要在GPU环境下且基于Python3.7及以上能够跑通。
- 分析迁移后的执行逻辑与迁移前保持一致。
- 若原始代码中调用了三方库,迁移过程可能会存在适配问题。在迁移原始代码前,用户需要根据已调用的三方库,自行安装昇腾已适配的三方库版本,已适配的三方库信息和使用指南请参考《PyTorch模型迁移和训练指南》中“参考信息>模型套件和第三方库”章节。
- APEX中使用的FusedAdam优化器不支持使用自动迁移和PyTorch GPU2Ascend工具进行迁移,若原始代码中包含该优化器,用户需自行修改。
- 当前分析工具不支持对原生函数self.dropout()/nn.functional.softmax()/torch.add、def bboexs_diou()、def bboexs_giou()、class LabelSmoothingCrossEntropy()或ColorJitter进行亲和API分析,若原训练脚本涉及以上原生函数,请参考《支持Caffe&TensorFlow&ONNX&PyTorch算子清单》中“支持PyTorch API清单>亲和库”进行分析和替换。
配置环境变量
- 以运行用户登录,在任意目录下执行vi ~/.bashrc命令,打开.bashrc文件,在文件最后一行后面添加以下内容(以非root用户的默认安装路径为例)。
# Ascend-cann-toolkit环境变量(请根据实际路径修改) source ~/Ascend/ascend-toolkit/set_env.sh
- 执行:wq!命令保存文件并退出。
- 执行source ~/.bashrc命令使其立即生效。
父主题: msFmkTransplt