赞
踩
原创 吃果冻不吐果冻皮 吃果冻不吐果冻皮 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官方文档: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))上面也支持的更好一些。
参考:https://gitee.com/ascend/ModelLink
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进行过专门的加速,同时,对支持的大模型进行过严格验证。
参考:
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进行专门的加速。就看会不会遇到算子瓶颈了。如果没有算子瓶颈理论上性能应该差不多。目前没有看到官方提供针对大模型进行过严格验证的文档,可能会有坑。
参考:
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 开发套件里的早期解决方案,但作为大模型推理引擎性能过于平庸。
参考:
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软硬件生态越来越好。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。