在前面的两篇中,介绍了如何使用 MindSpeed-LLM 框架,使用 Lora 训练/全参数训练 DeepSeek-R1-QWen2.5-32B 模型。
Ascend 官方提供的示例脚本只有全参,对于 Lora 训练并没有提供,我们可以自己参考编写。MindSpeed-LLM 的训推最麻烦的一点就是要转换模型格式,将默认的 HF 格式转换为 mcore/legacy 格式后,在做训推;同时没有引入太多的中间件,比如 deepspeed、vllm 等,完全是框架自身支持的训推。
为什么会有 MindSpeed-LLM
从之前的文章,可以知道,MindSpeed-LLM 库是基于 Megatron-Core 库在 Ascend NPU 平台上的移植适配;其所实现的能力主要是 Megatron-LM 所提供的 TP、PP、CP、SP;这是一个很有意义的库,由于 Megatron-LM 是 Nvidia 开发并开源的,其底层更兼容适合于 Nvidia 架构生态;目前开源的大模型训推中间件中,支持 Ascend 体系的原理主要是基于两个库——dlinfer、DeepSpeed——前者提供了一套将国产硬件接入大模型推理框架的解决方案,后者是则是适配 Ascend NPU。
以常用的训推中间件 LLaMA-Factory、ms-swift、lmdepoy、vLLM(0.7.3 版本)等均是通过如上两个库实现的。但目前的中间件有一个最大的不足,那就是不支持类似 Megatron-LM 高效模型并行——张量并行、流水线并行;DeepSpeed 提供的是高效的数据并行——zero 加速并行;也就是说,目前的中间件是通过集成 DeepSpeed 来提供高效的数据并行策略,而没有高效的张量并行;以上都是在 Ascend NPU 架构体系。
而 MindSpeed-LLM 则是弥补了这一空白,Ascend 官方移植适配了 Megatron-Core 开源库,使其可以在 Ascend NPU 体系平台下使用高效的模型并行——张量并行、流水线并行。
不足
目前来看,MindSpeed-LLM 还有一个最大的不足,那就是不能实现高效的数据并行——类似 zero 加速并行的模型参数等分片训练。目前 MindSpeed-LLM 提供的数据并行 DP,是基于 Megatron-Core 提供的 dp——即类似 Pytorch DP,每个 GPU 冗余存储一个完整的模型参数,拆分数据到不同的 GPU。
当然高效的数据并行还有另一个方案——Pytorch FSDP,但不管是 Megatron-Core、MindSpeed-LLM 均是没有支持 FSDP。
因此,目前没有一个框架库是支持 Ascend NPU 体系下,同时使用高效的 zero 数据并行、张量并行、流水线并行等训练策略。小结如下:
MindSpeed-LLM:支持高效的类 Megatron-LM 模型并行(张量并行、流水线并行等)。
DeepSpeed:集成后,支持高效的 zero 数据并行;同 Pytorch FSDP。
开发设计
在前面的两篇,已经基于 Lora 训练了 DeepSeek-R1-distilled-qwen2.5-32B 模型,现在基于 Lora 训练做推理及合并。
推理
脚本如下:
#!/bin/bash
source /usr/local/Ascend/ascend-toolkit/set_env.sh
export CUDA_DEVICE_MAX_CONNECTIONS=1
# Change for multinode config
MASTER_ADDR=localhost
MASTER_PORT=6009
NNODES=1
NODE_RANK=0
NPUS_PER_NODE=4
WORLD_SIZE=$(($NPUS_PER_NODE*$NNODES))
# vocab
TOKENIZER_PATH="/home/hwtest/DeepSeek-R1-Distill-Qwen-32B"
# 原HF模型转换mcore格式后的模型
CHECKPOINT="/home/hwtest/hzy/MindSpeed-LLM/model_weights/ds_qwen2.5_32"
# Lora训练后生成的模型
CHECKPOINT_LORA="/home/hwtest/hzy/MindSpeed-LLM/output/ds_qwen2.5_32b"
TP=4
PP=1
SEQ_LENGTH=8192
DISTRIBUTED_ARGS="
--nproc_per_node $NPUS_PER_NODE \
--nnodes $NNODES \
--node_rank $NODE_RANK \
--master_addr $MASTER_ADDR \
--master_port $MASTER_PORT
"
LORA_ARGS="
--lora-load ${CHECKPOINT_LORA} \
--lora-r 8 \
--lora-alpha 16 \
--lora-fusion \
--lora-target-modules linear_qkv linear_proj linear_fc1 linear_fc2
"
torchrun $DISTRIBUTED_ARGS inference.py \
--use-mcore-models \
--tensor-model-parallel-size ${TP} \
--pipeline-model-parallel-size ${PP} \
--load ${CHECKPOINT} \
--num-layers 64 \
--hidden-size 5120 \
--num-attention-heads 40 \
--group-query-attention \
--num-query-groups 8 \
--ffn-hidden-size 27648 \
--max-position-embeddings ${SEQ_LENGTH} \
--seq-length ${SEQ_LENGTH} \
--make-vocab-size-divisible-by 1 \
--padded-vocab-size 152064 \
--rotary-base 1000000 \
--untie-embeddings-and-output-weights \
--micro-batch-size 1 \
--swiglu \
--disable-bias-linear \
--tokenizer-type PretrainedFromHF \
--tokenizer-name-or-path ${TOKENIZER_PATH} \
--normalization RMSNorm \
--norm-epsilon 1e-5 \
--position-embedding-type rope \
--hidden-dropout 0 \
--attention-dropout 0 \
--prompt-type deepseek3 \
--tokenizer-not-use-fast \
--add-qkv-bias \
--max-new-tokens 256 \
--no-gradient-accumulation-fusion \
--exit-on-missing-checkpoint \
--attention-softmax-in-fp32 \
--seed 42 \
${LORA_ARGS} \
| tee logs/generate_mcore_distill_qwen_32b.log
相比较官方默认提供的全参推理脚本,只是增加了 Lora 训练部分的参数;其次就是最关键的模型路径,即
CHECKPOINT
、CHECKPOINT_LORA
两个参数,需要指定对应的模型路径,这里是最容易出错的,需要格外的注意。
效果如下:
可以看到,在 4 卡 64GB 下,其显存占用达到了 36GB+,并没有使用 vllm、mindie 等中间件;显然这是需要优化的。
合并
MindSpeed-LLM 官方提供了 Lora 训练详细的文档,但 DeepSeek-R1-Distilled-qwen2.5-32B 的训推,官方并没有提供 Lora 训练的脚本。当我们有 Lora 参数合并需求的时候,需要自己编写,如下所示:
# 修改 ascend-toolkit 路径
source /usr/local/Ascend/ascend-toolkit/set_env.sh
# 设置并行策略
python convert_ckpt.py \
--use-mcore-models \
--model-type GPT \
--model-type-hf llama2 \
--load-model-type mg \
--save-model-type hf \
--target-tensor-parallel-size 1 \
--target-pipeline-parallel-size 1 \
--add-qkv-bias \
--lora-r 8 \
--lora-alpha 16 \
--lora-target-modules linear_qkv linear_proj linear_fc1 linear_fc2 \
--load-dir /home/hwtest/hzy/MindSpeed-LLM/model_weights/ds_qwen2.5_32 \
--lora-load /home/hwtest/hzy/MindSpeed-LLM/output/ds_qwen2.5_32b \
--save-dir /home/hwtest/DeepSeek-R1-Distill-Qwen-32B # 需要填入原始HF模型路径,新权重会存于./model_from_hf/qwen25_7b_hf/mg2hg/
在这里最关键的两个参数就是load-dir
、save-dir
,前者是原始 HF 模型参数转换 mcore 格式后的模型参数,而后者则是原始 hf 模型路径;MindSpeed-LLM 会将合并后的模型,存入该路径下的新文件夹下——mg2hg。
❝target-tensor-parallel-size 参数只能设置为 1,如果设置为其它,将会报错。
RuntimeError: The size of tensor a (152064) must match the size of tensor b (19008) at non-singleton dimension 0
一、大模型风口已至:月薪30K+的AI岗正在批量诞生
2025年大模型应用呈现爆发式增长,根据工信部最新数据:
国内大模型相关岗位缺口达47万
初级工程师平均薪资28K
70%企业存在"能用模型不会调优"的痛点
真实案例:某二本机械专业学员,通过4个月系统学习,成功拿到某AI医疗公司大模型优化岗offer,薪资直接翻3倍!
二、如何学习大模型 AI ?
🔥AI取代的不是人类,而是不会用AI的人!麦肯锡最新报告显示:掌握AI工具的从业者生产效率提升47%,薪资溢价达34%!🚀
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
1️⃣ 提示词工程:把ChatGPT从玩具变成生产工具
2️⃣ RAG系统:让大模型精准输出行业知识
3️⃣ 智能体开发:用AutoGPT打造24小时数字员工
📦熬了三个大夜整理的《AI进化工具包》送你:
✔️ 大厂内部LLM落地手册(含58个真实案例)
✔️ 提示词设计模板库(覆盖12大应用场景)
✔️ 私藏学习路径图(0基础到项目实战仅需90天)
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
* 大模型 AI 能干什么?
* 大模型是怎样获得「智能」的?
* 用好 AI 的核心心法
* 大模型应用业务架构
* 大模型应用技术架构
* 代码示例:向 GPT-3.5 灌入新知识
* 提示工程的意义和核心思想
* Prompt 典型构成
* 指令调优方法论
* 思维链和思维树
* Prompt 攻击和防范
* …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
* 为什么要做 RAG
* 搭建一个简单的 ChatPDF
* 检索的基础概念
* 什么是向量表示(Embeddings)
* 向量数据库与向量检索
* 基于向量检索的 RAG
* 搭建 RAG 系统的扩展知识
* 混合检索与 RAG-Fusion 简介
* 向量模型本地部署
* …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
* 为什么要做 RAG
* 什么是模型
* 什么是模型训练
* 求解器 & 损失函数简介
* 小实验2:手写一个简单的神经网络并训练它
* 什么是训练/预训练/微调/轻量化微调
* Transformer结构简介
* 轻量化微调
* 实验数据集的构建
* …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
* 硬件选型
* 带你了解全球大模型
* 使用国产大模型服务
* 搭建 OpenAI 代理
* 热身:基于阿里云 PAI 部署 Stable Diffusion
* 在本地计算机运行大模型
* 大模型的私有化部署
* 基于 vLLM 部署大模型
* 案例:如何优雅地在阿里云私有部署开源大模型
* 部署一套开源 LLM 项目
* 内容安全
* 互联网信息服务算法备案
* …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】