那么今天,我们来演示一下 Qwen2.5-1.5B Instruct 版本的全参微调咯。
Qwen2.5-1.5B Instruct版本和Base版本的区别
演示之前,我们先聊一下Qwen2.5-1.5B Instruct版本和Base版本的区别,这里放一张我跑出来的图片(使用AI真的增加了我的幸福感):
Qwen2.5-1.5B Instruct版本是基于Qwen2.5-1.5B Base版本训练而来,所以就从Base版本开始讲解啦。
Base版本:就像一个读过很多书,懂很多知识,但是是一个"社恐",你直接问它问题,它可能都不知道怎么回答,然后就出现了上一期中胡言乱语的情况了。
Instruct版本:就像是经过专业训练的个人助理(确实是受过训练了,哈哈哈哈),能够准确理解你的意图并提供准确的回复。它不仅能领会你的需求,还能主动给出有价值的建议和补充信息。
开始全参微调
OK,那么现在开始进行全参微调,还是熟悉的配方,熟悉的流程,我们直接建立一张6卡的实例(全参微调真的太吃显卡了,论性价比还得是lora微调)。
1. 创建实例
还是打开咱公司自建的AI云平台,建立一张6卡的实例,因为以前真的是被显存不足搞的有点难受,所以现在都会选择6卡,6*24g的显存,想想都舒服。
我是真的喜欢使用最新版的东西(手机推送系统必更新的那种人!),所以这里选择的是PyTorch 2.7.0。
新建完实例后就可以看到LLaMA-Factory了:
2. 准备工作
但是!准备工作还是要做的,因为上一篇文章中提到过平台是自带了一些功能的,也不用在其他地方到处找了,我们直接进入AI模型界面,找到这次的主角 -Qwen2.5-1.5b-instruct。
直接把指令复制出来:
modelscope download --model Qwen/Qwen2.5-1.5B-Instruct --local_dir Qwen2.5-1.5B-Instruct
然后进入我们的机器中操作一手,还是提一句,一定,一定,一定!要下载到数据盘,虽然是很基础的问题,但是有些时候还是容易犯错。
这台机器的数据盘路径是 `/root/superti-tmp`
3. 上传数据集
继续上传我们的数据集,还是使用Termius来上传,直接拖进去就搞定了!
4. 修改配置文件
下一步那肯定就是修改 `dataset_info.json` 文件啦。
这里可以选择vs code的远程连接,或者是直接使用控制台中的工具,我这里当然选择更方便的这个。
开始训练
修改完成之后,就可以进入LLaMA-Factory中点点点了。
1. 选择模型
路径这里填好我们保存的Qwen2.5-1.5b-instruct模型的路径地址即可,聪明的LLaMA-Factory会帮我们找到地址。
微调方式选择 full。
2. 选择数据集
然后就可以选择到我们上传的数据集了,这个位置应该是按照我们在dataset_info.json中设置顺序来的,通过搜索或者直接拉到最下面即可。
选择之后,预览数据集,就可以看到我们上传的数据了,多看几页看看有没有问题。
3. 设置训练参数
我这里改了一个参数就是训练轮数,从3轮改成了5轮,感觉模型会更聪明了。
如果需要每个参数的说明,可以单独找我拿笔记。
然后设置一手输出目录,不然默认的数据盘30g可扛不住这么造。
还有最重要的就是DeepSpeed stage了,我最喜欢的设置,它在优化训练过程中的内存使用、提升训练效率方面发挥着重要作用,是我的好伙伴。
4. 开始训练
然后就可以开始训练了:
这里就需要慢慢等待。
5. 监控训练过程
> 重要提示:提一个坑,这里很可能很长时间没有反应,这个时候就需要去看日志了。
先通过下面的命令找一下日志的地址:
find / -name "llama" -name "*.log" 2>/dev/null
然后通过 `tail -f` 就可以监控到日志了(白白等了3个小时的血泪史,如果没反应不一定是在努力训练,也可能在偷偷摸鱼)。
但是,教程里的内容肯定是成功的了:
验证效果
开始验证了,进入chat页面,路径点选择我们刚刚自定义的输出目录,点击加载即可。
效果对比
这里对比一下未训练之前的模型和训练之后的模型的区别:
训练前:
训练后:
验证之后发现和我们数据集中的内容一样,他成功被我们训练了!
这样就完成这次的训练之旅啦,如果有什么问题可以评论区留言或者私聊我哦
下期预告
那么下一期的内容,我准备再做一个Qwen2.5-1.5B Instruct版本的lora微调版本,并且会综合对比这几种选择模型和微调方式的差异性,算是给这个篇章做出一个总结。