当前位置:   article > 正文

大模型国产化适配7-华为昇腾LLM落地可选解决方案(MindFormers、ModelLink、MindIE)_atlas 800t a2

atlas 800t a2

大模型国产化适配7-华为昇腾LLM落地可选解决方案(MindFormers、ModelLink、MindIE)

原创 吃果冻不吐果冻皮 吃果冻不吐果冻皮 2024-04-17 12:00 四川

随着 ChatGPT 的现象级走红,引领了AI大模型时代的变革,从而导致 AI 算力日益紧缺。与此同时,中美贸易战以及美国对华进行AI芯片相关的制裁导致 AI 算力的国产化适配势在必行。之前也分享过一些国产 AI 芯片 和 AI 框架。

另外,我撰写的大模型相关的博客及配套代码均整理放置在Github:llm-action,有需要的朋友自取。

硬件

目前昇腾的高端芯片主要有:

  • Atlas 800T (910A):适合使用 MindFormers 进行大模型训练。

  • Atlas 800T A2 (910B):适合使用 MindFormers、ModelLink 进行大模型训练。

  • Atlas 800I A2 (910B):适合使用 MindIE 进行大模型推理。

  • ...

image.png

模型训练

目前,华为针对昇腾910进行大模型训练提供了两大类解决方法:一类是基于MindSpore框架(MindFormers)。一类基于PyTorch框架(AscendSpeed、ModelLink、ModelZoo-PyTorch、HuggingFace Transformers等)。

方案一:MindFormers(MindSpore)

参考:

  • MindFormers官方文档:https://gitee.com/mindspore/mindformers

  • MindFormers模型支持列表:https://mindformers.readthedocs.io/zh-cn/latest/docs/model_support_list.html

MindFormers(MindSpore Transformers)套件华为自家提供的一个构建大模型训练、微调、评估、推理、部署的全流程开发套件,提供业内主流的Transformer类预训练模型和SOTA下游任务应用,涵盖丰富的并行特性。期望帮助用户轻松的实现大模型训练和创新研发。

MindSpore Transformers套件基于MindSpore内置的并行技术和组件化设计,具备如下特点:

  • 一行代码实现从单卡到大规模集群训练的无缝切换;

  • 提供灵活易用的个性化并行配置;

  • 能够自动进行拓扑感知,高效地融合数据并行和模型并行策略;

  • 一键启动任意任务的单卡/多卡训练、微调、评估、推理流程;

  • 支持用户进行组件化配置任意模块,如优化器、学习策略、网络组装等;

  • 提供Trainer、pipeline、AutoClass等高阶易用性接口;

  • 提供预置SOTA权重自动下载及加载功能;

  • 支持人工智能计算中心无缝迁移部署;

目前针对大模型的支持如下:

该方案是华为针对自家 MindSpore 框架开发的大模型开发套件,目前相对于PyTorch方案来说,支持的模型会更全面一些。同时,在昇腾前两年的NPU(如:Atlas 800T (910A))上面也支持的更好一些。

方案二:ModelLink(Pytorch+Megatron)

参考:https://gitee.com/ascend/ModelLink

ModelLink旨在为华为昇腾芯片上的大语言模型提供端到端的解决方案, 包含模型,算法,以及下游任务。

当前 ModelLink 支撑大模型使用的功能如下:

  • 制作预训练数据集/制作指令微调数据集

  • 预训练/全参微调/低参微调

  • 推理(人机对话)

  • 评估基线数据集(Benchmark)

  • 使用加速特性(加速算法+融合算子)

  • 基于昇腾芯片采集Profiling数据

目前支持的模型如下:

模型参数微调
Aquila7B--
Baichuan7B--
13B--
Baichuan27B--
13B--
Bloom7B1--
176B--
InternLM7B--
65B--
LLaMA7Blora
13Blora
33Blora
65Blora
LLaMA27Blora
13Blora
34Blora
70Blora
Qwen7B--
14B--
72B--
Mixtral8x7B--
ChatGLM36B--

目前,该方案昇腾NPU针对Pytorch框架进行大模型推荐的方案。该方案依赖Megatron-LM项目进行二次开发。针对昇腾NPU进行过专门的加速,同时,对支持的大模型进行过严格验证。

方案三:HuggingFace Transformers(Pytorch)

参考:

  • https://gitee.com/ascend/transformers

  • https://gitee.com/ascend/DeepSpeed

