当前位置: 首页 > news >正文

SFT数据处理部分的思考

SFT数据及处理的业内共识

1.prompt的质量和多样性远重要于数据量级,微调一个 30 b 量级的base model只需要 10 w 量级的数据即可
参考:《LIMA:Less Is More for Alignment》
2.合成数据很重要!一般需要通过不同方式进行多路合成,减少合成数据的bias
参考:《Phi-3 Technical Report:A Highly Capable Language Model Locally on Your Phone》
3.可以加点预训练的数据进去,减轻灾难性遗忘现象
参考:《The Llama 3 Herd of Models》
4.一般训练一个epoch,垂域模型数据少训练3epoch去过拟合
5.可以做全量微调,就不要去做PEFT
6.SFT阶段不能太多的知识注入,过多的知识注入,或者超过模型能力本身的回答过多会导致对齐税
数据飞轮
最简单的做法,拉取线上近半个月的真实用户prompt,先用启发式规则进行清洗,然后用GPT-4o打标,留下可用的数据

为什么要用数据飞轮?

1.prompt 的生产是需要有 seed 种子的,seed的数据量和多样性有限,数据合成的质量不够高。
2.用户的问题干奇百怪,尤其是多轮聊天数据,自己生成的多轮对话数据,通常都默认模型回复的是正确的,用户会 follow 模型的回复。但线上可不是这种情况,你聊你的,我聊我的是时有发生的事情 (伪多轮)。

1.数据收集:首先,需要收集和获取大量的数据。这可以通过各种方式实现,例如用户近一个月赞踩,用户行为追踪,用户社交媒体数据等
2.数据存储和处理:收集到的数据需要进行存储和处理,以便后续的分析和应用。这可能涉及到数据仓库,数据库,云存储等技术
3.数据分析和洞察:通过对数据进行分析和挖掘,提取有价值的信息和洞察。这可以使用数据分析工具,机器学习算法等技术来实现,以发现数据中的模式,趋势和关联关系
4.数据应用和价值实现:将分析得到的洞察应用到实际场景中,创造价值。这可能包括优化业务流程,改进产品设计,个性化推荐等
5.数据反馈和增强:应用数据带来的改进和收益,进一步增加数据的质量和数量。这可能包括更好的数据收集方法,更准确的数据标注等

在这里插入图片描述

一、数据飞轮的本质(类比理解)

将数据系统想象为一个永动机,每一轮旋转都会积累更多动能(高质量数据),最终形成自增强的正反馈循环:

收集
清洗/标注
微调
部署
新提问
真实用户提问
数据池
优质训练集
更聪明模型
吸引更多用户

飞轮效应:每个环节的质量提升都会带动下一轮的数据优化,形成自我升级的生态闭环。


二、为何传统数据合成需结合飞轮机制

1. 初始种子数据的缺陷
  • 问题:人工构造的种子问题类型有限,且可能存在隐性偏见
    (例如:过于书面化,缺乏口语表达样本)
  • 飞轮修复机制:通过真实用户数据补充长尾场景案例
2. 合成数据的失真风险
  • 问题:模型生成的提问可能与真实用户分布存在偏离
    (如:合成数据中问答过于规范,实际用户存在模糊表达)
  • 飞轮校准作用:用真实数据中的“反例”修正模型认知偏差

示例对比

# 合成数据                    | # 真实用户数据
"写一首关于春天的五言绝句"   | "整点春天的诗,别太长,要押韵"
"牛顿三大定律的内容是什么?" | "物理考试复习重点求总结,急!"

三、数据飞轮的5环节详解

1. 数据收集:获取原材料
  • 核心目标:覆盖用户真实意图的全面性
  • 操作技巧
    • 用户行为埋点:记录搜索记录、对话中断率、主动点赞/踩
    • 多源采集:API日志、客服对话记录、应用内反馈表单
2. 存储与处理:打造高标准数据工厂
  • 架构示例
flowchart TD
      A[原始数据] --> B[清洗层:去重/去噪]
      B --> C[结构化层:JSON格式化]
      C --> D[标注层:质量分类+实体标记]
      D --> E[特征库:存储embedding向量]
  • 工具推荐
    • 清洗:用Python的pandas处理重复数据
    • 存储:Elasticsearch实现快速检索
    • 标注:Snorkel框架实现弱监督标注
3. 分析与洞察:挖掘数据金矿
  • 关键分析维度
    维度分析方法实战用途
    意图分布聚类分析(K-means)发现模型未覆盖的新用户需求
    对话质量二分类模型(优质/低质)过滤无效数据提升训练效率
    会话流分析序列模式挖掘(PrefixSpan算法)优化多轮对话的上下文管理策略
4. 应用与价值:数据驱动决策
  • 典型应用场景
    • 产品优化:高频出现的模糊提问 → 改进用户引导文案
    • 模型增强
      # 假设分析发现用户常问"怎么安装XXX"
      # 则定向增加对应安装指导的SFT数据
      new_prompts = generate_install_qa("XXX软件") 
      
5. 反馈与增强:闭环迭代
  • 质量提升循环
    while True:
        当前模型 = 训练(现有数据)
        部署后用户提问 = 收集新数据()
        数据缺陷 = 分析模型错误案例(当前模型, 新数据)
        增强数据 = 针对性补全漏洞数据(数据缺陷)
        合并数据 += 增强数据
    

四、实战案例解析

案例1:客服对话系统的飞轮优化
  • 初始问题:20%的客户因模型不理解方言而转人工
  • 飞轮介入
    1. 收集方言类对话样本 → 清洗后生成标注数据
    2. 微调时增加方言理解专项训练集
    3. 新版本上线后相关转人工率降至7%
案例2:代码助手的多轮对话增强
  • 痛点:用户常在三次对话后丢失上下文
  • 解决方案
    • 解析对话日志中的状态丢失节点
    • 基于真实中断案例构建强化训练样本:
    {
      "dialog": [
        {"role":"user", "content":"写一个Python排序函数"},
        {"role":"assistant", "content":"使用sorted()函数..."},
        {"role":"user", "content":"不要用内置函数自己实现"}
      ],
      "label": "需要保持算法实现焦点"
    }
    

五、避开数据飞轮的常见误区

误区后果科学做法
只收集显式反馈丢失90%潜在信息结合隐式行为分析(如停留时长)
过度依赖自动化标注噪声数据污染模型人机协同校验(如置信度过滤)
迭代周期过长无法及时响应需求变化建立小时级数据更新通道

六、前沿优化方案

1. 动态数据加权

为每个训练样本分配动态权重:

weight = α * 用户重要性 + β * 数据新鲜度 + γ * 模型不确定度
  • 用户重要性:VIP用户的数据权重更高
  • 模型不确定度:使用蒙特卡洛Dropout计算置信度
2. 对抗样本挖掘

主动生成让当前模型犯错的问题,加入训练集:

adversarial_prompts = generate_hard_samples(model)
train_data += adversarial_prompts
3. 数据蒸馏技术

用大模型标注结果指导小模型训练:

原始数据 → GPT-4标注 → 训练Llama 3

七、阶段总结(思维导图版)

在这里插入图片描述

通过将数据飞轮与合成技术结合,可使模型始终保持对现实场景的强适应力,这正是打磨优秀LLM的核心要义。

相关文章:

  • 本周行情——20250315
  • 实时系统优先级设置与修改
  • system V信号量
  • [文献阅读] 可变形卷积DCN - Deformable Convolutional Networks
  • IMX6ULL学习整理篇——UBoot的一些基础知识(2. 启动流程)
  • 嵌入式C语言中堆栈管理与数据存储的精髓
  • 华为机试牛客刷题之HJ5 进制转换
  • /proc/sys/kernel/yama/ptrace_scope的作用
  • 网络爬虫【简介】
  • TMS320F28P550SJ9学习笔记13: 软件I2C_驱动AT24Cxx存储芯片
  • Web元件库 ElementUI元件库+后台模板页面(支持Axure9、10、11)
  • Qt 中工具窗体与普通窗体在任务栏中的区别
  • 神聖的綫性代數速成例題1. 餘子式、代數餘子式的概念、行列式的行(列)展開
  • Type-C:智能家居的电力革命与空间美学重构
  • 简单实现京东登录页面
  • 精通游戏测试笔记(持续更新)
  • 蓝桥杯:信号覆盖
  • 常见的死锁情况分析
  • 前端小食堂 | Day16 - 前端监控の天眼通
  • 【leetcode100】全排列Ⅱ
  • 美乌矿产协议签署被曝“临门一脚”时生变,美方提附加条件
  • 摩根大通任命杜峯为亚太区副主席,加码中国市场业务布局
  • 金砖国家外长会晤发表主席声明,强调南方国家合作
  • 瞄准“美丽健康”赛道,上海奉贤如何打造宜居宜业之城?
  • 马上评丨市长信箱“已读乱回”,群众在意的是什么
  • 超级干细胞有助改善生育治疗