GPT迭代成本「近乎荒谬」,Karpathy 300行代码带你玩转迷你版

简介: 最近,特斯拉AI总监Karpathy开源了一个名为minGPT的项目,用300行代码实现了GPT的训练。没有OpenAI的超级算力,该如何调整GPT这类语言模型的各种超参数?

微信图片_20220109160204.png


上周 Andrej Karpathy 发布了一个最小 GPT 实现的项目 ,短短一周就收获了4200星。        


微信图片_20220109160206.png      

从代码来看,他的minGPT实现确实精简到了极致,利用Karpathy的代码,你只需要实例化一个GPT模型,定好训练计划就可以开始了,整个实现只有300行PyTorch代码。

       微信图片_20220109160209.png      


但是最有趣的部分是300行代码背后的故事。特别是在说明文档末尾,他解构了GPT-3的各种参数:      


微信图片_20220109160211.png      


GPT-3:96层,96个头,d _ 模型12,288(175B 参数)。 GPT-1-like: 12层,12个头,d _ 模型768(125M参数) GPT-3使用与 GPT-2相同的模型和架构,包括修改后的初始化方法等。


在transformer层使用交替密集和局部稀疏注意力,类似于稀疏 Transformer。前馈层是瓶颈层的四倍,即 dff = 4 * dmodel。


所有模型都使用 nctx = 2048 token的上下文窗口。 Adam 的参数 β1 = 0.9, β2 = 0.95, eps = 10^−8。 前3.75亿token用线性 LR 预热,剩下的2600亿token用余弦衰减法将学习率降至其值的10%。


「近乎荒谬」的迭代成本让GPT调参陷困境


GPT-3的工程师们是如何确定学习速率的,以及其他的7个超参数 + 架构? GPT-3迭代成本相当高(一次训练可能需要几天到一周)。选择正确的超参数对于算法的成功至关重要,如果够幸运,模型的复杂度不高,可以使用超参数搜索方法。


      微信图片_20220109160213.png


超参数的搜索
     

事实上,许多研究人员都注意到,其实可以将其他问题中「穷举搜索」到的许多参数保持在冻结状态,并将搜索的复杂性降低到一些关键参数,如学习速率。 


另一方面,考虑到 GPT-3的庞大规模和训练成本,显然 OpenAI 的研究人员不可能通过超参数搜索来获得结果,单次训练可能花费数百万美元 那么,在这种「近乎荒谬」的迭代成本范式中,研究人员如何确定最终确定这些参数呢?   


   

网络异常,图片无法展示
|
       


在训练过程中是否有干扰,比如在检查点重新设置并重新开始?是否会用过超参数搜索越来越大的模型,然后猜测超参数的大致范围? 当真正的迭代不可能时,如何继续AI模型的训练?相信很多人工智能的研究者有类似的疑问,很多训练调参还是要靠「直觉」。 但是GPT-3这种大规模模型的成功,是不是用了什么更科学的方法?


算力无限时,模型性能不再「严重依赖」超参数


OpenAI其实发表过一篇论文,探讨了如何更好地训练GPT这类语言模型。


 随着模型大小,数据集集大小和用于训练的计算资源增加,语言模型的性能总是平稳提高的,为了获得最佳性能,必须同时放大所有三个因素。当另外两个因素没有限制时,模型性能与每个因素都有幂律关系。    


 微信图片_20220109160217.png      


GPT3的工程师们用非常小的模型做了大量的测试,找到了相关的缩放曲线来决定如何分配计算/数据/模型大小,以便在给定的预算下获得最佳性能,他们检查了以前在transformer上的超参数设置和架构选择 ,发现 GPT 对前者相对不敏感,应该扩大数据范围,以饱和 GPU 的吞吐量。 


模型性能依赖于规模,它由三个因素组成:模型参数N的数量(不包括嵌入),数据集D的大小以及训练所用计算资源C。 结果显示,在合理的范围内,性能模型的体系结构参数依赖较小,例如模型的深度与宽度。 


只要同时扩大N和D的规模,性能就会显著地提高,但是如果N或D保持不变而另一个因素在变,则进入性能收益递减的状态性能损失大致取决于N^0.74 / D的比率,这意味着每次我们将模型大小增加8倍时,我们只需将数据增加大约5倍即可避免损失。


      微信图片_20220109160219.png      


