文档
注册

总体思路

基于NPU的大模型迁移分为原仓迁移与AscendSpeed迁移,一般社区有开源训练脚本的模型可以考虑直接在原仓迁移,如果社区只有模型结构而没有开源训练脚本就需要进行AscendSpeed模型迁移,当模型需要在NPU上进行深入开发优化时也推荐基于AscendSpeed进行迁移开发。

图1 原始仓迁移
图2 AscendSpeed迁移
  1. 需要明确迁移仓库,主要包含模型权重,模型结构,训练脚本,数据集,词表文件,使用较为广泛的资源仓库是huggingface社区,基于原始模型仓库进行训练保证原始训练流程畅通。
  2. 参见环境准备完成NPU迁移与训练的环境准备,包括NPU驱动固件,CANN软件包,算子二进制包以及PyTorch框架。
  3. 在执行迁移操作前,需分析基于GPU平台的PyTorch训练脚本中算子、三方库套件、亲和API分析以及动态shape的支持情况,具体可参见分析迁移工具中的msFmkTransplt > 分析操作章节。
    四种分析模式的区别如下:
    • 算子支持情况分析模式:用户提供待分析的PyTorch训练脚本,可快速获得该训练脚本中不支持的torch API和cuda API信息,并输出训练脚本中API精度和性能调优的专家建议。
    • 三方库套件分析模式:用户提供待分析的三方库套件源码,可快速获得源码中不支持的三方库API和cuda信息。

      三方库API是指在三方库代码中的函数,如果某函数的函数体内使用了不支持的torch算子或者cuda自定义算子,则此函数就是三方库不支持的API。如果第三方库中其他函数调用了这些不支持的API,则这些调用函数也为不支持的API。

    • 动态shape分析模式:用户提供待分析的PyTorch训练脚本,可快速获得该训练脚本中包含的动态shape信息。
    • 亲和API分析模式:用户提供待分析的PyTorch训练脚本,可快速获得该训练脚本中可替换的亲和API信息。
  4. 根据模型类型进行迁移。
    • 原始仓迁移:开源GPU训练脚本的模型,可通过自动迁移、工具迁移或手工迁移进行NPU迁移,具体可参考PyTorch模型迁移和训练指南中的“模型迁移与训练”章节。
    • AscendSpeed迁移:只有模型结构而没有开源训练脚本的模型,在huggingface上找到对应的模型脚本(大模型的权重和推理脚本会开源保存在huggingface社区中)并跑通前向推理,然后在AscendSpeed上完成该模型的模型文件编写,并加载权重后与huggingface的前向推理结果对齐。
  5. 迁移完成后进行NPU训练,保证训练流程以及功能正常。
  6. 基于原始模型的精度数据进行对齐。

    大模型迁移暂不支持模型中存在xformers依赖的Flash Attention融合算子的迁移。

    大模型迁移暂不支持使用了对模型进行量化的bitsandbytes依赖的迁移。

    大模型迁移暂不支持bmtrain框架的迁移。

搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词