机器之心报道
机器之心编辑部
时隔一年,OpenAI 放出的预训练语言模型 GPT-3 再次让人刮目相看。
英伟达表示,自 2017 年底发布 Tesla V100 之后,训练最大模型的算力需求增长了 3000 倍。在这里面 GPT-2 也不在最高的位置了,微软今年 2 月推出的 Turing NLG(170 亿参数)、英伟达的 Megatron-BERT(80 亿参数)排名前列。GPT-3 要放进这个表里,尺度表还要再向上挪一挪。
另有网友吐槽,GPT-3 共 72 页的论文长度也令人绝望:
给出新单词「screeg」(挥剑,击剑)。
GPT-3 造出的句子是:我们玩了几分钟击剑,然后出门吃冰淇淋。
也还不错。
接下来,我们再来看 GPT-3 的其他能力。
语法纠错
给出一句带有语法错误的话,让 GPT-3 进行修改。
zero-shot、one-shot、few-shot 设置与传统微调方法的对比。
上图以英-法翻译任务为例,展示了四种方法。该研究将重点放在 zero-shot、one-shot 和 few-shot 上,其目的并非将它们作为竞品进行比较,而是作为不同的问题设置。OpenAI 团队特别强调了 few-shot 结果,因为其中许多结果仅仅略微逊色于 SOTA 微调模型。不过,用 one-shot 甚至有时是 zero-shot 与人类水平进行对比似乎最为公平,这也是未来工作的重要目标之一。
模型和架构
该研究使用了和 GPT-2 相同的模型和架构,包括改进的初始设置、预归一化和 reversible tokenization。区别在于 GPT-3 在 transformer 的各层上都使用了交替密集和局部带状稀疏的注意力模式,类似于 Sparse Transformer [CGRS19]。
为了研究性能对模型大小的依赖性,该研究训练了 8 种不同的模型大小,涵盖 3 个数量级,从 1.25 亿参数到 1750 亿个参数不等,具备 1750 亿个参数的模型即为 GPT-3。
先前的研究 [KMH 20] 表明,在有足够训练数据的情况下,验证损失的缩放比例应该近似为模型大小的光滑幂律函数。这项研究训练了多个不同大小的模型,这使得研究者可以对验证损失和下游语言任务检验该假设。
表 2.1 展示了 8 个模型的大小和架构。这里 n_params 表示可训练参数总量,n_layers 表示层数,d_model 表示每个瓶颈层中的单元数量(在该研究中前馈层总是瓶颈层大小的 4 倍,即 d_ff = 4 ∗ d_model),d_head 表示每个注意力头的维度。所有的模型均使用 n_ctx = 2048 tokens 的语境窗口。
表 2.1:该研究所训练 8 个模型的大小、架构和超参数信息。所有模型一共使用了 3000 亿 token。
为了最大程度地减少节点之间的数据传输,该研究从深度和宽度两个方向进行跨 GPU 模型分割。然后基于跨 GPU 模型布局的计算效率和负载平衡选择每个模型精确的架构参数。先前的研究 [KMH 20] 表明,在合理范围内,验证损失对这些参数并不是特别敏感。
训练数据集
下表介绍了 GPT-3 训练过程中所用的数据集。
表 2.2:用于训练 GPT-3 的数据集。
OpenAI:其实我们也有点玩不起了
最开始是训练不动,后来 finetune 不起,现在到了 GPT-3 模型的时代,我们连 forward 也要不起了。
你肯定想问这样一个问题:训练 GPT-3 模型需要花多少钱?我们目前还只能粗略地估计——训练一个 BERT 模型租用云算力要花大概 6912 美元,训练 GPT-2 每小时要花费 256 美元,但 OpenAI 一直没有透露一共要花多少小时。
相比之下,GPT-3 需要的算力(flops)是 BERT 的 1900 多倍,所以这个数字应该是千万美元级别的,以至于研究者在论文第九页说:我们发现了一个 bug,但没钱再去重新训练模型,所以先就这么算了吧。
但即使这样它的效果依然惊人。
GPT-3 的实验结果,似乎验证了 Richard Sutton 去年颇具争议的论断,他在《苦涩的教训》的最后写道:「我们应该从苦涩的教训中学到一点:通用方法非常强大,这类方法会随着算力的增加而继续扩展,搜索和学习似乎正是这样的方法。」
关于 GPT-3 的更多详情,参见论文:https://arxiv.org/abs/2005.14165
相关文章
猜你喜欢