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

相关推荐
爱喝白开水a5 小时前
关于大模型在企业生产环境中的独立部署问题
人工智能·深度学习·llm·大语言模型·ai大模型·计算机技术·本地部署大模型
Langchain6 小时前
不可错过!CMU最新《生成式人工智能大模型》课程:从文本、图像到多模态大模型
人工智能·自然语言处理·langchain·大模型·llm·大语言模型·多模态大模型
幽影相随7 小时前
构建llama.cpp并在linux上使用gpu
llm·llama.cpp
AAI机器之心8 小时前
LLM大模型:开源RAG框架汇总
人工智能·chatgpt·开源·大模型·llm·大语言模型·rag
网安-搬运工14 小时前
RAG再总结之如何使大模型更好使用外部数据:四个不同层级及查询-文档对齐策略
人工智能·自然语言处理·大模型·llm·大语言模型·ai大模型·rag
大模型八哥14 小时前
大模型扫盲系列——大模型实用技术介绍(上)
人工智能·程序人生·ai·大模型·llm·llama·ai大模型
我爱学Python!1 天前
基于 LangChain 的自动化测试用例的生成与执行
人工智能·自然语言处理·langchain·自动化·llm·测试用例·大语言模型
牛右刀薛面2 天前
launcher.py: error: the following arguments are required: --output_dir
llm·sft·llamafactory
JasonLiu19192 天前
论文推荐 |【Agent】自动化Agent设计系统
人工智能·自动化·llm·agent·智能体