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

随着 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 进行大模型推理。
  • ...

模型训练

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

方案一:MindFormers(MindSpore)

参考:

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

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

  • 一行代码实现从单卡到大规模集群训练的无缝切换;
  • 提供灵活易用的个性化并行配置;
  • 能够自动进行拓扑感知,高效地融合数据并行和模型并行策略;
  • 一键启动任意任务的单卡/多卡训练、微调、评估、推理流程;
  • 支持用户进行组件化配置任意模块,如优化器、学习策略、网络组装等;
  • 提供Trainer、pipeline、AutoClass等高阶易用性接口;
  • 提供预置SOTA权重自动下载及加载功能;
  • 支持人工智能计算中心无缝迁移部署;

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

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

方案二:ModelLink(Pytorch+Megatron)

参考:gitee.com/ascend/Mode...

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

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

  • 制作预训练数据集/制作指令微调数据集
  • 预训练/全参微调/低参微调
  • 推理(人机对话)
  • 评估基线数据集(Benchmark)
  • 使用加速特性(加速算法+融合算子)
  • 基于昇腾芯片采集Profiling数据

目前支持的模型如下:

| 模型 | 参数 | 微调 |
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---|
| Aquila | 7B | -- |
| Baichuan | 7B | -- |
| | 13B | -- | |
| Baichuan2 | 7B | -- |
| | 13B | -- | |
| Bloom | 7B1 | -- |
| | 176B | -- |
| InternLM | 7B | -- |
| | 65B | -- |
| LLaMA | 7B | lora |
| | 13B | lora |
| | 33B | lora |
| | 65B | lora |
| LLaMA2 | 7B | lora |
| | 13B | lora |
| | 34B | lora |
| | 70B | lora | |
| Qwen | 7B | -- |
| | 14B | -- |
| | 72B | -- |
| Mixtral | 8x7B | -- |
| ChatGLM3 | 6B | -- |

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

方案三:HuggingFace Transformers(Pytorch)

参考:

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

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

模型推理引擎及服务化

方案一:MindSpore Lite + MindSpore Serving

参考:

模型推理引擎:MindSpore Lite

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

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

模型服务化:MindSpore Serving

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

MindSpore Serving架构如下所示:

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

目前支持模型包括:

  • LLaMA-2
  • InternLM
  • baichuan2
  • wizardcoder
  • ...

目前支持的特性:

  • 模型并行部署
  • 通过服务端发送事件的Token流
  • 自定义模型输入
  • 静态/连续(continuous)批处理
  • 通过npu进行后采样
  • PagedAttention

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

方案二:MindIE

参考:

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

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

模型推理引擎:MindIE

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

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

模型服务化:MindIE-Service

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

  • MindIE-MS:服务策略管理,提供运维监控能力
  • MindIE-Server:推理服务端,提供模型服务化能力
  • MindIE-Client:提供推理客户端标准API,简化用户服务调用

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

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

结语

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

相关推荐
Just Jump2 小时前
大语言模型LLM综述
llm·大语言模型
数据智能老司机6 小时前
LLM工程师手册——RAG 推理管道
人工智能·llm·aiops
ApiHug9 小时前
ApiSmart-QWen2.5 coder vs GPT-4o 那个更强? ApiSmart 测评
java·人工智能·ai·llm·通义千问·apihug·apismart
Hamm11 小时前
先别急着喷,没好用的iOS-Ollama客户端那就自己写个然后开源吧
人工智能·llm·swift
数据智能老司机1 天前
机器学习生产系统——可解释性
人工智能·机器学习·llm
SpikeKing2 天前
LLM - 使用 LLaMA-Factory 微调大模型 Qwen2-VL SFT(LoRA) 图像数据集 教程 (2)
人工智能·lora·llm·sft·多模态大模型·llama-factory·qwen2-vl
字节跳动开源3 天前
最高提升20倍吞吐量!豆包大模型团队发布全新 RLHF 框架,现已开源!
开源·llm·强化学习
kida_yuan4 天前
【从零开始】6. RAG 应用性能压测工具(番外篇)
后端·llm·测试
真忒修斯之船4 天前
大模型分布式训练并行技术(四)张量并行
面试·llm·aigc
Code_Artist4 天前
Spring AI: Make Spring Great Again!设计并实现一款智能Chat Bot!
后端·llm·openai