目工作目录介绍
总体目录
添加图片注释,不超过 140 字(可选)
DeepSeek-R1-Distill-Qwen-1.5B:模型文件,包括权重、词表、配置文件等
MindSpeed-LLM:实操目录
mstt:性能调优工具
MindSpeed-LLM目录
添加图片注释,不超过 140 字(可选)
-
手动创建 dataset:微调数据集目录 model_weight:权重转换输出目录 ckpt:微调训练权重保存目录 profile_dir:性能分析数据输出目录 还需要再创建一个logs目录用来保存日志
-
MindSpeed-LLM仓库自带
example:模型任务脚本目录
example目录
添加图片注释,不超过 140 字(可选)
legacy:以功能维护为主,不继续演进
mcore:为当前主要演进分支,推荐使用。Mcore相较于Legacy,采用更加解耦和模块化的设计,提供更灵活的接口和底层功能,特别适合需要自定义训练过程的用户。
mcore目录
该目录为所有已经完成适配的模型任务脚本目录
添加图片注释,不超过 140 字(可选)
目标模型任务脚本目录
添加图片注释,不超过 140 字(可选)
data_convert_distill_qwen_instruction.sh:微调数据集预处理脚本
ckpt_convert_distill_qwen_hf2mcore.sh:huggingface到mcore权重格式转换脚本
ckpt_convert_distill_qwen_mcore2hf.sh: mcore到huggingface权重格式转换脚本
tune_distill_qwen_1point5b_full.sh:微调训练脚本
generate_distill_qwen_1point5b.sh:推理脚本
微调数据集处理
微调数据集准备
添加图片注释,不超过 140 字(可选)
设置微调数据集预处理脚本参数
修改data_convert_distill_qwen_instruction.sh中的参数
添加图片注释,不超过 140 字(可选)
注意:红框中的路径为示例,需要按照本地实际路径修改上面三个参数
--input:2.1节中下载的微调数据集保存路径
--tokenizer-name-or-path:模型词表的保存路径
--output-prefix:数据集处理后的保存路径
在本实验环境中,参数修改后为:
添加图片注释,不超过 140 字(可选)
执行微调数据集预处理脚本
bash ./examples/mcore/deepseek_r1_distill_qwen/data_convert_distill_qwen_instruction.sh
注意:脚本的执行路径应为MindSpeed-LLM目录下,即/home/test/MindSpeed-LLM
数据集处理结果确认
查看./finetune_dataset目录下的输出文件:
添加图片注释,不超过 140 字(可选)
常见问题
环境问题
报错信息:
添加图片注释,不超过 140 字(可选)
解决方法:
export LD_PRELOAD=$LD_PRELOAD:/usr/local/lib/python3.8/dist-packages/sklearn/__check_build/../../scikit_learn.libs/libgomp-d22c30c5.so.1.0.0
路径问题
实际操作过程中多数问题为路径设置有误,请自行排查。
hf2mcore权重转换
权重准备
设置权重转换脚本参数
修改ckpt_convert_distill_qwen_hf2mcore.sh中的参数
添加图片注释,不超过 140 字(可选)
注意:红框中的参数设置为示例,需要按照实际环境修改
--target-tensor-parallel-size:TP并行策略
--target-pipeline-parallel-size:PP并行策略
--load-dir:huggingface权重加载目录
--save-dir:权重转换输出目录
--tokenizer-model:词表保存路径
在本实验环境中,参数修改后为:
添加图片注释,不超过 140 字(可选)
注意:TP*PP的值要与NPU卡的数量一致,本环境中只占用一张卡,故TP/PP都设置为1
执行权重转换脚本
bash ./examples/mcore/deepseek_r1_distill_qwen/ckpt_convert_distill_qwen_hf2mcore.sh
执行成功:
添加图片注释,不超过 140 字(可选)
查看权重转换结果
添加图片注释,不超过 140 字(可选)
添加图片注释,不超过 140 字(可选)
自行尝试
TP、PP分别设置不同的组合查看权重输出结果?以及对后续微调训练的影响?
常见问题
修改TP、PP的值、重新生成权重之前,最好把之前已经生成的权重文件删除掉,避免后续训练时加载错误。
模型微调训练
微调数据集准备
同2.1章节
权重准备
权重即为3.4章节中转换输出结果:
设置微调训练脚本参数
修改tune_distill_qwen_1point5b_full.sh中的参数,修改如下:
添加图片注释,不超过 140 字(可选)
NPUS_PER_NODE:使用服务器中NPU卡的数量,本此只占用一张卡,故设置为1
CKPT_LOAD_DIR:初始权重加载路径,即第三章中权重转换后的输出路径
CKPT_SAVE_DIR:微调训练后权重的保存路径,用于后续推理
DATA_PATH:微调训练所需数据集路径,即第二章中数据集处理后的输出路径(注意:数据集路径一定要带alpaca后缀)
TOKENIZER_PATH:词表路径
TP/PP设置保持与第三章中权重转换一致
添加图片注释,不超过 140 字(可选)
--train-iters:训练步长,本次实验只为了演示效果,故设置较小。
执行微调训练脚本
bash ./examples/mcore/deepseek_r1_distill_qwen/tune_distill_qwen_1point5b_full.sh
查看微调训练结果
查看训练日志,关注loss值的变化:
添加图片注释,不超过 140 字(可选)
查看权重是否成功保存:
添加图片注释,不超过 140 字(可选)
常见问题
NPUS_PER_NODE设置有误
NPUS_PER_NODE设置为8,报错如下:
添加图片注释,不超过 140 字(可选)
DATA_PATH设置有误
DATA_PATH设置为:"./finetune_dataset/",报错如下:
添加图片注释,不超过 140 字(可选)
TP/PP设置有误
TP/PP设置与权重转换时不一致,影响推理效果。
推理
权重准备
权重为4.5节中训练后保存的权重。
设置推理脚本参数
修改generate_distill_qwen_1point5b.sh中的参数,修改如下:
添加图片注释,不超过 140 字(可选)
CHECKPOINT:权重加载路径,即第4.5章节中微调训练后的权重输出路径
其它参数与微调训练一致。
执行推理脚本
bash ./examples/mcore/deepseek_r1_distill_qwen/generate_distill_qwen_1point5b.sh
添加图片注释,不超过 140 字(可选)
推理对话
添加图片注释,不超过 140 字(可选)
常见问题
推理如果出现乱码,大概率是因为权重问题,请排查权重转换时是否将之前生成的权重删除干净。
mcore2hf权重转换
权重准备
权重为4.5节中训练后保存的权重。
设置权重转换脚本参数
修改ckpt_convert_distill_qwen_mcore2hf.sh中的参数,修改如下:
添加图片注释,不超过 140 字(可选)
执行权重转换脚本
bash ./examples/mcore/deepseek_r1_distill_qwen/ckpt_convert_distill_qwen_mcore2hf.sh
添加图片注释,不超过 140 字(可选)
查看权重转换结果
添加图片注释,不超过 140 字(可选)