大模型国产化适配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软硬件生态越来越好。

相关推荐
TechEdu20260610 小时前
[人工智能]Claude、GPT、Gemini、Copilot与Llama:概念、架构、应用与评估
人工智能·ai·llm
长谷深风11110 小时前
为什么你的 Tool 总被模型选错?
java·大数据·ai·llm·ai agent·工具设计·agent设计
boooooooom11 小时前
尝尝咸淡:从朴素 RAG 到 Graph RAG——一个烹饪问答系统的三层检索升级之路
前端·后端·llm
武子康14 小时前
33B 音画模型塞进 Apple Silicon,h3.c 重写了哪些 Runtime 职责
人工智能·llm·agent
知几蜗牛14 小时前
一张图看懂AI、机器学习、深度学习和生成式AI之间的关系
llm
XLYcmy14 小时前
小红书 算法一面 十一
google·meta·llm·负载均衡·token·moe·glam
谢白羽15 小时前
Mooncake在LLM的kv cache offload
人工智能·llm·论文·agent·mooncake
牧艺1 天前
DeepSeek Harness 上手:一切皆插件的 Agent 运行时,核心流程怎么走
llm·agent·deepseek
魔术师Grace1 天前
模型“开源”了,就能直接拿来做 Agent 吗?
llm·aigc·agent
夫子3962 天前
【第三部分:第一个 Agent 应用】10. 不使用框架,手写一个最小 Agent
llm·agent·ai编程