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

预训练技巧:在训练末尾对领域数据上采样

1. 简介

  • 介绍了一种在模型训练结尾对领域数据上采样能够提升在benchmark上的指标。
  • 通过实验表明上采样比例在10-20%是能够在通用语言能力与目标benchmark保持权衡的最好比例。
    请添加图片描述

2. 实验

  • 数据:1T
  • 模型:decoder-only结构,7B大小,具体模型参数如下:
    在这里插入图片描述

3. 结果

3.1 baseline data mix

* Large-Scale Common Crawl:包含大量及多样性的数据。
* Small-Scale Common Crawl:经过严格过滤的数据,质量更高,但数据量更少。
* Domain Specific data:领域数据或某种高质量来源数据(eg. Wikipedia)
* Code:涉及不同的编程语言。

在这里插入图片描述

  • 没经过过多的优化,通过启发式方法得到一个初始的数据比例,训练了两个7B模型,分别用0.5T和1T数据训练。实验效果如下所示:
    在这里插入图片描述
    在这里插入图片描述

3.2 Domain upsampling significantly boosts performance

  • 为了验证domain upsampling的有效性,将在1T tokens训练阶段的剩余20%作为训练结尾,用0.8T数据训练模型并保存checkpoint,然后改变剩余0.2T数据的配比并continue pretrain。具体的数据配比如下图所示:
    在这里插入图片描述
  • 在continue pretrain数据的配比中,删除了large-scale common crawl dataset,虽然large-scale common dataset数据多样性比较好,但为了增加领域数据的信息密度,只好删除。但同时会保证small-scale common crawl数据的高比例,以免训练数据分布有大的偏移。
  • 实验结果:
    在这里插入图片描述
    在这里插入图片描述
    在训练末尾增加code和domain数据不仅能够提升code和domain benchmark上的效果,同时也不会损失通用语言模型能力,事实上,不仅不会损失,还会提升通用能力。

3.3 Changing the duration of domain upsampling enables us to navigate the trade-off between targeting specific domains and general purpose language models

在这里插入图片描述
在这里插入图片描述

  • 在数学和代码相关的benchmark上,流入HumanEval,GSM8K及Gauntlet v0.3会随着domain upsampling比例增加效果一直提升;
  • 其他benchmark上最佳指标是比例在20%或更少。

3.4 Domain upsampling is a FLOP-efficient tool to characterize how individual datasets impact model capabilities

在这里插入图片描述

  • 通过domain upsampling的方式可以很好的将模型因为数据的改进归因于某个子集。如上图所示,在增加或删除数学相关数据集后可以对比二者之间的表现发现,这些特定的数据集负责base模型和上采样变体模型中的大部分数学知识和推理能力。
  • 通过domain upsampling方式,可以在少量的training FLOPS的基础上实验一些消融实验。

4. 小结

  • domain upsampling能够很好的提升模型在各个benchmark上的效果,同时最佳的比例是20%左右;
  • 通过domain upsampling可以用少量的training FLOPS验证一些实验,比如说数据配比,某个domain dataset对模型的影响等。

如果本文对读者有帮助的话,辛苦一键三连。
请添加图片描述

参考文献

  • [1] Does your data spark joy? Performance gains from domain upsampling at the end of trainin

http://www.kler.cn/news/327159.html

相关文章:

  • Linux shell脚本set -e的作用详解
  • Linux 性能优化之CPU 多级缓存
  • ip的生命周期是多久
  • el-table添加fixed后错位问题
  • vscode【实用插件】Project Manager 项目管理
  • fastAPI教程:jinja2模板
  • 代码随想录:孤岛类问题
  • python UNIT 3 选择与循环(2)
  • 笔记本电脑如何改ip地址:操作指南与注意事项
  • Avalonia 项目结构说明
  • Elasticsearch 开放推理 API 增加了对 Google AI Studio 的支持
  • 【python进阶攻略12】C扩展
  • 破局汽车智能化浪潮:Tire 1供应商的网络优化与升级策略
  • leetcode|刷算法 线段树原理以及模板
  • 用OpenSSL搭建PKI证书体系
  • react 前端框架中的 三层(service,model,index)具体操作
  • CSS 参考手册
  • 某星球预约抢票脚本
  • 25中国烟草校园招聘面试问题总结 烟草面试全流程及面试攻略
  • 人工智能辅助的神经康复
  • Thinkphp/Laravel旅游景区预约系统的设计与实现
  • open-resty 服务安装jwt插件
  • SpringBoot教程(三十一) | SpringBoot生成Docker镜像包
  • Gdao v1.2.0:Go语言高效ORM框架
  • 初学51单片机之I2C总线与E2PROM二
  • 【动态规划-最长公共子序列(LCS)】力扣583. 两个字符串的删除操作
  • Python和C++及MATLAB距离相关性生物医学样本统计量算法及数据科学
  • WebRTC入门
  • 大屏走马灯与echarts图表柱状图饼图开发小结
  • 嵌入式单片机底层原理详解