工作目录介绍
总体目录

DeepSeek-R1-Distill-Qwen-1.5B:模型文件,包括权重、词表、配置文件等

MindSpeed-LLM:实操目录

mstt:性能调优工具

MindSpeed-LLM目录


 

手动创建 dataset:微调数据集目录 model_weight:权重转换输出目录 ckpt:微调训练权重保存目录 profile_dir:性能分析数据输出目录 还需要再创建一个logs目录用来保存日志

MindSpeed-LLM仓库自带

example:模型任务脚本目录

example目录


 

legacy:以功能维护为主,不继续演进

mcore:为当前主要演进分支,推荐使用。Mcore相较于Legacy,采用更加解耦和模块化的设计,提供更灵活的接口和底层功能,特别适合需要自定义训练过程的用户。

mcore目录
该目录为所有已经完成适配的模型任务脚本目录

目标模型任务脚本目录

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:推理脚本

微调数据集处理
微调数据集准备

设置微调数据集预处理脚本参数
修改data_convert_distill_qwen_instruction.sh中的参数

注意:红框中的路径为示例,需要按照本地实际路径修改上面三个参数

--input:2.1节中下载的微调数据集保存路径

--tokenizer-name-or-path:模型词表的保存路径

--output-prefix:数据集处理后的保存路径

在本实验环境中,参数修改后为:

执行微调数据集预处理脚本
bash ./examples/mcore/deepseek_r1_distill_qwen/data_convert_distill_qwen_instruction.sh

注意:脚本的执行路径应为MindSpeed-LLM目录下,即/home/test/MindSpeed-LLM

数据集处理结果确认
查看./finetune_dataset目录下的输出文件:

常见问题
环境问题

报错信息:

解决方法:

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中的参数

注意:红框中的参数设置为示例,需要按照实际环境修改

--target-tensor-parallel-size:TP并行策略

--target-pipeline-parallel-size:PP并行策略

--load-dir:huggingface权重加载目录

--save-dir:权重转换输出目录

--tokenizer-model:词表保存路径

在本实验环境中,参数修改后为:

注意:TP*PP的值要与NPU卡的数量一致,本环境中只占用一张卡,故TP/PP都设置为1

执行权重转换脚本
bash ./examples/mcore/deepseek_r1_distill_qwen/ckpt_convert_distill_qwen_hf2mcore.sh

执行成功:

查看权重转换结果

自行尝试
TP、PP分别设置不同的组合查看权重输出结果?以及对后续微调训练的影响?

常见问题
修改TP、PP的值、重新生成权重之前,最好把之前已经生成的权重文件删除掉,避免后续训练时加载错误。

模型微调训练
微调数据集准备

同2.1章节

权重准备
权重即为3.4章节中转换输出结果:

设置微调训练脚本参数

修改tune_distill_qwen_1point5b_full.sh中的参数,修改如下:

NPUS_PER_NODE:使用服务器中NPU卡的数量,本此只占用一张卡,故设置为1

CKPT_LOAD_DIR:初始权重加载路径,即第三章中权重转换后的输出路径

CKPT_SAVE_DIR:微调训练后权重的保存路径,用于后续推理

DATA_PATH:微调训练所需数据集路径,即第二章中数据集处理后的输出路径(注意:数据集路径一定要带alpaca后缀)

TOKENIZER_PATH:词表路径

TP/PP设置保持与第三章中权重转换一致

--train-iters:训练步长,本次实验只为了演示效果,故设置较小。

执行微调训练脚本
bash ./examples/mcore/deepseek_r1_distill_qwen/tune_distill_qwen_1point5b_full.sh

查看微调训练结果
查看训练日志,关注loss值的变化:

查看权重是否成功保存:

常见问题

NPUS_PER_NODE设置有误

NPUS_PER_NODE设置为8,报错如下:

DATA_PATH设置有误

DATA_PATH设置为:"./finetune_dataset/",报错如下:

TP/PP设置有误

TP/PP设置与权重转换时不一致,影响推理效果。

推理
权重准备

权重为4.5节中训练后保存的权重。

设置推理脚本参数
修改generate_distill_qwen_1point5b.sh中的参数,修改如下:

CHECKPOINT:权重加载路径,即第4.5章节中微调训练后的权重输出路径

其它参数与微调训练一致。

执行推理脚本
bash ./examples/mcore/deepseek_r1_distill_qwen/generate_distill_qwen_1point5b.sh

推理对话

常见问题
推理如果出现乱码,大概率是因为权重问题,请排查权重转换时是否将之前生成的权重删除干净。

mcore2hf权重转换
权重准备
权重为4.5节中训练后保存的权重。

设置权重转换脚本参数
修改ckpt_convert_distill_qwen_mcore2hf.sh中的参数,修改如下:

执行权重转换脚本
bash ./examples/mcore/deepseek_r1_distill_qwen/ckpt_convert_distill_qwen_mcore2hf.sh

查看权重转换结果

————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/wy746801669wy/article/details/146141655

Logo

昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,https://devpress.csdn.net/organization/setting/general/146749包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链

更多推荐