目前,Hugging Face 核心套件 transformers 、 accelerate 、 peft 、 trl 已原生支持 Ascend NPU。并且,DeepSpeed 也已原生支持 NPU。Atlas 800T A2 及之后版本无需 deepspeed_npu 插件,直接安装,直接使用,因此,建议使用新版 DeepSpeed。使用方式与原生一致。

理论上来说,可以将Huggingface Transformers相关的模型无缝迁移到NPU。该方案提供与英伟达GPU一样的能力,但没有针对昇腾NPU进行专门的加速。就看会不会遇到算子瓶颈了。如果没有算子瓶颈理论上性能应该差不多。目前没有看到官方提供针对大模型进行过严格验证的文档,可能会有坑。

模型推理引擎及服务化

方案一:MindSpore Lite + MindSpore Serving

参考:

  • https://www.mindspore.cn/lite

  • https://gitee.com/mindspore/serving/tree/mf_r1.0

模型推理引擎:MindSpore Lite

为了更好的性能去部署已经微调训练好的大模型,可以利用 MindSpore 打造的推理引擎 MindSpore Lite,其提供了开箱即用的推理部署方案,帮助用户使能大模型业务。

Lite 推理大致分两步:权重转换导出 MindIR -> Lite 推理。

模型服务化:MindSpore Serving

MindSpore Serving是一个易于使用的推理框架,旨在帮助 MindSpore 开发者在生产环境中高效部署在线推理服务。当用户使用MindSpore完成模型训练 后,导出MindSpore模型,即可使用MindSpore Serving创建该模型的推理服务。

MindSpore Serving架构如下所示:

image.png

MindSpore Serving分为客户端、服务器两个部分。在客户端中,用户通过gRPC或RESTful接口向服务器下发推理服务命令。服务器包括主(Main)节点和 一个或多个工作(Worker)节点,主节点管理所有的工作节点及其部署的模型信息,接受客户端的用户请求,并将请求分发给工作节点。每个工作节点部署了 一个可服务对象,即Servable,这里的Servable可以是单个模型,也可以是多个模型的组合,一个Servable可以围绕相同的模型通过多种方法来提供 不同的服务。

目前支持模型包括:

  • LLaMA-2

  • InternLM

  • baichuan2

  • wizardcoder

  • ...

目前支持的特性:

  • 模型并行部署

  • 通过服务端发送事件的Token流

  • 自定义模型输入

  • 静态/连续(continuous)批处理

  • 通过npu进行后采样

  • PagedAttention

使用 MindSpore Lite 作为大模型推理引擎是昇腾针对 MindFormers 开发套件里的早期解决方案,但作为大模型推理引擎性能过于平庸。

方案二:MindIE

参考:

  • https://gitee.com/ascend/ModelLink/tree/bk_origin_23/mindie_ref/mindie_llm/atb_models

MindIE 是昇腾提供的新的大模型推理解决方案,支持使用MindSpore和Pytorch训练的模型进行推理加速及部署。

image.png

从算子、模型、应用三大维度,全面加速推理部署。

image.png

模型推理引擎:MindIE

MindIE 作为一个模型推理引擎,提供了针对大语言模型和SD模型特定的优化。

image.png

目前支持的模型列表如下:

  • BaiChuan

  • BaiChuan3

  • CodeGeeX2

  • ChatGLM2

  • ChatGLM3

  • LLaMa

  • Qwen

  • StarCoder

模型服务化:MindIE-Service

MindIE-Service 作为一个模型服务化框架,主要包含如下几个部分:

  • MindIE-MS:服务策略管理,提供运维监控能力

  • MindIE-Server:推理服务端,提供模型服务化能力

  • MindIE-Client:提供推理客户端标准API,简化用户服务调用

MindIE推理引擎之上,除了可以使用MindIE-Service,还支持第三方服务化框架,如TGI。

image.png

MindIE 是现在昇腾主推的模型推理框架,但目前 MindIE 正式版本还没有对外发布,据说新版本4月底会发布。当前使用昇腾需要定向提供。

结语

本文的所有信息都是截止2024年4月最新的一些信息,如有不准确的地方欢迎讨论。总的来说,昇腾最近一年多经过海量大模型需求的洗礼,正在快速变得成熟和完善。希望国产AI芯片、AI软硬件生态越来越好。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/933802
推荐阅读
相关标签
  

闽ICP备14008679号