解决GPT-4o耗电难题!DeepMind新算法训练效率提升13倍,能耗降低10倍!

目录

01 有更好的解决方案吗?

02 从“超级batch”中筛选数据

03  技术介绍

04 实验结果

生成可学习batch



谷歌DeepMind推出的新算法JEST,将LLM训练的迭代次数减少了13倍,计算量降低了10倍,有望重塑AI未来。

GPT-4o早已成为耗能巨头:一天耗电超过50万度,相当于1.7万个美国家庭的用电量!



然而,大模型对能源的消耗不仅如此。

国际能源署(IEA)预测,从2022年到2026年,数据中心的用电量将翻倍。


随着AI计算需求的增加,还需要用水来冷却计算系统。

研究表明,微软的用水量从2021年到2022年增加了34%,ChatGPT每处理5-50个提示就会消耗接近半升水。


没体验过OpenAI最新版GPT-4o?快戳最详细升级教程,几分钟搞定:
升级ChatGPT-4o Turbo步骤icon-default.png?t=N7T8https://www.zhihu.com/pin/1768399982598909952

如何使用WildCard正确方式打开GPT-4o,目前 WildCard 支持的服务非常齐全,可以说是应有尽有!

官网有更详细介绍:WildCard


01 有更好的解决方案吗?



最近,谷歌DeepMind研究团队提出了一种加快AI训练的新方法——多模态对比学习与联合示例选择(JEST),大大减少了所需的计算资源和时间。

论文地址:https://arxiv.org/pdf/2406.17711



JEST以13倍更少的迭代次数和10倍更少的计算量,超越了最先进的模型!

预训练的参考模型已经学会了哪些数据是优质或有用的,然后通过模型引导选择这些精心筛选的小型数据集。



这一发现揭示了数据筛选水平可以作为评判Scaling Law的新维度。

网友激动地表示,“我没想到这么快就会发生。

模型能够自主选择训练数据的能力是巨大的,因为它使训练变得显著更容易,你不再需要猜测什么是高质量的训练数据,你有一个能够‘理解’什么样的数据对自身学习最有价值的模型”。
 

02 从“超级batch”中筛选数据



无论是语言、视觉还是多模态模型,数据质量是预训练性能的重要驱动因素。

例如Phi-3、Gemma 2等模型的成功表明,更少、更高质量的数据可能实现更强大的性能。

要筛选出高质量的数据,数据管道的建立变得尤为重要。

现有的方法主要有两种:

1)手动管理

2)基于模型的数据管理,用正在训练模型的特征选择高质量数据。



前者成本高昂且难以扩展,后者则有望为多模态LLM实现Scaling Law。
然而,现有方法忽略了一个事实。

如果仅在单个数据点的层面进行筛选,就没有考虑到数据集以及batch的总体组成。毕竟,训练数据是以batch为单位,数据点之间的依赖性不可忽视。

许多计算机视觉研究表明,相比可被平凡解的数据簇,hard negatives(表达空间中相近但标签不同的样本)能提供更有效的学习信号。

那么如何让模型以batch为单位筛选数据呢?

论文提出的JEST算法正是为了解决这个问题,原理很简单:直接从“超级batch”中筛选出“子batch”。

03  技术介绍

用数学语言描述这个问题,就是从大小为B的“超级batch”𝒟中提取出与学习最相关的子batch ℬ={𝒙𝑖,𝑖∈[1,…,𝑏]}⊂𝒟,过滤比率可以写作𝑓=1−𝑏/𝐵。

之前的优先采样(prioritized sampling)使用基于模型的评分函数对每个数据点打分,再按比例采样。JEST则直接对整个子batch评分,再按照batch级别的分数采样。

一种直观的启发式方法是直接选择损失值最高的batch,这种方法可称为“硬学习”(hard learner)。

这种方法具有丢弃琐碎数据的理想属性,适用于小型、干净的数据集;但对于较大、较少管理的数据集可能不太适用,因为它仍然会采样到噪声数据。

