迁移前准备

模型选取

建议用户在选取迁移模型时,尽可能选取权威PyTorch模型实现仓库,包括但不限于PyTorch(imagenet/vision等)、Meta Research(Detectron/detectron2等)、open-mmlab(MMDetection/mmpose等)。

评估选取模型迁移的可行性:

  • 保证选取的模型能在三方平台(如GPU)可成功运行。
  • 从权威网站或数据平台获取选定模型的精度和性能基线,或在三方平台实测精度和性能基线。

迁移前分析

模型能否成功迁移至昇腾AI处理器,主要取决于其使用的算子是否被昇腾平台支持。为保证迁移可行性,迁移前可使用如下方法进行分析:

  1. 若模型原始代码中调用了模型套件或第三方库,需要关注NPU对其的支持情况。

    • 如果该三方库原生支持NPU,用户需要关注NPU目前对库中特性的支持情况;
    • 如果是昇腾适配的第三方库,用户需要额外安装该库的昇腾适配版本,并关注其适配情况。详细昇腾第三方库支持情况请参考《套件与三方库支持清单》。如果用户希望以上第三方库和模型套件在适配昇腾设备后能达到更高的性能,可以自行调优。
  2. 确认是否存在以下已知的不支持场景:

    表 1 不支持场景列表

    场景/组件 支持状态 适配说明 替代方案
    DP(Data Parallel,数据并行)模型 暂不支持 不兼容torch.nn.parallel.DataParallel接口 需手动修改为torch.nn.parallel.DistributedDataParallel接口,以执行多卡训练
    原脚本需要在GPU环境下基于Python3.8及以上跑通
    APEX库中的FusedAdam融合优化器 部分支持 不支持自动迁移或PyTorch GPU2Ascend工具迁移 需手工进行迁移,具体修改方法可单击LINK
    bitsandbytes 部分支持 已支持在昇腾上进行安装,具体可单击Supported Backends进行参考 仅支持NF4量化/反量化迁移,用于QLoRA微调,其余功能暂不支持
    xFormers 暂不支持 不原生支持xFormers xFormers中的FlashAttentionScore融合算子的迁移可参考FlashAttentionScore章节进行替换
    bmtrain框架 暂不支持 模型迁移场景不支持 暂无替代方案
    colossalai库中HybridAdam优化器 暂不支持 模型迁移场景不支持 暂无替代方案
    grouped_gemm第三方库 暂不支持 NPU不支持安装 暂无替代方案
    composer第三方库 暂不支持 NPU支持安装但未适配 暂无替代方案
  3. 借助PyTorch Analyse工具,分析基于GPU平台的PyTorch训练脚本中三方库套件、API、动态shape以及亲和API分析在昇腾AI处理器上的支持情况,具体可参见表2,工具使用详细指导可参见《CANN 分析迁移工具用户指南》。

    在迁移可行性分析中如果存在平台未支持的算子,可参考如下方法进行算子适配: