MindSpore Transformers蒸馏微调体验
收藏回复举报
MindSpore Transformers蒸馏微调体验
发表于2025-04-03 18:16:41
0 查看

最近有幸参与了体验微调MindSpore Transformers蒸馏微调的活动,对Qwen2.5-Math-7B的大模型进行蒸馏微调,记录下过程与感悟。

1.首先登录体验堡垒机 true

查看资源,非常豪华

true

执行

docker exec -it sft bash

2.进入sft容器,会显示Mindformers的图标

true

3.数据分词打标签

首先cp -R tutorial ./seasonmay创建一个自己的工作目录,修改yaml文件里的配置信息

true

进入mindformer目录,执行

python toolkit/data_preprocess/huggingface/datasets_preprocess.py --config /home/HwHiAiUser/seasonmay/tutorial/OpenR1-Qwen-7B/dataset/dyn/data_process_dyn.yaml --save_path ./OpenR1_Dataset_Handler/ --register_path /home/HwHiAiUser/seasonmay/tutorial/OpenR1-Qwen-7B/modules/

然后就开始执行分词操作了

true

操作完成

true

4.修改文件微调参数

修改权重路径 true

修改处理好的数据路径 true

设置完好,配置一下系统变量,防止oom

export ACLNN_CACHE_LIMIT=10 # CANN 缓存限制
export MS_DEV_RUNTIME_CONF="aclnn_cache_queue_length:128" # MS缓存队列长度建议设置成128,设置过大内存容易OOM,设置越小性能越差

true

5.启动微调

bash scripts/msrun_launcher.sh "run_mindformer.py --config  /home/HwHiAiUser/seasonmay/tutori
al/OpenR1-Qwen-7B/configs/finetune_qwen_2_5_7b_dyn.yaml  --run_mode finetune" 8

true

使用tail查看微调日志

tail -f output/msrun_log/worker_7.log

true

可以看到正在微调训练的过程,时长大约两个小时

true

训练完成

true

loss收敛到0.222

因为在八张卡训练,所以输出权重被切成八份,进行归一操作

执行

python unified_safetensors.py --mindspore_ckpt_dir ../../output/checkpoint_network/ --src_strategy_dirs ../../output/strategy/ --output_dir /home/HwHiAiUser/seasonmay/tutorial/sft_output_1000 --file_suffix "1000_1" --format "safetensors"

true

6.转换完毕后,推理查看效果

python research/qwen2_5/run_qwen2_5.py --config /home/HwHiAiUser/seasonmay/tutorial/
Qwen2.5-Math-7B/predict_qwen2_5_math_7b_instruct.yaml --load_checkpoint /home/HwHiAiUser/seasonmay/tutorial/sft_output_1000/1000_1_ckpt_convert/unifie
d_safe/ --vocab_file /home/HwHiAiUser/Qwen2.5-Math-7B/vocab.json --merges_file /home/HwHiAiUser/seasonmay/tutorial/Qwen2.5-Math-7B/merges.txt --predic
t_data '3x+5y=20,2x+y=4的正整数解'

true

7.总结

感谢Mindspore官方,给我一次机会可以用这么多卡来从头体验一下蒸馏数据、微调训练以及最终推理的全流程,收获许多知识,非常感谢!

本帖最后由 匿名用户2025/05/07 10:36:48 编辑

我要发帖子