另一种方法常用于多模态,使用具有参数 𝜃∗:𝑠^easy⁢(ℬ|𝜃∗)=−ℓ⁢(ℬ|𝜃∗) 的参考模型为预训练模型采样数据。但作者否定了这个方案,因为它无法直接反映模型当前的状态,可能过度依赖参考模型的选择,不易扩展。

最后,论文选择结合ICML 2022年一篇论文中的方法,将上述两方面的评分结合起来:𝑠^learn⁢(ℬ|𝜃,𝜃∗)=𝑠hard⁢(ℬ|𝜃)+𝑠^easy⁢(ℬ|𝜃∗)=ℓ⁢(ℬ|𝜃)−ℓ⁢(ℬ|𝜃∗),并将这种启发式方法称为“可学习性评分”(learnability score)。

其中,batch上的损失值ℓ⁢(ℬ|𝜃)是各数据点之和,使用sigmoid对比损失函数计算(sigmoid-contrastive loss),相比softmax对比损失具有更强的扩展性。

由于batch上的对比损失可以分解为每个样本的条件损失之和,因此可学习性评分可被分解为单个样本可学习性评分𝑠⁢(𝒙|𝜃,𝜃∗,ℬ)之和,写作:

使用的顺序采样方法则受到了block Gibbs采样的启发。在第n次迭代、对第B_n个batch进行采样时,依据如下概率公式对块{X_k}进行无替换采样:

将X_k块添加到B_n中来更新当前采样的batch,直至迭代数n=N时终止。算法的总体流程如下图所示:

实验发现,在使用迭代数N=16且每次迭代独立采样b/N=2048个样本时,便可恢复出具有高度学习性的batch。

可学习性评分需要使用参考模型为数据点打分,之前的方法常用额外的小型模型,但这会增加每次迭代的计算成本,降低整体的FLOP效率增益。

因此,论文采用了在线模型近似的方法和高效的FlexiViT架构,仅使用32×32分辨率的patch来评估“超级batch”,与全分辨率、16×16 patch的方法相比,减少了72%的FLOP和67%的挂钟时间(wall-clock time)。

此外,论文还提出了多分辨率训练的技巧。将每个batch随机分成两半,使用不同分辨率编码后再拼接,提升了评分过程和训练的效率。

下图详细描述了全分辨率JEST和多分辨率FlexiJEST方法的伪代码实现:

04 实验结果


图1展示了使用JEST或FlexiJEST方法后效率的显著提升。

左图显示,JEST++在训练数据量减少13.1倍的情况下,仍能达到与原有SigLIP基线模型相同的准确率。

即使考虑到额外引入的评分成本,JEST++在浮点运算次数(FLOP)上也提升了近10倍(中图)。

右图对比了JEST++/FlexiJEST++(绿色)与之前的方法(灰色),相较于经典模型CLIP和EVA-CLIP,JEST++/FlexiJEST++在计算成本和性能上都实现了双重提升。

生成可学习batch

研究人员首先评估了JEST在选择可学习batch方面的效果。

为了直观理解这一方法,作者们将可学习性矩阵进行了可视化,即展示学习模型和参考模型之间,对batch中所有示例对的损失差异。

JEST按照示例子矩阵的可学习性总和比例进行采样。

由于矩阵明显非对角关系(图2,左),独立选择显然是次优的。

经过少量迭代(使用N=16个块填充batch),作者发现子batch的可学习性快速增加,达到了需要数千次迭代的暴力吉布斯采样(Gibbs sampling)才能提取到的可学习性(图2,中)。

对于0.5、0.8和0.9的过滤比例,他们从大小分别为65,536、163,840和327,680的超级batch中选择32,768个示例的子batch。

在图2右侧,研究者还发现子batch的可学习性随着更大过滤比例的增加而提高。

总之,JEST算法是在训练过程中选择高度可学习batch的一种有效且高效的方法。


如何使用WildCard正确方式打开GPT-4o,目前 WildCard 支持的服务非常齐全,可以说是应有尽有!

官网有更详细介绍:​​​​​WildCard

