【AI论文】CLIMB:基于聚类的迭代数据混合自举语言模型预训练
摘要:预训练数据集通常是从网络内容中收集的,缺乏固有的领域划分。 例如,像 Common Crawl 这样广泛使用的数据集并不包含明确的领域标签,而手动整理标记数据集(如 The Pile)则是一项劳动密集型工作。 因此,尽管预训练数据混合对预训练性能有显著的好处,但确定最佳的预训练数据混合仍然是一个具有挑战性的问题。 为了应对这些挑战,我们提出了基于聚类的迭代数据混合引导(CLIMB),这是一个自动化的框架,可以在预训练设置中发现、评估和优化数据混合。 具体而言,CLIMB将大规模数据集嵌入并聚类到语义空间中,然后使用较小的代理模型和预测器迭代搜索最优混合。 当使用这种混合物对400B令牌进行连续训练时,我们的1B模型超过了最先进的Llama-3.2-1B的2.0%。 此外,我们观察到,针对特定领域(如社会科学)进行优化,比随机抽样提高了5%。 最后,我们介绍了ClimbLab,这是一个经过筛选的1.2万亿令牌语料库,包含20个集群,作为一个研究游乐场,以及ClimbMix,这是一个紧凑但功能强大的4000亿令牌数据集,专为高效的预训练而设计,在相同的令牌预算下提供卓越的性能。 我们分析了最终的数据混合,阐明了最佳数据混合的特征。 我们的数据可在以下网址获取:CLIMB,Huggingface链接:Paper page,论文链接:2504.13161
研究背景和目的
随着大型语言模型(LLMs)的快速发展,预训练数据集在其性能提升中扮演了至关重要的角色。然而,预训练数据集通常是从网络内容中收集的,缺乏固有的领域划分。例如,广泛使用的Common Crawl数据集并不包含明确的领域标签,而手动整理标记数据集如The Pile则是一项劳动密集型工作。因此,尽管预训练数据混合对预训练性能有显著的好处,但确定最佳的预训练数据混合仍然是一个具有挑战性的问题。
本研究的目的是提出一种自动化的框架,即基于聚类的迭代数据混合引导(CLIMB),以在预训练设置中发现、评估和优化数据混合。CLIMB旨在通过大规模数据集在语义空间中的嵌入和聚类,以及使用较小的代理模型和预测器迭代搜索最优混合,从而在不依赖手动定义领域标签的情况下,提高预训练模型的性能。
研究方法
1. 数据预处理
- 文本嵌入:使用嵌入模型将文档映射到嵌入空间中,以便在相同集群内的文档之间实现更深的语义对齐。
- 嵌入聚类:采用k-means等聚类算法将嵌入后的文档分组为初始集群。为了后续处理的精细度,初始集群数量K_init设置为相对较大的值(如1000)。
- 集群合并:通过模型基分类器进行集群级别的修剪,去除低质量集群,并基于质心距离将剩余的高质量集群合并为增强集群(K_enhanced < K_pruned < K_init)。
2. 迭代引导:混合权重搜索
- 混合权重搜索作为双层优化问题:给定一组数据集群D={D1, D2,..., Dk}和目标函数ℓ(α,ω)(其中α为混合权重,ω为模型权重),目标是找到最优混合权重α*∈A,以最大化任务性能ℓ(α,ω)。
- 使用预测器近似目标函数:为了降低计算成本,使用预测器fθ(α)来近似目标函数ℓ(α,ω),基于一组(混合权重,性能)对进行训练。
- 迭代引导解决双层优化问题:通过坐标下降方法交替优化配置采样和预测器拟合子程序。在每次迭代中,根据预测性能对配置进行排序,并从顶部配置中随机采样新配置,以平衡利用和探索。然后,使用新采样的配置训练预测器,并用于评估配置和生成预测性能。
3. 实验设置
- 数据集:使用Nemotron-CC和smollm-corpus作为源数据集,通过CLIMB聚类得到21个超级集群,包含约8000亿令牌。评估在PIQA、ARC_C、ARC_E、HellaSwag、WinoGrande和SIQA等推理基准上进行。
- 模型:首先进行第一阶段预训练以建立坚实基础,然后训练62M、350M和1B三种规模的Transformer解码器模型。对于代理模型,使用62M和350M以提高效率。对于目标模型,评估所有三种规模以评估方法在不同尺度上的表现。
- 基线:与随机选择、DoReMi和RegMix等先进的数据混合方法进行比较。
研究结果
1. 与数据混合基线的比较
在350M和1B目标模型上,CLIMB在平均准确率上均优于所有基线数据混合方法。例如,在350M目标模型上,CLIMB的平均准确率为54.83%,高于随机选择的52.17%和最佳基线RegMix的53.78%。在1B目标模型上,CLIMB的平均准确率为60.41%,高于所有基线。
2. 与最先进的语言模型的比较
使用CLIMB找到的最优数据混合对400B令牌进行连续训练后,我们的1B模型在多数通用推理基准上均优于Llama-3.2-1B等先进基线,整体平均准确率提高了2.0%。
3. 针对特定领域的优化
除了优化通用推理任务外,CLIMB还能针对特定领域(如社会科学)进行优化。实验结果表明,针对社会科学领域的优化比随机抽样提高了5%的准确率。
4. 消融研究
- 搜索计算预算的影响:增加搜索的总计算量(如从100%增加到150%或200%)可以进一步提高下游准确性。
- 计算分配的影响:在迭代次数和每次迭代的搜索次数之间找到平衡(如4:2:1的分配比例)对于稳健地找到好的混合至关重要。
- 代理模型的影响:使用较大的代理模型(如350M)可以更准确地估计最终(较大)目标模型的性能。
- 集群数量的影响:CLIMB对集群数量不太敏感,表现出鲁棒性。
- 初始化方案的影响:Dirichlet初始化略优于随机初始化,但性能相当,表明数据混合方法对初始化选择不敏感。
研究局限
尽管CLIMB在预训练数据混合方面取得了显著成效,但仍存在一些局限性:
- 计算成本:尽管CLIMB通过迭代引导和使用较小的代理模型降低了计算成本,但在大规模数据集上进行嵌入、聚类和迭代搜索仍然需要相当的计算资源。
- 数据集依赖性:CLIMB的性能可能依赖于所使用的源数据集的质量和多样性。如果源数据集存在偏差或不足,可能会影响最终数据混合的效果。
- 预测器的局限性:预测器用于近似目标函数,但其准确性可能受到训练数据的质量和数量的限制。预测器的偏差可能会影响数据混合的搜索方向。
未来研究方向
- 降低计算成本:探索更高效的嵌入和聚类算法,以及更轻量级的代理模型,以进一步降低CLIMB的计算成本。
- 增强数据集的多样性和质量:研究如何整合更多样化的数据源,并改进数据清洗和过滤技术,以提高源数据集的质量和多样性。
- 改进预测器:研究更先进的预测器模型,以提高其对目标函数的近似准确性,从而更精确地指导数据混合的搜索过程。
- 扩展到更多领域和任务:将CLIMB扩展到更多领域和任务上,以验证其在不同场景下的有效性和通用性。
- 结合其他优化技术:探索将CLIMB与其他数据优化技术(如数据增强、数据选择等)相结合的可能性,以进一步提升预训练模型的性能。
总之,CLIMB为预训练数据混合提供了一种自动化的解决方案,通过迭代引导和预测器实现了对数据混合的有效搜索和优化。未来的研究可以进一步改进CLIMB的性能和效率,并探索其在更多领域和任务上的应用。
相关文章:
【AI论文】CLIMB:基于聚类的迭代数据混合自举语言模型预训练
摘要:预训练数据集通常是从网络内容中收集的,缺乏固有的领域划分。 例如,像 Common Crawl 这样广泛使用的数据集并不包含明确的领域标签,而手动整理标记数据集(如 The Pile)则是一项劳动密集型工作。 因此&…...
AI大模型发展现状与MCP协议诞生的技术演进
1. 大模型能力边界与用户痛点(2023年) 代表模型:GPT-4(OpenAI)、Claude 3(Anthropic)、通义千问(阿里云)等展现出强大的生成能力,但存在明显局限:…...
从malloc到free:动态内存管理全解析
1.为什么要有动态内存管理 我们已经掌握的内存开辟方法有: int main() {int val 20;//在栈空间上开辟四个字节char arr[20] { 0 };//在栈空间上开辟10个字节的连续空间return 0; }上述开辟的内存空间有两个特点: 1.空间开辟的时候大小已经固定 2.数组…...
CSS值和单位
CSS值和单位 CSS 中的值和单位是构建样式的基础,它们定义了属性的具体表现方式。值用于定义样式属性的具体取值,而单位用于指定这些值的度量方式。CSS中常用的值和单位如下: 1.长度单位 px : 像素,绝对单位 em : 相对于元素的字…...
Redis高级篇之I/O多路复用的引入解析
文章目录 一、问题背景1. 高并发连接的管理2. 避免阻塞和延迟3. 减少上下文切换开销4. 高效的事件通知机制5. 简化编程模型6. 低延迟响应本章小节 二、I/O多路复用高性能的本质1. 避免无意义的轮询:O(1) 事件检测2. 非阻塞 I/O 零拷贝:最大化 CPU 利用率…...
FTP协议命令和响应码
文章目录 📦 一、什么是 FTP 协议?🧾 二、FTP 常见命令(客户端发送)📡 三、FTP 响应码(服务端返回)📌 响应码分类(第一位)✅ 常见成功响应码&…...
在win上安装Ubuntu安装Anaconda(linx环境)
一,安装Ubuntu 1. 在 Microsoft 商城去下载Ubuntu(LTS:是长期维护的版本) 2.安装完之后启动程序,再重新打开一个黑窗口: wsl --list --verbose 3.关闭Ubuntu wsl --shutdown Ubuntu-22.04 WSL2 Ubuntu-20.04文件太占c盘空间,…...
【Elasticsearch入门到落地】11、RestClient初始化索引库
接上篇《10、初始化RestClient》 上一篇我们已经完成了RestHighLevelClient的初始化工作,本篇将正式进入索引库的创建阶段。我们将使用Java代码来创建酒店数据的索引库。 一、准备工作 1. 创建常量类 首先,我们需要定义一个常量类来存放索引库的mappi…...
远程服务调用的一些注意事项
引言 最近工作中,遇到了一些关于远程服务调用的问题,背景是调用三方接口获取某些特征数据,但由于调用出现了超时,导致业务本身的接口的可用行降低。因此整理一些远程服务调用时的注意事项,通过不同维度的考虑来提高系…...
QML 样式库
在 QML 中,样式库(或 UI 框架)用于快速构建一致且美观的界面。Qt/QML 本身不提供内置的完整样式库,但可以通过以下方式实现样式管理或使用第三方库。 1. Qt Quick Controls 2 样式系统 Qt Quick Controls 2 是官方提供的 UI 组件…...
[RHEL8] 指定rpm软件包的更高版本模块流
背景:挂载RHEL ISO使用kickstart安装操作系统,安装包未指定安装perl,但是安装完可以查到其版本,且安装的是ISO中多个版本中的最低版本。 原因:(1)为什么没有装perl,perl -v可以看到版…...
使用Python可视化洛伦兹变换
引言 大家好!今天我们将探讨一个非常有趣且重要的物理概念—洛伦兹变换。它是相对论的核心内容之一,描述了在高速运动下,时间、长度以及其他物理量是如何发生变化的。通过使用 Python 进行可视化,我们不仅可以更好地理解这个概念,还能感受到物理世界中的奇妙之处。 什么…...
【二叉树专题】一道深入浅出的 DFS 题:求二叉树的直径(含通俗易懂讲解)
题目: 给你一棵二叉树的根节点,返回这棵树的 直径。 直径 是任意两个节点路径中,最长的一条路径所经过的边数。 比如下面这棵树: 1/ \2 3/ \ 4 5它的最长路径是:4 → 2 → 5 或者 4 → 2 → 1 → 3,…...
考研系列-计算机网络-第三章、数据链路层
一、数据链路层的功能 1.知识点总结 2.习题总结...
医药采购系统平台第10天02:按药品分类的统计按供货商统计按医院统计统计数据的导出DWR的配置和应用
如果想要获取相关的源码,笔记,和相关工具,对项目需求的二次开发,可以关注我并私信!!! 一 按药品分类的统计实现 1 按药品分类统计的需求 按药品统计:在指定时间段中采购量、采购金…...
Navicat、DataGrip、DBeaver在渲染 BOOLEAN 类型字段时的一种特殊“视觉风格”
文章目录 前言✅ 为什么 Boolean 字段显示为 [ ]?✅ 如何验证实际数据类型?✅ 小结 前言 看到的 deleted: [ ] 并不是 Prisma 的问题,而是数据库客户端(如 Navicat、DataGrip、DBeaver)在渲染 BOOLEAN 类型字段时的一种…...
(undone) 吴恩达版提示词工程 2. 指南
url: https://www.bilibili.com/video/BV1Z14y1Z7LJ?spm_id_from333.788.videopod.episodes&vd_source7a1a0bc74158c6993c7355c5490fc600&p2 别人的笔记 url: https://zhuanlan.zhihu.com/p/626966526 指导原则(Guidelines) 编写提示词有两个…...
VLC搭建本机的rtsp直播推流和拉流
媒体---流---捕获设备,选择摄像头,点击串流 x下一步 选择rtsp,点击添加 看到了端口,并设置路径: 选择Video -H 264 mp3(TS) 点击下一个, 点击流,就开始推流了 拉流,观看端&#x…...
Rocky Linux 9.1 修改网卡和DNS
在 Rocky Linux 9.1 中修改网卡和 DNS 配置可以通过 NetworkManager 工具实现(推荐)或直接编辑配置文件。以下是两种方法的详细步骤: 方法一:使用 nmcli 命令行工具(动态生效) 查看当前网络连接nmcli connection show # 输出示例: # NAME UUID …...
Web前端:常用的布局属性
常见的布局方式有哪些? float:浮动布局 position 定位布局 flex 弹性布局(display) table 表格布局(弃用) 一、HTML5 语义化布局标签 这些标签本身不提供布局能力,但能增强页面结构…...
XSS学习2
一、客户端的Cookie 1. 无状态的影响 无状态问题: HTTP协议的无状态特性导致每次请求都是独立的,无法保持会话。例如,在银行办理业务时,柜员不需要重复询问客户信息,但在计算机网络中,每次HTTP请求都需要重新认证用户…...
软件设计师/系统架构师---计算机网络
概要 什么是计算机网络? 计算机网络是指将多台计算机和其他设备通过通信线路互联,以便共享资源和信息的系统。计算机网络可以有不同的规模,从家庭网络到全球互联网。它们可以通过有线(如以太网)或无线(如W…...
Kubernetes(k8s)学习笔记(二)--k8s 集群安装
1、kubeadm kubeadm 是官方社区推出的一个用于快速部署 kubernetes 集群的工具。这个工具能通过两条指令完成一个 kubernetes 集群的部署: 1.1 创建一个 Master 节点$ kubeadm init 1.2 将一个 Node 节点加入到当前集群中$ kubeadm join <Master 节点的 IP 和…...
线性DP:最长上升子序列(子序列可不连续,子数组必须连续)
目录 Q1:简单遍历 Q2:变式(加大数据量) Q1:简单遍历 Dp问题 状态表示 f(i,j) 集合所有以第i个数结尾的上升子序列集合-f(i,j)的值存的是什么序列长度最大值max- 状态计算 (其实质是集合的划分)…...
SpringBoot 基本原理
SpringBoot 为我们做的自动配置,确实方便快捷,但一直搞不明白它的内部启动原理,这次就来一步步解开 SpringBoot 的神秘面纱,让它不再神秘。 目录 SpringBootApplication 背后的秘密 Configuration ComponentScan EnableAutoC…...
LeetCode第158题_用Read4读取N个字符 II
LeetCode 第158题:用Read4读取N个字符 II 题目描述 给你一个文件,并且该文件只能通过给定的 read4 方法来读取,请实现一个方法来读取 n 个字符。 read4 方法: API read4 可以从文件中读取 4 个连续的字符,并且将它…...
webgl入门实例-矩阵在图形学中的作用
矩阵在图形学中扮演着核心角色,几乎所有图形变换、投影和空间转换都依赖矩阵运算来实现高效计算。以下是矩阵在图形学中的主要作用及具体应用: 1. 几何变换 矩阵乘法可以高效表示物体的平移、旋转、缩放等基本变换,并通过矩阵连乘实现复合变…...
基于Matlab求解矩阵电容等效容值
1需求 仿真测试8*10阶举证电容等效容值。 2模型搭建 2.1打开simscape 在打开simulink之后打开simscape库,Simscape库位置如下 2.2搭建模型 在库中寻找需要的元件搭建电路。 2.2.1基本元件 电阻电容电感等基础器件,搭建电路之后需要对其进行幅值&…...
铅酸电池充电器方案EG1253+EG4321
参考: 基于EG1253EG4321铅酸电池(48V20AH)三段式充电器 屹晶微高性价比的电瓶车充电器方案——EG1253 电瓶电压 48V电瓶锂电池,其充满约为55V~56V,因此充电器输出电压为55V~56V; 若是48V铅酸电池,标称电压为48V&…...
每天学一个 Linux 命令(26):less
可访问网站查看,视觉品味拉满: http://www.616vip.cn/26/index.html less 是 Linux 中一个强大的文件内容查看工具,用于分页显示文件内容,支持快速搜索、滚动浏览、跳转等操作。相比 more,less 功能更丰富且支持向前和向后翻页,适合查看大文件或日志。 命令格式 les…...
【网络】数据链路层知识梳理
全是通俗易懂的讲解,如果你本节之前的知识都掌握清楚,那就速速来看我的笔记吧~ 自己写自己的八股!让未来的自己看懂! (全文手敲,受益良多) 数据链路层 我们来重新理解一下这个图:…...
2.2 BackgroundWorker的使用介绍
BackgroundWorker 是 .NET Framework 中一个简化异步操作的组件,它位于 System.ComponentModel 命名空间下。它为开发人员提供了一种简单的方式在后台执行耗时操作,同时保持与 UI 线程的交互 主要属性以及任务如下: DoWork 事件:…...
Java从入门到“放弃”(精通)之旅——类和对象全面解析⑦
Java从入门到“放弃”(精通)之旅🚀——类和对象全面解析⑦ 一、面向对象初探 1.1 什么是面向对象? Java是一门纯面向对象的语言(OOP),在面向对象的世界里,一切皆为对象。面向对象是解决问题的一种思想&a…...
无回显RCE
在CTF和实战渗透中,不是每一个命令执行点都有回显,有时我们审了半天代码,却发现好不容易找到的命令执行没有回显,但是这并不代表这段代码不能被我们利用,在无回显的情况下也是可以利用的 首先我们来写一个最简单的php…...
DQN在Gym的MountainCar环境的实现
DQN on MountainCar 引言 在本次实验里,我构建了DQN和Dueling DQN,并在Gymnasium库的MountainCar环境中对它们展开测试。我通过调整训练任务的超参数,同时设计不同的奖励函数及其对应参数,致力于获取更优的训练效果。最后&#…...
typescript判断是否为空
1 判断数据类型 1.1 基础数据类型 比如number,string,boolean,使用typeof,返回值是string类型: 例如: if("number" typeof(item)) {egret.log("item的类型是number"); } else if(&…...
JavaScript forEach介绍(JS forEach、JS for循环)
文章目录 JavaScript forEach 方法全面解析基本概念语法详解参数说明 工作原理与其他循环方法的比较forEach vs for循环forEach vs map 实际应用场景DOM元素批量操作数据处理 性能考量常见陷阱与解决方案无法中断循环异步操作问题 高级技巧链式调用(不使用 forEach …...
C语言之图像文件的属性
🌟 嗨,我是LucianaiB! 🌍 总有人间一两风,填我十万八千梦。 🚀 路漫漫其修远兮,吾将上下而求索。 图像文件属性提取系统设计与实现 目录 设计题目设计内容系统分析总体设计详细设计程序实现…...
Java链表反转方法详解
一、理解链表结构 假设链表节点定义为: class ListNode {int val;ListNode next;ListNode(int x) { val x; } } 二、迭代法反转链表 核心思路 逐步反转每个节点的指针方向,最终使整个链表反向。 步骤拆解 初始化三个指针: prev…...
lmm-r1开源程序是扩展 OpenRLHF 以支持 LMM RL 训练,用于在多模态任务上重现 DeepSeek-R1
一、软件介绍 文末提供程序和源码下载学习 lmm-r1开源程序是扩展 OpenRLHF 以支持 LMM RL 训练,用于在多模态任务上重现 DeepSeek-R1。 二、简介 小型 3B 大型多模态模型(LMMs)由于参数容量有限以及将视觉感知与逻辑推理相结合的固有复杂性…...
Java学习笔记(数组,方法)
一,数组 1.数组初始化 1.1动态初始化 格式:数据类型[] 数组名 new 数据类型[数组长度]; int[] arr new int[3]; // 定义长度为3的int数组,元素默认值为0 double[] scores new double[5]; // 长度5,元素默认0.0 String[…...
嵌入式---零点漂移(Zero Drift)
一、零点漂移的定义与本质 零点漂移(简称“零漂”)指传感器在输入信号为零(或理论上应输出固定零值)时,输出信号随时间、温度、环境等因素变化而偏离初始零点的现象。 核心特征:无输入时输出非零且缓慢变…...
健身房管理系统设计与实现(springboot+ssm+vue+mysql)含万字详细文档
健身房管理系统设计与实现(springbootssmvuemysql)含万字详细文档 健身房管理系统是一个全面的解决方案,旨在帮助健身房高效管理日常运营。系统主要功能模块包括个人中心、会员管理、员工管理、会员卡管理、会员卡类型管理、教练信息管理、解聘管理、健身项目管理、…...
C语言if
一、题目引入 如果从键盘输入58,则以下程序输出的结果是多少? 二、运行结果 三、题目分析 因为这道题中的多个if是并列结构 所以只要条件满足都会执行 这一题58满足所有的条件 所以可以运行出来 也就是说每个if里面的条件都满足 所以都会打印出来 而下面的这种情况就是 if e…...
XSS学习1之http回顾
1. HTTP的基本结构与工作流程 HTTP是一个请求-响应协议,基于客户端与服务器之间的交互。每次用户通过浏览器请求某个资源时,HTTP协议都会完成一系列的步骤。 HTTP请求: HTTP请求由以下几个部分构成: 请求行: 请求方…...
小迪抓包技术算法加密(6-9天)
抓包技术 https://blog.csdn.net/2301_81015455/article/details/147014382 算法加密入门(了解) 在实际测试中安全性高一些得采用得都是AES等高安全加密,遇到这种,放弃你啥都不知道测个毛啊,所以直接run!!! 大部分解密时碰撞式…...
Tkinter与ttk模块对比:构建现代 Python GUI 的进化之路
在 Python GUI 开发中,标准库 tkinter 及其子模块 ttk(Themed Tkinter)常被同时使用。本文通过功能对比和实际案例,简单介绍这两个模块的核心差异。 1. 区别 Tkinter:Python 标准 GUI 工具包(1994年集成&…...
【数据结构入门训练DAY-18】信息学奥赛一本通T1331-后缀表达式的值
文章目录 前言一、题目二、解题思路总结 前言 本次训练内容: 栈的复习。栈模拟四则运算计算问题的练习。训练解题思维。 一、题目 从键盘读入一个后缀表达式(字符串),只含有0-9组成的运算数及加()、减…...
时序预测 | Transformer-LSTM-SVM时间序列预测(Matlab完整源码和数据,适合基础小白研究)
时序预测 | Transformer-LSTM-SVM时间序列预测(Matlab完整源码和数据,适合基础小白研究) 目录 时序预测 | Transformer-LSTM-SVM时间序列预测(Matlab完整源码和数据,适合基础小白研究)效果一览基本介绍代码…...
【HarmonyOS 5】makeObserved接口详解
【HarmonyOS 5】makeObserved接口详解 一、makeObserved接口是什么? makeObserved 接口(API version 12 起可用)用于将非观察数据转为可观察数据,适用于三方包类、Sendable 装饰的类、JSON.parse 返回的对象、collections.Array…...