迁移前分析
模型能否成功迁移至昇腾AI处理器,主要取决于其使用的算子是否被昇腾平台支持。为保证迁移可行性,迁移前可使用如下方法进行分析:
- 若模型原始代码中调用了模型套件或第三方库,需要关注NPU对其的支持情况。
- 确认是否存在以下已知的不支持场景:
表1 不支持场景列表 场景/组件
支持状态
适配说明
替代方案
DP(Data Parallel,数据并行)模型
暂不支持
不兼容torch.nn.parallel.DataParallel接口
需手动修改为torch.nn.parallel.DistributedDataParallel接口,以执行多卡训练
原脚本需要在GPU环境下基于Python3.8及以上跑通
APEX库中的FusedAdam融合优化器
部分支持
不支持自动迁移或PyTorch GPU2Ascend工具迁移
bitsandbytes
部分支持
仅支持NF4量化/反量化迁移,用于LLM QLoRA微调,其余功能暂不支持
xFormers
暂不支持
不原生支持
xFormers
xFormers中的FlashAttentionScore融合算子的迁移可参考FlashAttentionScore章节进行替换
bmtrain框架
暂不支持
大模型迁移场景不支持
暂无替代方案
colossalai库中HybridAdam优化器
暂不支持
大模型迁移场景不支持
暂无替代方案
grouped_gemm三方库
暂不支持
NPU不支持安装
暂无替代方案
composer三方库
暂不支持
NPU支持安装但未适配
暂无替代方案
- 借助PyTorch Analyse工具,分析基于GPU平台的PyTorch训练脚本中三方库套件、API、动态shape以及亲和API分析在昇腾AI处理器上的支持情况,具体可参见表2,工具使用详细指导可参见《CANN 分析迁移工具用户指南》。
表2 分析模式介绍 分析模式
分析脚本
分析结果
调优建议
三方库套件分析模式
需用户提供待分析的三方库套件源码。
可快速获得源码中不支持的三方库API和cuda信息。
说明:三方库API是指在三方库代码中的函数,如果某函数的函数体内使用了不支持的torch算子或者cuda自定义算子,则此函数就是三方库不支持的API。如果第三方库中其他函数调用了这些不支持的API,则这些调用函数也为不支持的API。
-
API支持情况分析模式
需用户提供待分析的PyTorch训练脚本。
可快速获得训练脚本中不支持的torch API和cuda API信息。
输出训练脚本中API精度和性能调优的专家建议。
动态shape分析模式
可快速获得训练脚本中包含的动态shape信息。
-
亲和API分析模式
可快速获得训练脚本中可替换的亲和API信息。
-