当固定计算资源C,但对模型大小N或可用数据D没有任何其他限制时,可以通过训练非常大的模型并及时停止来获得最佳性能。


因此,最大程度地提高计算效率将比基于训练小型模型进行收敛所期望的收益高得多,训练数据的需求量和计算资源遵循D〜C^0.27,可以看到数据需求增长十分缓慢。 如果有更多的计算资源可用,可以选择分配更多资源来训练更大的模型,使用更大的批次以及训练更多的步数。 比如将来算力增长了十亿倍,为了获得最佳的结果,大部分精力应该用于增加模型大小。数据的增加可以通过增加批处理量来提高并行度,只需要很少的时间。 


The End


我们没有过多讨论超参数的具体调整方法,在计算资源有限的情况下,确实需要一些技巧,来提升计算效率,或者说模型的性能,当未来算力足够时,我们就不会这么依赖超参数了。 对神经网络的探索方法,也应该有新的思路。 


「如果你真的在做研究,那么通常情况下,你研究的问题越小越简单,研究贡献越大」。 


任何人都可以通过使问题更难,神经网络更大来显示改进,但是如果你可以用一个新的小而简单的设计来产生更好的性能,那么就会进一步提高理解能力。 如果你能在一个简单的toy case上演示一些神经网络的bug或者其他有趣的特性,就会更加理解它是如何发生的,何时发生的,以及为什么会发生


参考链接:


https://arxiv.org/pdf/2001.08361.pdfhttps://www.reddit.com/r/MachineLearning/comments/ibrlvt/d_how_do_ml_researchers_make_progress_when/

相关文章
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
开源版GPT-4o来了,AI大神Karpathy盛赞!67页技术报告全公开
【10月更文挑战第20天】近日,开源版GPT-4o的发布成为AI领域的焦点。作为GPT系列的最新成员,GPT-4o在性能和多模态数据处理方面实现了显著提升,得到了知名AI专家Andrej Karpathy的高度评价。该模型的开源特性将进一步促进AI研究的进展。
56 3
|
4月前
|
人工智能 自然语言处理 算法
【人工智能】探索GPT-4o mini:解锁成本效益新纪元,赋能开发创新与效率
在人工智能领域的浩瀚星空中,OpenAI再次以其创新之光照亮了前行的道路,推出了备受瞩目的GPT-4o mini模型。这款被誉为“迄今为止最具成本效益的小模型”不仅继承了GPT系列强大的自然语言处理能力,更在成本控制上实现了重大突破,为开发者们开启了一扇通往高效与创新的大门。
71 1
|
7月前
|
自然语言处理 API Python
使用Tokeniser估算GPT和LLM服务的查询成本
将LLM集成到项目所花费的成本主要是我们通过API获取LLM返回结果的成本,而这些成本通常是根据处理的令牌数量计算的。我们如何预估我们的令牌数量呢?Tokeniser包可以有效地计算文本输入中的令牌来估算这些成本。本文将介绍如何使用Tokeniser有效地预测和管理费用。
134 3
|
存储 人工智能 缓存
GPT-4 API平替?性能媲美同时成本降低98%,斯坦福提出FrugalGPT,研究却惹争议
GPT-4 API平替?性能媲美同时成本降低98%,斯坦福提出FrugalGPT,研究却惹争议
137 0
|
5月前
|
存储 SQL 数据库
Python 金融编程第二版(GPT 重译)(四)(4)
Python 金融编程第二版(GPT 重译)(四)
53 3
|
5月前
|
存储 NoSQL 索引
Python 金融编程第二版(GPT 重译)(一)(4)
Python 金融编程第二版(GPT 重译)(一)
64 2
|
5月前
|
存储 机器学习/深度学习 关系型数据库
Python 金融编程第二版(GPT 重译)(四)(5)
Python 金融编程第二版(GPT 重译)(四)
36 2
|
5月前
|
存储 SQL 数据可视化
Python 金融编程第二版(GPT 重译)(四)(1)
Python 金融编程第二版(GPT 重译)(四)
51 2
|
5月前
|
数据可视化 Python
Python 金融编程第二版(GPT 重译)(三)(4)
Python 金融编程第二版(GPT 重译)(三)
30 2
|
5月前
|
存储 算法 数据可视化
Python 金融编程第二版(GPT 重译)(一)(1)
Python 金融编程第二版(GPT 重译)(一)
107 1

热门文章

最新文章