推荐阅读:

GPT-4o不仅能写代码,还能自查Bug,程序员替代进程再进一步!

GPT-4替代大学生参加考试,94%成功作弊未被发现!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/781842.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python破解字母已知但大小写未知密码

python穷举已知字符串中某个或多个字符为大写的所有情况 可以使用递归函数来实现这个功能。以下是一个示例代码: def generate_uppercase_combinations(s, index0, current):if index len(s):print(current)returngenerate_uppercase_combinations(s, index 1, …

Debezium报错处理系列之第109篇:解决升级日志解析jar包重启集群出现的字段类型和值不匹配的错误

Debezium报错处理系列之第109篇:解决升级日志解析jar包重启集群出现的字段类型和值不匹配的错误 一、完整报错二、错误原因三、解决方法Debezium从入门到精通系列之:研究Debezium技术遇到的各种错误解决方法汇总: Debezium从入门到精通系列之:百篇系列文章汇总之研究Debezi…

Educational Codeforces Round 167 (Rated for Div. 2)(A~C)题解

A. Catch the Coin 解题思路: 最终&#x1d465;一定会相等&#xff0c;我们考虑直接到下面接住他。 #include<bits/stdc.h> using namespace std; typedef long long ll; #define N 1000005 ll dp[N], w[N], v[N], h[N]; ll dis[1005][1005]; ll a, b, c, n, m, t; ll…

【数据结构与算法】希尔排序

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;《数据结构与算法》 期待您的关注 ​

CH552G使用的pwm出现的问题,及设置

输出pwm的频率周期很不准确 可能是因为没有外部晶振的稳定晶振周期有关。 使用的示波器出现操作失误 在使用小型示波器的过程中发现集成了信号发生器和示波器的连接端口是不同的。刚开始把示波器测试口错插入了信号发生器的接口&#xff0c;困扰好一会儿&#xff0c;幸好用一…

人工智能、机器学习、神经网络、深度学习和卷积神经网络的概念和关系

人工智能&#xff08;Artificial Intelligence&#xff0c;缩写为AI&#xff09;--又称为机器智能&#xff0c;是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。 人工智能是智能学科重要的组成部分&#xff0c;它企图了解智能的实质…

浅谈进程隐藏技术

前言 在之前几篇文章已经学习了解了几种钩取的方法 浅谈调试模式钩取浅谈热补丁浅谈内联钩取原理与实现导入地址表钩取技术 这篇文章就利用钩取方式完成进程隐藏的效果。 进程遍历方法 在实现进程隐藏时&#xff0c;首先需要明确遍历进程的方法。 CreateToolhelp32Snapsh…

区块链技术如何改变供应链管理?

引言 供应链管理在现代商业中扮演着至关重要的角色&#xff0c;确保产品和服务从原材料到最终消费者的顺利流转。然而&#xff0c;当前的供应链管理面临诸多挑战&#xff0c;如信息不透明、数据篡改和效率低下等问题&#xff0c;这些问题严重制约了供应链的整体效能和可信度&am…

Go:hello world

开启转职->Go开发工程师 下面是我的第一个go的程序 在上面的程序介绍&#xff1a; 1、package main 第一行代码package main定义了包名。必须在源文件中非注释的第一行指明这个文件属于哪个包&#xff0c;如&#xff1a;package main。package main表示一个可独立执行的程…

acwing 291.蒙德里安的梦想

解法&#xff1a; 核心&#xff1a;先放横着的&#xff0c;再放竖着的。 总方案数&#xff0c;等于只放横着的小方块的合法方案数。 如何判断当前方案是否合法&#xff1f;所有剩余位置&#xff0c;能否填充满竖着的小方块。 即按列来看&#xff0c;每一列内部所有连续的空着的…

DoIP-1 简介

1. 概述 DoIP-Diagnostic Over Internet Protocol &#xff0c;基于TCPIP协议族的诊断传输协议 DoIP国际标准定义为ISO 13400&#xff0c;总共由五部分组成&#xff1a;  ISO13400-1DoIP的综述  ISO13400-2DoIP的传输层和网络层服务&#xff08;主体部分&#xff09;  I…

JavaSe系列二十七: Java正则表达式

正则表达式 为什么要学习正则表达式再提几个问题解决之道-正则表达式正则表达式基本介绍介绍 正则表达式底层实现实例分析 正则表达式语法基本介绍元字符-转义号 \\\\元字符-字符匹配符元字符-选择匹配符元字符-限定符元字符-定位符分组非贪婪匹配 应用实例对字符串进行如下验证…

【c++刷题笔记-数组】day29:452. 用最少数量的箭引爆气球、 435. 无重叠区间 、 763.划分字母区间

452. 用最少数量的箭引爆气球 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a;先按照左边界排序&#xff0c;当前的左边界大于前一个的右边界的时候&#xff0c;表示没有覆盖所以需要一根箭&#xff0c;反之则要更新为最小的右边界 重点&#xff1a;是区间覆盖问题…

webrtc gcc详解

webrtc的gcc算法(Google Congestion Control)&#xff0c;貌似国内很多文章都没有细讲&#xff0c;原理是怎么样的&#xff0c;具体怎么进行计算的。这里详解一下gcc。 gcc算法&#xff0c;主要涉及到&#xff1a; 拥塞控制的关键信息和公式 卡曼滤波算法 gcc如何使用卡曼滤…

JavaScript 原型链那些事

在讲原型之前我们先来了解一下函数。 在JS中&#xff0c;函数的本质就是对象&#xff0c;它与其他对象不同的是&#xff0c;创建它的构造函数与创建其他对象的构造函数不一样。那产生函数对象的构造函数是什么呢&#xff1f;是一个叫做Function的特殊函数&#xff0c;通过newFu…

Python从入门到放弃——深入研究Print函数

深入浅出Print函数 第一个代码“Hello World” 在正常配置了PyCharm或者Thonny等编辑器之后&#xff0c;我们开始写第一个代码。正常的情况下学习一门编程语言&#xff0c;一般第一个代码都是输出Hello World。那么如何打印Hello World呢&#xff1f; print("Hello Wor…

第六十八回 东平府误陷九纹龙 宋公明义释双枪将-文心大模型ernie-speed免费使用方法

宋江和卢俊义抓阄儿&#xff0c;宋江打东平府&#xff0c;卢俊义打东昌府&#xff0c;谁先打下谁做梁山泊主。宋江带领林冲、花荣、刘唐等二十八人&#xff0c;卢俊义带领吴用、公孙胜、关胜等二十八人。 宋江等人到了东平府外安山镇&#xff0c;郁保四和王定六自告奋勇去下战…

io流 多线程

目录 一、io流 1.什么是io流 2.流的方向 i.输入流 ii.输出流 3.操作文件的类型 i.字节流 1.拷贝 ii.字符流 ​3.字符流输出流出数据 4.字节流和字符流的使用场景 5.练习 6.缓冲流 1.字节缓冲流拷贝文件 2.字符缓冲流特有的方法 1.方法 2.总结 7.转换流基本用法…

掌握MySQL基础命令:数据更新操作详细操作(数据的增删改)

MySQL数据修改是指使用SQL语句&#xff08;如UPDATE、INSERT、DELETE&#xff09;对数据库表中的数据进行更改、添加或删除的操作&#xff0c;常见的操作包括更新表中的记录、插入新记录以及删除现有记录 。 一、数据插入 1插入完整的数据记录 2插入非完整的数据记录 3插入多…

Vulkan 学习(1)---- Vulkan 基本概念和发展历史

目录 Vulkan及其演化史Vulkan 基本概念基本术语 Vulkan 的原理Vulkan应用程序Vulkan的编程模型硬件初始化窗口展示表面资源设置流水线设置描述符和描述符缓冲池基于SPIR-V的着色器流水线管理指令的记录队列的提交 Vulkan及其演化史 目前主流的图形渲染API有OpenGL、OpenGL ES、…