本文转载自昇腾AI开发者。
“尺度定律”(Scaling laws)之下,大模型除了要突破算力瓶颈,亦面临高质量数据即将“见底”难题。如何通过“通专融合”技术路径实现通用人工智能,正日益成为业内共识。
1月15日,上海人工智能实验室对书生大模型进行重要版本升级,书生·浦语3.0(InternLM3)通过精炼数据框架,大幅提升了数据效率,并实现思维密度的跃升。仅使用4T训练数据的InternLM3-8B-Instruct,其综合性能超过了同量级开源模型,节约训练成本75%以上;同时,书生·浦语3.0首次在通用模型中实现了常规对话与深度思考能力融合,可应对更多真实使用场景。
华为与上海人工智能实验室保持技术生态上紧密联合,实现InternLM3发布即支持昇腾算力,兼容适配MindSpeed、MindIE等昇腾软件栈,完成在多个昇腾生态社区同步上线。
体验页面:
https://internlm-chat.intern-ai.org.cn
魔乐社区:
https://modelers.cn/models/Intern/internlm3-8b-instruct
MindSpeed:
https://gitee.com/ascend/MindSpeed-LLM
MindIE:
1. InternLM3的昇腾训练实践
1.1 MindSpeed LLM
MindSpeed LLM是基于昇腾生态的大语言模型套件,旨在为昇腾生态合作伙伴提供端到端的大语言模型训练方案,包含分布式预训练、分布式指令微调、分布式偏好对齐以及对应的开发工具链,如:数据预处理、权重转换、在线推理、基线评估。
1.2 使用MindSpeed LLM运行预训练服务
MindSpeed LLM的上手非常简单。支持用户仅运行少量步骤,便可实现InternLM3-8B-Instruct模型的预训练。
-
根据配置环境配置环境依赖,使用docker和conda均可以。
-
获取开源权重和词表链接
-
获取训练数据(这里以enwiki数据为例),用数据脚本处理数据
-
使用权重转换脚本对hf权重转成Megatron格式的权重(注意转换的并行配置需要满足能跑下模型),权重转换完进行和hf推理前向对齐,最终精度余弦相似度99.99%,平均误差千分之一,前向对齐;全参精度对齐达万分之三。
-
数据和权重处理完之后,可以将相应路径填入预训练启动脚本,在MindSpeed LLM目录下启动bash pretrain_internlm25_20b_32K_16p_ptd.sh,目前MFU高达46.4。评估采用dp方式进行,用权重转换脚本实现tp1pp1转换,将相应权重路径填入评估启动脚本,在MindSpeed LLM目录下启动bash evaluate_internlm3_8b_ptd.sh,评估分数在MMLU数据集上达到开源水平76.6。
上述标注下横线的跳转链接:
配置环境:
docs/features/install_guide.md · Ascend/MindSpeed-LLM - Gitee.com
开源权重和词表链接:
https://huggingface.co/internlm/internlm3-8b-instruct/tree/main
enwiki:
数据脚本:
examples/mcore/internlm3/data_convert_internlm3_pretrain.sh · Ascend/MindSpeed-LLM - Gitee.com
权重转换脚本:
examples/mcore/internlm3/ckpt_convert_internlm3_hf2mcore.sh · Ascend/MindSpeed-LLM - Gitee.com
预训练启动脚本:
examples/mcore/internlm3/pretrain_internlm3_8b_8k_ptd.sh · Ascend/MindSpeed-LLM - Gitee.com
权重转换脚本:
examples/mcore/internlm3/ckpt_convert_internlm3_hf2mcore.sh · Ascend/MindSpeed-LLM - Gitee.com
评估启动脚本:
examples/mcore/internlm3/evaluate_internlm3_8b_ptd.sh · Ascend/MindSpeed-LLM - Gitee.com
1.3 使用openMind进行微调
openMind Library是一个开源的大模型套件,原生支持在昇腾NPU上进行微调、推理、评估和部署。openMind Library提供高易用性的接口和使用方式,充分发挥昇腾NPU的性能,快速支持、增强业界前沿模型。
openMind Library提供了昇腾NPU上的一键式模型微调方案,涵盖了数据处理、多站点权重加载,低参微调(LoRA)、量化适配(QLoRA)等能力。同时,openMind Library支持昇腾NPU融合算子优化,提升模型训练性能。
安装openMind Library
git clone https://gitee.com/ascend/openmind.git
cd openmind
pip install -e .[pt]
启动微调
在openmind文件夹下,通过以下命令行即可启动微调:
openmind-cli train examples/internlm3/train_sft_full_internlm3.yaml
训练结果与优势
如下图所示,openMind Library的训练loss正常收敛,精度与竞品对齐。
openMind Library支持在昇腾NPU上使能LoRA、QLoRA等微调方法,显著减少device内存使用。如下图所示,通过使能QLoRA微调方式可减少device内存约40%。
openMind Library支持训练时自动加载昇腾NPU融合算子,无需开发者手动修改代码或配置,提升模型训练性能的同时兼顾易用性。下图展示了openMind默认使能昇腾NPU融合算子后的性能收益。
更多特性请参考openMind 微调文档:
2. InternLM3的昇腾推理实践
2.1 MindIE
昇腾推理引擎MindIE是基于昇腾架构针对AI推理业务的加速引擎,通过分层开放,支撑用户多样化的AI业务需求,使能百模千态推理部署。MindIE释放硬件设备算力,基于昇腾实现运行加速,构筑极致性能,并提供统一接口支持调试调优、快速迁移部署,使能极简开发。
在与InterLM3的适配过程中, MindIE基于框架引擎能力,提供深度定制优化模块,并内置模型,使能模型迁移适配过程快速复用亲和昇腾的推理加速能力,实现InternLM3-8B-Instruct 模型在昇腾生态社区同步发布。
2.2 使用MindIE运行推理服务
MindIE的上手非常简单。在魔乐社区,InternLM3-8B-Instruct的使用指南已依照 Apache-2.0 协议开源。关于所依赖的MindIE配套版本和软件环境,MindIE官方也提供了开源镜像包,支持用户仅运行少量步骤,便可构建和部署InternLM3-8B-Instruct模型的AI应用。
详细的MindIE README.md已在魔乐社区开源:
下面简要介绍主要的运行步骤:
加载镜像
docker pull registry.modelers.cn/base_image/mindie:1.0.RC3-800I-A2-arm64-OpenMind
准备模型适配代码和权重
# 下载模型适配代码,存放路径为/path-to-weights/
git clone https://modelers.cn/MindIE/internlm3-8b-instruct.git
# 获取模型权重,存放路径为/path-to-weights/internlm3-8b-instruct
模型适配代码和权重的目录结构应为如下:
├── internlm3-8b-instruct
│ ├── README.md
│ └── atb_models
│ └── 权重文件1
│ ...
│ ...
│ └── 权重文件n
启动容器及推理服务化
MindIE Service是面向通用模型场景的推理服务化框架,通过开放、可扩展的推理服务化平台架构提供推理服务化能力,支持对接业界主流推理框架接口,满足大语言模型的高性能推理需求。
启动推理服务化的命令请参见MindIE README.md 启动容器 章节。
执行命令后,会在窗口输出启动的过程性日志,然后直到出现以下输出Daemon start success!,InternLM3-8B-Instruct的MindIE Service推理服务即启动成功。
客户端发送请求
用户可使用HTTPS客户端(Linux curl命令,Postman工具等)发送HTTPS请求,此处以Linux curl命令为例进行说明。重开一个窗口,使用以下命令发送请求。其中,“generated_text”中的内容就是模型的输出文本。
其他接口请参见MindIE Service接口调用章节:
使用兼容TGI 0.9.4版本的接口-接口调用-快速开始-MindIE Service开发指南-服务化集成部署-MindIE1.0.RC3开发文档-昇腾社区
2.3 使用openMind进行推理
使用openMind Library也可以进行模型推理,安装openMind Library后,使用下述命令行即可进行单轮推理:
openmind-cli run Intern/internlm3-8b-instruct --task text-generation --input '{"text_inputs":"What is AI?","max_length":512}' --trust_remote_code 1
更多特性请参考openMind 推理文档:
最新发布的InternLM3模型在昇腾训练和推理服务器产品上已完成了训推实践验证。昇腾AI基础软硬件平台包含Atlas系列硬件及伙伴硬件、异构计算架构CANN、全场景AI框架昇思MindSpore、应用使能系列软件、全流程开发工具链MindStudio 和一站式AI开发平台ModelArts等。通过模组、板卡、小站、服务器、集群等丰富的产品形态,昇腾AI打造面向“云、边、端”的全场景昇腾AI基础设施解决方案。