DeepMind研究成本大起底,一篇ICML论文烧掉1290万美元

DeepMind研究成本大起底,一篇ICML论文烧掉1290万美元

DeepMind研究成本大起底,一篇ICML论文烧掉1290万美元

2024年08月03日 18:13

发一篇顶会论文,需要多少实验预算?

最近,DeepMind发表了一项研究,对LLM扩大规模时各种算法和架构细节,比如参数和优化器的选择,进行了广泛的实证调查。

这篇论文已被ICML 2024接收。

www.zeeklog.com  - DeepMind研究成本大起底,一篇ICML论文烧掉1290万美元

论文地址:https://arxiv.org/abs/2407.05872

63页的论文涵盖了数以万计的模型,备选方案包括3种优化器、4种参数化方案、几种对齐假设、十多个学习率,以及最高达26.8B的14种参数规模。

www.zeeklog.com  - DeepMind研究成本大起底,一篇ICML论文烧掉1290万美元

需要进行实验的4种参数化方案

仅仅听到这些数字,就不难知道,这项研究必定涉及海量的模型运行实验。

而有一位忠实读者,为了测试自己对论文内容的理解,统计了其中进行的所有实验,并估算出了复现论文的成本。

www.zeeklog.com  - DeepMind研究成本大起底,一篇ICML论文烧掉1290万美元

将所需算力全部加在一起,林林总总,居然达到了惊人的1290万美元。

考验基本功的时刻到了,假如你是研究团队的leader,根据实验计划对所需算力和成本进行预估是一项必不可少的技能。

那就让我们跟着这篇博客文章盘一遍,这一千多万美元,究竟烧在哪里。

Transformer架构信息

论文附录C提供了关于模型算法和架构的各种细节设置,比如使用decoder-only架构、层归一化、GeLU激活函数、无dropout、T5分词器、批大小为256、用FSDP并行等等。

www.zeeklog.com  - DeepMind研究成本大起底,一篇ICML论文烧掉1290万美元

实验模型的参数规模统计

通过架构方面的信息,我们可以大致估算出训练中每个token所需的FLOPS,记为M。

由于论文没有描述到任何GQA/MQA机制,所以就假设Rkv=1,此外还有lseq=512,Dhead=128,L=8(深度),V=32101(分词器词汇量)。

模型总参数量可以表示为:

www.zeeklog.com  - DeepMind研究成本大起底,一篇ICML论文烧掉1290万美元

因此,就可以得到M的计算公式:

www.zeeklog.com  - DeepMind研究成本大起底,一篇ICML论文烧掉1290万美元

默认情况下,每次实验处理的token数(tokens per experiment, TPE)为5k(训练步数)×256(批大小)×512(lseq),约为6.5536e9。

def M(d: int, L=8, l_seq=512, V=32101) -> int:
    return 6*d * (L*(12*d + l_seq) + V)
TPE = 50000 * 256 * 512

对齐实验

假设对齐实验中,直接使用了后面的学习率扫描得出的最优结果,并没有单独进行学习率扫描,因此这一步的成本计算比较简单:

www.zeeklog.com  - DeepMind研究成本大起底,一篇ICML论文烧掉1290万美元
def alignment() -> int:
    return 4 * TPE * sum(M(d) for d in [1024,2048,4096])
# >>> f'{alignment():.3E}'
# '3.733E+20'
# >>> cost_of_run(alignment())[0]
# 888.81395400704

如果H100每运行1小时的花费以3美元计算,对齐实验的成本大致为888美元。

学习率

子问题:最佳评估损失(eval loss)实验

论文的表E1记录了6种模型规模下,所有可能的优化器×参数化方案×模型大小×实验设置的组合,分别进行基础学习率扫描,以获得最佳评估损失。

www.zeeklog.com  - DeepMind研究成本大起底,一篇ICML论文烧掉1290万美元

总共包括如下几个实验变量:

- 模型维度D∈3072,4096,6144,8192,12288,16384

- 4种参数化方案

- 3种优化器,其中SGD仅有5个实验设置,Adam和Adam+Param Scaling有7个实验设置

假设这里的实验都是单独进行,没有从其他地方复制结果,因此如果全部运行一遍,有成本上限预估:

www.zeeklog.com  - DeepMind研究成本大起底,一篇ICML论文烧掉1290万美元
H = [1,2,4,6,8,12,16,20,24,32,48,64,96,128]
D = [h * 128 for h in H]
def table_e1() -> int:
  sets_x_optims = 5 + 7 + 7
  return 4 * sets_x_optims * TPE * sum(M(d) for d in D[-6:])
# >>> f'{table_e1():.3E}';cost_of_run(table_e1())
# '1.634E+23'
# (388955.9991064986, 16206.499962770775)

这部分的成本就接近40万美元,虽然仍属于可接受范围内,但对于大多数学术预算来说,已经算是非常昂贵了。

表E1给出了最佳评估损失,但没有描述LR的扫描策略,每张图上的点数也不尽相同。

www.zeeklog.com  - DeepMind研究成本大起底,一篇ICML论文烧掉1290万美元

由于没有得到论文作者的答复,我们也无法确定具体机制,因此假设每个最佳评估损失都经过了15次实验(目测发现,每条线的点数约为10~15)。

β参数

根据论文4.2节内容,学习率还涉及到两个超参数的选择:β和γ。

www.zeeklog.com  - DeepMind研究成本大起底,一篇ICML论文烧掉1290万美元

如果仅有β参数,则被称为「LR+default」设置:

www.zeeklog.com  - DeepMind研究成本大起底,一篇ICML论文烧掉1290万美元

这部分包括3×优化器,4×参数化,加上全局和单层(GlobalLR、Perlayer-fullalign)分别进行实验,以及未知的LR扫描数量:

www.zeeklog.com  - DeepMind研究成本大起底,一篇ICML论文烧掉1290万美元
def beta_only() -> int:
  return 3*4*2*PpL * TPE * sum(M(d) for d in D)
# 7.988E+23 (1902022.3291813303, 79250.93038255542)

从公式就可以看出,成本和下文的epsilon实验类似,都是200万美元。

γ参数

相比β参数的实验,这部分有两个细节差异。

首先,除了GlobalLR、Perlayer-fullalign两种设置外,还需要加上Perlayer-noalign设置。

www.zeeklog.com  - DeepMind研究成本大起底,一篇ICML论文烧掉1290万美元

其次,仅针对d=1024=b,进行3D超参数搜索(γ_1,γ_h,γ_L+1),因此有额外的800次运行。

www.zeeklog.com  - DeepMind研究成本大起底,一篇ICML论文烧掉1290万美元

两者结合后的计算公式为:

www.zeeklog.com  - DeepMind研究成本大起底,一篇ICML论文烧掉1290万美元

这部分的预估成本与Adam的epsilon热力图实验接近,约为320万美元。

def gamma_expts() -> int:
  return 36*TPE * (800*M(1024) + PpL*sum(M(d) for d in D))
# gamma_expts 1.354E+24 (3224397.534237257, 134349.8972598857)

Adam优化器的Epsilon参数

论文4.3节所述的Epsilon参数实验是计算量的大头。

www.zeeklog.com  - DeepMind研究成本大起底,一篇ICML论文烧掉1290万美元
www.zeeklog.com  - DeepMind研究成本大起底,一篇ICML论文烧掉1290万美元

根据上面的推断,每次找到最佳评估损失时都尝试过15个不同的学习率(points per line),那么图6所示的epsilon参数变化图耗费的计算量为:

www.zeeklog.com  - DeepMind研究成本大起底,一篇ICML论文烧掉1290万美元

计算结果透露出一种简洁的昂贵,也就是200万美元的账单而已。

PpL = 15 # unprincipled estimate
def eps_variants() -> int:
  return 4 * 6 * PpL * TPE * sum(M(d) for d in D)
'''
>>> f'{eps_variants():.3E}';cost_of_run(eps_variants())
'7.988E+23'
(1902022.3291813303, 79250.93038255542)
'''

除了图6左侧的折线图,还有附录F热力图的结果。

www.zeeklog.com  - DeepMind研究成本大起底,一篇ICML论文烧掉1290万美元

假设每个方块值都是经过13次学习率扫描后得到的结果,这部分计算量则为:

www.zeeklog.com  - DeepMind研究成本大起底,一篇ICML论文烧掉1290万美元

结果发现,仅仅要得到这8张热力图,成本就是320万美元。而且,由于我们将LR扫描数量建模为常数13,这个数字可能低于实际成本。

def eps_heatmaps() -> int:
  # eps-type * eps-val * parameterizations * LR range * ...
  return 2 * 6 * 4 * 13 * TPE * sum(M(d) for d in D[-6:])
'''
>>> f'{eps_heatmaps():.3E}';cost_of_run(eps_heatmaps())
'1.341E+24'
(3193533.466348094, 133063.89443117057)
'''

权重衰减

权重衰减实验(附录G)比较好理解,对4×参数化方案以及所有参数进行一次基本的LR扫描:

www.zeeklog.com  - DeepMind研究成本大起底,一篇ICML论文烧掉1290万美元

比epsilon实验便宜不少,也就是湾区工程师一年的工资——31.7万美元。

def weight_decay() -> int:
  return 4 * PpL * TPE * sum(M(d) for d in D)
'''
>>> f'{weight_decay():.3E}'; cost_of_run(weight_decay())
'1.331E+23'
(317003.7215302217, 13208.488397092571)
'''

Adafactor优化器

这部分实验在附录C3中有详细描述,是为了检验Adafactor和Adam+parameter scaling是否有相似的宽度缩放机制。

www.zeeklog.com  - DeepMind研究成本大起底,一篇ICML论文烧掉1290万美元

共有2×4张图,其中每个优化器收集11个数据点,因此计算公式为:

www.zeeklog.com  - DeepMind研究成本大起底,一篇ICML论文烧掉1290万美元

账单上再加18.8万美元。

def adafactor() -> int:
  return 2*2*4*PpL*TPE*sum(M(d) for d in D[:11])
'''
>>> f'{adafactor():.3E}'; cost_of_run(adafactor())
'7.918E+22'
(188532.80765144504, 7855.533652143543)
'''

计算最优化

论文尝试改变注意力头H的数量,希望找到计算最优化的设置,但其中涉及步长和数据集的改变,因此这部分不使用公式描述,计算代码如下:

def P(d: int, L=8, V=32101) -> int:
    return 2 * d * (6*L*d + V)

def compute_optimal():
  indices_50k = (14, 14, 12)
  return 4*PpL*sum([
    TPE * sum(sum( M(d) for d in D[:i] ) for i in indices_50k),
        20  * sum(P(d)*M(d) for d in D[:11]) *3,
  ])
# compute_optim 7.518E+23 (1790104.1799513847, 74587.67416464102)

总结

将以上各部分实验的算力和成本汇总在一起:

alignment       3.733E+20 (888.81395400704, 37.033914750293334)
table_e1        1.634E+23 (388955.9991064986, 16206.499962770775)
eps_variants    7.988E+23 (1902022.3291813303, 79250.93038255542)
eps_heatmaps    1.341E+24 (3193533.466348094, 133063.89443117057)
beta_only       7.988E+23 (1902022.3291813303, 79250.93038255542)
gamma_expts     1.354E+24 (3224397.534237257, 134349.8972598857)
weight_decay    1.331E+23 (317003.7215302217, 13208.488397092571)
adafactor       7.918E+22 (188532.80765144504, 7855.533652143543)
compute_optim   7.518E+23 (1790104.1799513847, 74587.67416464102)

结果发现,整篇论文的运算量为5.42e24 FLOPS。

这个数字仅仅是Llama 3训练计算量的15%,如果在10万卡H100集群上运行,只需要2天时间即可完成所有实验。

total_flops=5.421E+24
rental price: US$12.9M
h100 node months required: 746.9595590938408

(sanity check) D=[128, 256, 512, 768, 1024, 1536, 2048, 2560, 3072, 4096, 6144, 8192, 12288, 16384]
(sanity check) model sizes: ['0.00979B', '0.0227B', '0.058B', '0.106B', '0.166B', '0.325B', '0.534B', '0.794B', '1.1B', '1.87B', '4.02B', '6.97B', '15.3B', '26.8B']
(sanity check) M/6P: ['63.4%', '68.5%', '75.3%', '79.7%', '82.8%', '86.8%', '89.3%', '91.0%', '92.2%', '93.9%', '95.7%', '96.7%', '97.7%', '98.3%']

然而,如果不从LLM预训练的标准来衡量,仅把DeepMind的这篇论文看做一篇学术研究,这个计算量就显得相当奢侈了。

如果实验室仅有10张H100,就根本不可能进行这个量级的研究。

有100张H100的大型实验室,或许能用几年时间跑完以上所有实验。

参考资料:

https://152334h.github.io/blog/scaling-exponents/

https://news.ycombinator.com/item?id=41107721

https://arxiv.org/abs/2407.05872

Read more

60个“特征工程”计算函数(Python代码)

60个“特征工程”计算函数(Python代码)

