Skip to content

一些数据清理和sft微调的请教 #3

@qqqqqf-q

Description

@qqqqqf-q

https://github.com/qqqqqf-q/Qing-Digital-Self
这是我的项目,也许你听说过weclone,是的,非常像,不过在项目开发初期真的一点都没借鉴过weclone,只是刷到过,虽然重复造轮子这事确实不怎么样,优点在于提供了更多平台的数据提取经验,这是我第一个也是目前唯一一个有结构的,有实用性的有用户的项目,看到别人用我项目训练出来的ai真的很高兴🤔别人给我多点一个star我真的能开心一整天
简单描述一下:用qq/wx/tg的用户双向聊天记录数据(不包含群聊和照片)对llm进行sft,让llm模仿你的说话风格等等

下面这些问题困扰我许久,我也没有系统性的学习过机器学习这方面,需要请教一下大佬

1.数据的顺序问题
打字打慢了导致qa对不上,但是如果有上下文那么是可以看懂的,但是对大模型来说这就比较致命了
比如
q:句1,2
a:句3回答1
q:句4
a:回答2,4
大模型主要是单段对话,这感觉导致了模型能力下降

2.分段问题
例如
a:等会出去看电影

a:和同学
a:试了电脑能玩
a:我是手腕流
(以上的对话怎么想也不通畅吧喂)
(不知怎么的...这里b呢?)
原文:
a:等会出去看电影(
b:[引用上条]a
自己?
a:和同学
a:[此条信息回复的是这一段对话的上面,无引用]试了电脑能玩
我是手腕流

Image

以20-60s的策略来划分数据,确实解决了分段问题,但是数据量会大量减少,很多时候可能过了几十分钟才会回答,但也是回答之前的问题

3.数据提取问题还是哪里的问题
依旧上面的对话,看原对话截图,这...怎么少了点东西?

主要原因:数据来源是解密qq的数据库,但是text字段可以解密出来,但是表情包,图片等仍然是无法解密的,会呈现无规律乱码,目前靠算法先清洗一遍然后llm clean的时候打分,如果存在乱码(此处是表情包图片无法解密所以呈现乱码)则打低分,不被选入

这也是llm会输出乱码的原因,如果是[suzume]这样的真实存在的表情包还好但是这里是乱码

Image 这里...有很明显的提取或者数据清洗或者分段问题

4.错别字
以现在llm的能力,学错别字容易影响原模型能力吧,虽然错别字和原字有关联但是会影响微调吧

5.full finetune和lora和qlora微调,区别大吗
full finetune的成本实在太高...

6.模型大小,因为资金原因没钱租更大的卡去微调14b以上的模型,效果会更好吗?但是此时我的训练集大概只有15mb(其中system prompt占一半),会偏少吗?我训练了1.5b/7b/14b,其实效果并没有差太多?(除了知识量)隔壁weclone说32b-70b效果最好,但是我没有这么多资金去测试

7.数据混合,因为“灾难性遗忘”,需要往c2c数据混入普通训练的qa数据,多少比例数据比较好?有推荐的公开数据集吗?
之前测试了大约5:5的比例,但模型最后失去了人格化,变的比较assistant,有时候甚至不知道自己的名字

8.指令遵循问题和混乱输出问题
微调后的llm失去了遵循的能力,我问一个问题,他可能会回答“你这是xxx量表吗?而不是回答问题”
大约40%的概率可以正常输出答案编号的字母
以及输出一堆和问题有关但又无关紧要的内容
不存在模板问题,可能需要优化下system prompt

好奇这是训练数据中的哪部分的错误

Image

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions