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

【大模型LLM第十一篇】微调自动化数据选择方式之MoDS

前言


来自中科院自动化所的paper

MoDS: Model-oriented Data Selection for Instruction Tuning

link:https://arxiv.org/pdf/2311.15653

github:https://github.com/CASIA-LM/MoDS

一、摘要

sft已经成为让LLM遵循用户指令的一种方式。通常,需要使用数十万个数据来微调基础LLM。最近,研究表明少量的高质量指令数据就足够。然而,如何在给定的数据中选择合适的指令数据?

为了解决这个问题,提出了一种面向模型的数据选择(MoDS)方法,该方法基于考虑三个方面的新标准来选择指令数据:质量、覆盖范围和必要性。

首先,利用质量评估模型从原始指令数据集中过滤出高质量子集,然后设计算法进一步从高质量子集中选择具有良好覆盖率的seed instruction dataset。应用seed数据集来微调基础LLM获得初始sft LLM。最后,用一个必要性评估模型来找出初始sft LLM效果较差的sft数据,将这些数据作为下一步改进LLM的必要指令。

从原始指令数据集中得到一个小的高质量、覆盖面广、必要性高的子集。实验结果表明,使用MoDS方法选择的 4,000 个指令对进行微调的模型比使用包含 214k 指令数据的完整原始数据集进行微调的模型表现更好。

二、方法

这个方法主要聚焦于三点:

  • Quality: 数据样本的质量
  • Coverage: 即多样性
  • Necessity: 对模型sft重要且唯一,主要从,大模型能很好的回答,说明模型学习好了,如果不能生成好的回答,说明LLM缺乏这个能力,则这个样本是必要的去提升模型能力。

分为三步骤

  1. Quality Evaluation
  2. Diverse Data Selection for Seed Instructions
  3. Augmented Data Selection.

2.1 Quality Evaluation

直接用一个reward model进行样本质量评分

reward model:reward-model-deberta-
v3-large-v22 (基于DeBERTa架构)

超过某个阈值的数据样本挑出来,当作 high-quality in struction dataset

2.2 Diverse Data Selection for Seed

依然采用k-center-greedy聚类来得到subset

讲解和代码:https://zhuanlan.zhihu.com/p/711917766

最终得到的样本集称为:seed instruction dataset

2.3 Augmented Data Selection

利用seed instruction dataset训练一个sft model.

用这个sft model对high-quality in struction dataset进行推理,之后用一个review model对生成的response和instruction计算一个review score,采用的模型依然是reward-model-deberta-v3-large-v22 (基于DeBERTa架构)

如果review score低于某个分数,则代表模型生成的response不是那么好,收集全部的低review score的样本,之后再用一次K-center greedy选取一个子集,作为加强数据集。

相当于做了一个high-quality in struction dataset选多样性subset,之后再通过预测不好的样本集,再补充一部分增强模型能力。

最终用这两个subset组成最终的数据集进行训练

三、实验

还做了一个 k-center和random采样的对比实验,这种实验基本上在用k-center的情况下都会对比一下:


http://www.kler.cn/a/286702.html

相关文章:

  • 使用 Babylon.js 开发时如何通过 CSS 实现 UI 自适应
  • 计算机网络之运输层
  • mysql 学习2 MYSQL数据模型,mysql内部可以创建多个数据库,一个数据库中有多个表;表是真正放数据的地方,关系型数据库 。
  • pyrender 渲染mesh
  • 中国综合算力指数(2024年)报告汇总PDF洞察(附原数据表)
  • Linux下 date时间应该与系统的 RTC(硬件时钟)同步
  • 不良信息公示
  • How can I change from OpenAI to ChatOpenAI in langchain and Flask?
  • 介绍一下最近很火的一款游戏黑神话悟空,以及国产游戏面临的挑战
  • AWS api数据信息获取(boto3)
  • 【数据结构】优先级队列 — 堆
  • kafka使用
  • 基于asp.net软件缺陷跟踪系统设计与实现
  • Java:数字验证
  • Web入门-06.HTTP协议-协议解析
  • Axure设计效率提升:实战策略与技巧
  • 五种常见的人工智能错误以及如何避免它们?
  • Websocket测试工具,在线调试 - 在线工具
  • 数学建模强化宝典(6)0-1规划
  • Python操作PDF文件
  • 惠中科技 RDS 自清洁膜层:光伏领域的卓越创新
  • 【QNX+Android虚拟化方案】109 - Android 侧添加支持 busybox telnetd 服务
  • H264码流结构讲解
  • 【Go - 10分钟,快速搭建一个简易日志回传系统】
  • python-pptx - Python 操作 PPT 幻灯片
  • Golang 开发使用 gorm 时打印 SQL 语句