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