老板:来人啊,给我整一个20万亿参数Transformer的GPT-4?!

大数据文摘

共 3121字,需浏览 7分钟

 ·

2020-08-17 20:52

大数据文摘出品
来源:Reddit
编译:赵吉克、Andy

最近老板看阿伦工作不饱和,天天摸鱼,就走过来悄咪咪地说:“阿伦啊,听说最近GPT-3不错,你也给咱们也整一个出来吧。”
 
阿伦号称有求必应:“好,老板我先试试。这玩意儿和GPT-2就没啥区别,模型大了些,数据多了些而已。”
 
老板一听开心得合不拢腿,一拍手:“就这玩意儿?那干脆咱们直接整个GPT-4吧,资源管够。做得好,还给你发论文。”
 
接着拍拍阿伦的后背,说:“小伙砸,好好干!”哼着小曲迈着轻快地步伐离开,心中想着又解决了一个工作不饱和问题。
 
于是老实的阿伦,就这样开始了GPT-4训练之路。

作为一个优秀的算法工程师,他需要先计算一下需要的资源。
 
阿伦首先找来了这篇论文ZeRO: Memory Optimizations Toward Training Trillion Parameter Models,大致能描述GPT-3怎么从GPT-2来,也就是如何从150亿级增加到了1750亿级参数,训练方面相关。
论文链接:
https://arxiv.org/abs/1910.02054
 
阿伦想,只要知道了GPT-2到GPT-3,那么照葫芦画瓢,就可以从GPT-3到GPT-4了,我简直就是天才。一个优秀的工程师就是这么擅长用类比原则,春天种下一颗种子秋天收获一百颗种子,春天种下一个女朋友秋天树上就能长出一百个女朋友。
 

内存


先来看看内存方面吧。

基础数据并行(DP)并不能减少每张GPU卡上占的内存,而现有32GB内存GPU上,基本参数超过14亿就放不下了。
 
论文中提到一个关键词,内存优化(memory optimizations),只要通过对优化器状态、梯度进行巧妙分割,就能减少节点间的通信需求。这样即使不用模型并行(MP)也能在单个GPU上跑1个模型的副本。
 
ZeRO-100B可以不用模型并行,就在128个GPU上训练高达130亿参数的模型,平均每个GPU的吞吐量超过40TFlops。而相比之下,不用ZeRO,仅用基础数据并行的话,可训练模型单个最大可含只有14亿参数,而每个GPU的吞吐量不到20 TFlops。
 
在由V100 组成的DGX-2集群中加入16路模型并行,之后128个节点,这样就能容纳约2000亿个参数。当运行16路模型并行时可以运行一个15.4倍大的模型,而不会有实际的性能损失, 只比16路模型并行加64路数据并行(1024个GPU)的峰值性能低30%。
 
上面这些都是基于梯度和优化器状态分割讨论的,之后论文开始谈到参数分割,并提到这可以随着所用GPU数量增加而产生线性的内存使用减少,所以64个GPU可以运行64倍大的模型,只用增加50%的通信带宽。但是,虽然是这么说,其实论文里面也没有对此进行任何实现或测试。

算力

 
非但实验没做,这群家伙却开始抱怨算力不足,而他们对算力的估算其实非常粗糙。真不靠谱,这群人,阿伦想。于是阿伦找到了另一篇论文Scaling Laws for Neural Language Models,也是GPT-3引用到的论文,来对算力进行经验估算。
论文链接:
https://arxiv.org/abs/2001.08361

损失(L)作为参数(N)的函数应按照如下公式扩大:
L = (N/8.8 * 10^13)^-0.076
 

按以petaFLOP/s-day的算力(C)计算就是:

L = (C/2.3*10^8)^-0.05 ⇔ L = 2.62 * C^-0.05

 

而 GPT-3能用2.57 * C^-0.048来拟合这个公式 ,之后反过来解出 C 的话,会得到:

C = 2.89407×10^-14 N^(19/12)

 

接下来如果你按GPT-2到GPT-3的参数增幅来计算GPT-4的话,那么你就能得到:

C≈3.43×10^7对20万亿参数(GPT-4)

以及18300对1750亿参数(GPT-3)


而GPT-3好像用的10^4.25 PetaFLOP/s-days,当然论文里说的是几千,而不是两万,稍微偏离了论文里图的趋势线,所以如果在更大算力上训练可能还有提升。

 

除了算力,数据方面还要有16万亿左右的token,GPT-3在大约3000亿token上进行的训练(虽然根据函数最好是3700亿)。英文维基百科只有30亿,570GB的webcrawl数据有4000亿个tokens,其实数据方面23TB的tokens相比起算力来说更好提供。

 

于是乎,如果GPT-3的算力成本约为460万美元,那么训练 "GPT-4 "的算力成本就应该为86亿美元了。老板说过资源管够的,嗯,就是这样,阿伦又想。

 

当然86亿美元还是有点贵了,一个优秀的工程师是会优化降低成本的。根据之前黄教主的发布会,如果你有(ke)幸(jin)通过用A100卡替代V100卡的话,就能获得3-6倍的算力增幅,但即使这样,还是会产生高达14亿美元的算力费用。

 

一下就给老板省了72亿美金,省到就是赚到,一下赚个72亿美金王健林也没我这么厉害,我真是老板的贴心员工。

 

拿着这份资源估算表,于是阿伦去找了老板。

 

第二天,阿伦收到了一张船票。

 

一张通往非洲的船票。

 

友情对比提示:

 

根据Nvidia在2020年第一季度公布了来自 "数据中心"的营收是11.5亿美元,所以按照上面的计算,训练一个"GPT-4",就几乎需要全世界将近1季度(3个月)的显卡供应,可能不准确但至少是这个数量级。

 

美国能源部正在向AMD支付6亿美元,用于建造两台Exaflop El Capitan超级计算机。这台超级计算器要完成GPT-4计算需要47年。

 

评论:

 

原作者点评:不过,为了极大地改善谷歌搜索,或其他一些能用到的应用,在未来1-3年里花14亿美元甚至100亿美元可能也并不是真的很糟。

 

好事者点评:

 

好事者一号 Tornado28:如果有86亿美元训练这玩意儿,还不如花50亿美元当科研经费。可能你就能获得三万多篇关于语言模型的新研究论文,之后再用剩下36亿训练一个非常好的模型就行。

 

好事者二号 bohreffect:首先先不说内存需求吧,这里有没有16万亿个token(词)都是个问题,更不用说5千亿有用的token. 某种意义上这个假设的 GPT-4的VC维已经超过了英语本身的复杂性,很有可能直接过拟合了。

 

好事者三号 Iwakan:在这数十亿美金的计算成本里面,现有的GPU是不是最佳选择呢?我感觉有这样的预算,早都能够用更快的速度和效率生产出定制的ASIC芯片了,这个芯片只用于该模型的运算。可以用比特币专用矿机作为参考,它比普通的GPU在挖矿任务上高效一万倍以上。


相关报道:

https://www.reddit.com/r/MachineLearning/comments/i49jf8/d_biggest_roadblock_in_making_gpt4_a_20_trillion/




实习/全职编辑记者招聘ing

加入我们,亲身体验一家专业科技媒体采写的每个细节,在最有前景的行业,和一群遍布全球最优秀的人一起成长。坐标北京·清华东门,在大数据文摘主页对话页回复“招聘”了解详情。简历请直接发送至zz@bigdatadigest.cn



志愿者介绍
后台回复志愿者”加入我们


点「在看」的人都变好看了哦!

浏览 80
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报