转自:coggle数据科学 近期一些朋友询问我关于如何做特征工程的问题,有没有什么适合初学者的有效操作。 特征工程的问题往往需要具体问题具体分析,当然也有一些暴力的策略,可以在竞赛初赛前期可以带来较大提升,而很多竞赛往往依赖这些信息就可以拿到非常好的效果,剩余的则需要结合业务逻辑以及很多其他的技巧,此处我们将平时用得最多的聚合操作罗列在下方。 最近刚好看到一篇文章汇总了非常多的聚合函数,就摘录在下方,供许多初入竞赛的朋友参考。 聚合特征汇总 pandas自带的聚合函数 * 其它重要聚合函数 其它重要聚合函数&分类分别如下。 def median(x):     return np.median(x) def variation_coefficient(x):     mean = np.mean(x)     if mean != 0:         return np.std(x) / mean     else:         return np.nan def variance(x):     return

By Ne0inhk
90w,确实可以封神了!

90w,确实可以封神了!

要说24年一定最热的技术,还得是AIGC! 前段时间阿里旗下的开源项目,登上GitHub热榜! AI大热,如今ChatGPT的优异表现,必然会出现各种细分场景应用的工具软件,和大量岗位项目! 山雨欲来风满楼,强人工智能的出现,所有科技公司已经开始巨量扩招此领域的人才。算法的岗位,近三个月已经增长68%!这件事在HR届也是相当震撼的。 目前各行各业都不景气的市场,人工智能岗位却一直保持常青!甚至同属AI边缘岗都比其他岗薪资高40%! 与此同时,AI算法岗上岸也不简单,竞争激烈,好公司核心岗位不用说,谁都想去。 所以事实就是,想要上岸,门槛也逐渐变高,项目经历、实习经历都很重要,越早明白这个道理就越能提前建立起自己的优势。 但我在b站逛知识区的时候,经常看到有些同学,因为一些客观原因导致无法参加实习,这种情况下,如果你想提升背景,增加项目经历的话,可以试试这个《CV/NLP 算法工程师培养计划》。 目前已经有上千位同学通过该计划拿到offer了,最新一期学员就业薪资最高能拿到78K!年薪94w! 优势就是有BAT大厂讲师带领,手把手带做AI真实企业项目(包含CV、NLP等

By Ne0inhk
再见nohup!试试这个神器,Python Supervisor!

再见nohup!试试这个神器,Python Supervisor!

👇我的小册 45章教程:() ,原价299,限时特价2杯咖啡,满100人涨10元。 作者丨Ais137 https://juejin.cn/post/7354406980784373798 1. 概述 Supervisor 是一个 C/S 架构的进程监控与管理工具,本文主要介绍其基本用法和部分高级特性,用于解决部署持久化进程的稳定性问题。 2. 问题场景 在实际的工作中,往往会有部署持久化进程的需求,比如接口服务进程,又或者是消费者进程等。这类进程通常是作为后台进程持久化运行的。 一般的部署方法是通过 nohup cmd & 命令来部署。但是这种方式有个弊端是在某些情况下无法保证目标进程的稳定性运行,有的时候 nohup 运行的后台任务会因为未知原因中断,从而导致服务或者消费中断,进而影响项目的正常运行。 为了解决上述问题,通过引入 Supervisor 来部署持久化进程,提高系统运行的稳定性。 3. Supervisor 简介 Supervisor is a client/

By Ne0inhk
第一本给程序员看的AI Agent图书上市了!

第一本给程序员看的AI Agent图书上市了!

AI Agent火爆到什么程度? OpenAI创始人奥特曼预测,未来各行各业,每一个人都可以拥有一个AI Agent;比尔·盖茨在2023年层预言:AI Agent将彻底改变人机交互方式,并颠覆整个软件行业;吴恩达教授在AI Ascent 2024演讲中高赞:AI Agent是一个令人兴奋的趋势,所有从事AI开发的人都应该关注。而国内的各科技巨头也纷纷布局AI Agent平台,如:钉钉的AI PaaS、百度智能云千帆大模型平台等等。 Agent 是未来最重要的智能化工具。对于程序员来说,是时候将目光转向大模型的应用开发了,率先抢占AI的下一个风口AI Agent。 小异带来一本新书《大模型应用开发 动手做 AI Agent》,这本书由《GPT图解》的作者黄佳老师创作,从0到1手把手教你做AI Agent。现在下单享受5折特惠! ▼点击下方,即可5折起购书 有这样一本秘籍在手,程序员们这下放心了吧,让我们先来揭开 Agent 的神秘面纱。 AI Agent 面面观

By Ne0inhk