几个月前刚训练过一个,安卓手机的话需要把微信数据库导出并解密
https://github.com/greycodee/wechat-backup然后导出 contact 和 message 表,我先是对导出的表进行了清洗,把非目标群聊/联系人的聊天数据和大部分根本不需要的字段全部删除,删除不使用的聊天记录类型(比如图片啥)然后再清洗掉个人敏感信息
对于数据集生成,我的思路是
1.群聊: 先筛选出我发送的消息,然后向上追溯一分钟之内的其他人的消息作为一组对话(我这里没考虑引用回复),一天内的消息均作为上下文(但实际上我并不推荐使用群聊消息,现在并没有成本低且效果很好的方式来分割聊天,第三次训练时我去掉群聊的数据集,胡言乱语的情况好了很多)
2.联系人: 一问一答为一组对话,多条连续消息合并,一天内为上下文
最后总共有 8k 条聊天记录
我当时使用的 chatglm2 模型,lora 和 pt 都试了,lora 效果好太多,最终 15steps 的 loss 稳定在 1.0 左右
效果怎么说呢...确实金句频出,但记忆力明显下降,并且指令服从性几乎没有,也就仅仅能用来聊天了。
另外,我多次尝试让他认识到自己是谁,无论是通过数据集强化的方式,还是靠推理时增加 system prompt ,都无法达到效果...