关于Coder模型的微调Day1

Ruoke 发布于 24 天前 55 次阅读


也是第一次在博客发技术文章了。这是因为早上有人在问词库的问题,我就突然想到为什么不能利用ai制作词库呢?

基础模型的选择

我整理了70来对的csv对话数据集,用于测试模型能力,经过了两天花了一些money(租用GPU算力),我从刚开始的 qwen2:1.5b 模型切换到 qwen2-coder:1.5b 模型,由于最终部署平台的算力有限,我只能将其部署为CPU模式,这代表着我不能选择更大的模型参数。刚开始的千问普通对话模型经过3轮训练后发现效果十分不理想,他甚至还没有理解Secluded的语法结构,只能与其简单问答。

经过百度和deepseek询问,我决定更换一个专业的coder模型,1.5b的阿里巴巴的千问模型和零一万物的coder就是我目标的基础模型,折腾一番后发现1.5b的千问效果也不是很理想,反倒浪费了很多时间。

最后,我选中了9b的零一万物的模型,今天一个下午都在调试优化训练的参数,经过同样的3轮训练后,零一万物的代码理解水平是明显高了不少的。在租用的平台上微调完之后,第一次直接部署到我的天选姬上,先是爆出了

Expected all tensors to be on the same device, but found at least two devices, cpu and cuda:0! (when checking argument for argument mat2 in method wrapper_CUDA_bmm)

这样一个错误,这表明在生成回复时,有些张量在CPU上,有些在GPU上,导致PyTorch无法执行操作。然后我尝试将所有内容强制移动到CPU,失败了。然后我将代码丢给了deepseek,为我提供了三种解决方案

最终还是使用了强制移动。

最终的效果还是有一些的

用户: 帮我制作一个简单的群管系统
助手思考中...2025-03-07 22:29:10,867 - INFO - 模型主要设备: cuda:0
助手: 群管系统这个词库需要实现以下功能:
1、添加管理(普通管理员)
2、添加超管(超级管理员)
3、移除管理
4、查看成员列表
5、查看管理列表
6、禁言某成员
7、踢某成员
8、群内发言统计
9、群内人数统计
词库内容:
```
[头]
名称=群管系统
作者=Secluded团队
描述=实现群管系统
更新时间=202321
版本=1.0
类型=1
[词库]
添加管理 $qq$
^添加管理 $qq$[^]
添加成功
添加失败
添加超管 $qq$
^添加超管 $qq$[^]
添加成功
添加失败
移除管理 $qq$
^移除管理 $qq$[^]
移除成功
移除失败
禁言 $qq$ $time$
^禁言 $qq$ $time$[^]
禁言成功
禁言失败
踢出 $qq$
^踢出 $qq$[^]
踢出成功
踢出失败
统计成员
^统计成员[^]
成员统计结果
查看成员
查看管理
查看超级管理
开启群统计
关闭群统计
开启人数统计
关闭人数统计
```
[生成用时: 38.63秒]

看上去已经有那种味道了,之后我又进行了简单的调提示词,可能是我使用的chat模型的原因,之后我要换成base模型,重新训练,效果应该也会好很多

  • 增大LoRA秩:从16增加到32,增强模型适应特定语法的能力
  • 降低学习率:从2e-4降至1e-4,避免过拟合
  • 增加训练轮数:从3轮增加到5轮,让模型有更多机会学习
  • 更频繁评估:每50步评估一次,有助于找到最佳模型
  • 切换到Base模型:从Chat模型切换到Base模型,获得更纯粹的代码理解能力
  • 扩展模型训练集:采用更多的训练数据让模型充分增强词汇相关的学习能力
  • 最后,使用4bit量化模型

好了,今天任务完成,明天继续微调模型

我只是呆呆的等一场雪,心生欢喜
最后更新于 2025-03-07