人工智能论文GPT-3(3):2020.5 Language Models are Few-Shot Learners;架构;训练数据集;开源

2.1 模型与架构

我们使用了与GPT-2相同的模型和架构,包括其中描述的改进初始化、预归一化和可逆分词技术,但有所不同的是,我们在Transformer的各层中使用了交替的密集和局部带状稀疏注意力模式,类似于Sparse Transformer 。为了研究ML性能对模型大小的依赖性,我们训练了8种不同大小的模型,其参数数量从1.25亿到1750亿不等,跨越了三个数量级,其中最大的模型我们称之为GPT-3。之前的工作表明,在拥有足够训练数据的情况下,验证损失的缩放应作为大小的函数,大致遵循平滑的幂律;训练多种不同大小的模型使我们能够验证这一假设,既适用于验证损失,也适用于下游语言任务。

表2.1展示了我们的8个模型的大小和架构。在这里,

nparams表示可训练参数的总数,

nlayers表示层的总数,

dmodel表示每个瓶颈层中的单元数(我们总是让前馈层的大小是瓶颈层的四倍,即dff = 4 * dmodel)

dhead表示每个注意力头的维度。所有模型都使用了一个上下文窗口,其中包含nctx = 2048个标记。

我们沿着深度和宽度的维度将模型划分到多个GPU上,以最小化节点间的数据传输。每个模型的精确架构参数是基于计算效率和GPU上模型布局的负载均衡来选择的。之前的工作表明,在合理宽泛的范围内,验证损失对这些参数并不十分敏感。

2.2 训练数据集

语言模型的数据集迅速扩展,最终形成了包含近万亿个单词的Common Crawl数据集2。这个规模的数据集足以训练我们最大的模型,且无需重复更新同一序列。然而,我们发现,未经过滤或仅经过轻度过滤的Common Crawl版本的质量往往低于经过更精心策划的数据集。因此,我们采取了三个步骤来提高数据集的平均质量:

(1)我们下载并过滤了基于与一系列高质量参考语料库相似性的Common Crawl版本;
(2)我们在文档级别内和跨数据集执行了模糊去重操作,以防止冗余,并确保我们所保留的验证集的完整性,作为过拟合准确度的衡量标准;
(3)我们还向训练混合数据集中添加了已知的高质量参考语料库,以扩充Common Crawl并增加其多样性。

关于前两点(Common Crawl的处理)的详细信息见附录A。对于第三点,我们添加了几个经过精心策划的高质量数据集,包括WebText数据集的扩展版本[RWC+19](通过在更长的时间段内抓取链接收集,并在[KMH+20]中首次描述),两个基于互联网的书籍语料库(Books1和Books2)以及英文版的维基百科。

表2.2展示了我们在训练中使用的最终数据集混合情况。Common Crawl数据是从覆盖2016年至2019年的41个每月Common Crawl分片中下载的,在过滤前包含45TB的压缩纯文本,过滤后包含570GB,大致相当于4000亿个字节对编码标记。请注意,在训练过程中,数据集并不是按其大小比例进行采样的,而是我们视为质量更高的数据集采样更频繁,因此Common Crawl和Books2数据集在训练期间的采样次数少于一次,而其他数据集采样2-3次。这本质上是以接受少量过拟合为代价,换取更高质量的训练数据。

使用从互联网上广泛收集的数据对语言模型进行预训练的一个主要方法论问题是,特别是那些具有记忆大量内容能力的大型模型,可能存在下游任务被污染的风险,因为它们在预训练期间可能无意中看到了其测试或开发集。为了减少这种污染,我们搜索并尝试移除与本文研究的所有基准测试的开发集和测试集之间的任何重叠。不幸的是,由于过滤中的一个错误,我们忽略了一些重叠部分,而且由于训练成本高昂,重新训练模型并不可行。在第4节中,我们描述了剩余重叠部分的影响,在未来的工作中,我们将更积极地消除数据污染。

2.3 训练过程

正如在[KMH+20, MKAT18]中所发现的,较大的模型通常可以使用较大的批次大小,但需要较小的学习率。我们在训练过程中测量梯度噪声规模,并用它来指导批次大小的选择[MKAT18]。表2.1展示了我们使用的参数设置。为了在不耗尽内存的情况下训练更大的模型,我们在每个矩阵乘法内部和网络的层之间采用了混合模型并行性。所有模型都是在微软提供的高带宽集群的一部分上的V100 GPU上进行训练的。训练过程和超参数设置的详细信息见附录B。

2.4 评估

对于少样本学习,我们通过从该任务的训练集中随机抽取K个示例作为条件来评估评估集中的每个示例,条件之间由1或2个换行符分隔,具体取决于任务。对于LAMBADA和Storycloze,没有可用的监督训练集,因此我们从开发集中抽取条件示例,并在测试集上进行评估。对于Winograd(原始版本,非SuperGLUE版本),只有一个数据集,因此我们直接从其中抽取条件示例。

K可以是0到模型上下文窗口允许的最大值之间的任何值,对于所有模型来说,nctx = 2048,通常可以容纳10到100个示例。K的较大值通常但不是总是更好,因此当存在单独的开发集和测试集时,我们会在开发集上试验几个K值,然后在测试集上运行最佳值。对于某些任务(见附录G),除了(或对于K = 0,代替)演示示例外,我们还使用自然语言提示。

在涉及从多个选项中选择一个正确补全的任务(多项选择)中,我们提供K个上下文加正确补全的示例,后面跟着一个仅包含上下文的示例,并比较每个补全的LM似然性。对于大多数任务,我们比较每个标记的似然性(以长度进行归一化),然而,在少数数据集(ARC、OpenBookQA和RACE)上,我们通过计算P(补全|上下文)/P(补全|答案上下文)来以无条件概率对每个补全进行归一化,从而获得额外的收益,其中“答案上下文”是字符串“Answer: ”或“A: ”,用于提示补全应是一个答案,但其他方面是通用的。

对于涉及二元分类的任务,我们给选项更具语义意义的名称(例如“True”或“False”,而不是0或1),然后将任务视为多项选择;有时我们也像[RSR+19]所做的那样设定任务框架(详见附录G)。

对于具有自由形式补全的任务,我们使用与[RSR+19]相同的参数进行集束搜索:集束宽度为4,长度惩罚为α=0.6。我们根据数据集的标准使用F1相似度得分、BLEU或精确匹配来评估模型。

当测试集公开可用时,我们报告每个模型大小和学习设置(零样本、单样本和少样本)在测试集上的最终结果。当测试集是私有的时,我们的模型通常太大而无法在测试服务器上运行,因此我们报告在开发集上的结果。我们在少数数据集(SuperGLUE、TriviaQA、PiQa)上向测试服务器提交结果,这些是我们能够成功提交的结果,并且我们只提交200B少样本结果,对于其他所有内容,我们报告开发集的结果。


Ankie的评论:

自GPT-3问世以来,OpenAI对于其技术实现的细节采取了相当谨慎的态度,仅仅以大致的框架进行了介绍。随着时间的推移,OpenAI似乎变得更为封闭而非开放,这也正是马斯克对OpenAI提出批评的核心所在。

现在,我们普遍认识到,虽然许多模型都基于Transformer架构,但各家在应用上的方法却大相径庭。在这场竞赛中,OpenAI已经取得了显著的领先地位,其他公司只能奋力追赶。面对这种压力,一些公司甚至选择开源他们的技术,希望借助群众的力量共同对抗OpenAI。

或许在未来的某一天,OpenAI会公开这些技术实现的细节,但显然,现在还不是时候。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flutter 的 showDialog 和 showCupertinoDialog 有什么区别?

我将我的 App 里用的 Flutter 升级到了 3.19,没想到,以前我用 showDialog 和 AlertDialog 组合创建的二次确认框,变得无敌难看了,大幅度增加了整个框的圆角和里面默认按钮的圆角。不得已,我必须修改一下,以…

算法练习|Leetcode189轮转数组 ,Leetcode56合并区间,Leetcode21合并两个有序链表,Leetcode2两数相加,sql总结

目录 一、Leetcode189轮转数组题目描述解题思路方法:切片总结 二、Leetcode56合并区间题目描述解题思路方法:总结 三、Leetcode21合并两个有序链表题目描述解题思路方法:总结 四、Leetcode2两数相加题目描述解题思路方法:总结 sql总结: 一、Leetcode189轮转数组 题目描述 给定…

dfs+剪枝,LeetCode 39. 组合总和

一、题目 1、题目描述 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates 中的 同一个 数字可以 …

C++|stack-queue-priority_queue(适配器+模拟实现+仿函数)

目录 一、容器适配器 1.1容器适配器概念的介绍 1.2stack和queue的底层结构 1.3deque容器的介绍 1.3.1deque的缺陷及为何选择他作为stack和queue的底层默认实现 二、stack的介绍和使用 2.1stack的介绍 2.2stack的使用 2.3stack的模拟实现 三、queue的介绍和使用 …

NotePad++联动ABAQUS

Abaqus 中脚本运行 1. 命令区kernel Command Line Interface (KCLI) execfile(C:\\temp\second develop\chapter2\pyTest1.py)2. CAE-Run Script File->Run Script 3. Abaqus command Abaqus cae noGUIscript.py(前后处理都可)Abaqus Python scr…

排序算法集合

912. 排序数组 趁着这道题总结下排序方法 1.快速排序 算法描述 1.从数列中挑出一个元素,称为"基准"(pivot), 2.重新排序数列,所有比基准值小的元素摆放在基准前面,所有比基准值大的元素摆在基…

Redis的内存淘汰策略(简单版)

以下是常见的内存淘汰策略: 1.LRU(最近最少使用): 这是redis的默认策略,就是最近最少使用的键被淘汰 2.LFU(最不常使用)就是最近最不常使用的键被淘汰 3.Random(随机淘汰&#xff09…

【网站项目】高校毕业论文管理系统小程序

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

ES主要功能特性和使用场景

ES主要功能特性和使用场景 ES 通常指的是 Elasticsearch,这是一个高度可扩展的开源全文搜索引擎和数据分析平台。Elasticsearch 以其强大的实时搜索、分析和数据可视化能力而闻名,广泛应用于日志分析、应用程序监控、全文检索、商业智能、点击流分析等多…

人工智能论文GPT-3(2):2020.5 Language Models are Few-Shot Learners;微调;少样本Few-Shot (FS)

2 方法Approach 我们的基本预训练方法,包括模型、数据和训练,与GPT-2中描述的过程相似,只是模型规模、数据集规模和多样性,以及训练时长有所扩大,相对简单直接。 我们使用的上下文学习也与GPT-2相似,但在…

SpringCloud系列(8)--将服务提供者Provider注册进Eureka Server

前言:上一章节我们介绍了Eureka服务端的安装与配置,本章节则介绍关于微服务如何入职Eureka Server Eureka架构原理图 1、修改provider-payment8001子模块的pom.xml文件,引入Eureka Clinet的依赖,然后reolad一下,下载依…

Parade Series - CoreAudio Loopback

Scenario 鉴于业务场景需要, 经过技术路径探索, 发现 comtypes 兼容性过于混乱,故而考虑整合一个 CoreAudio 的轮子dll来解决实际问题!std::StringStream ⇒ std::ios::binary ⇒ std::ofstream Loopback.dll #ifndef _DLL_C…

数学建模--非线性规划模型+MATLAB代码保姆式解析

目录 1.简单介绍 2.求解方法 3.适用赛题 4.典型例题及相关分析 (1)问题引入 (2)决策变量&约束条件 (3)确定目标函数 (4)建立数学模型 5.MATLAB代码祝逐字句讲解 1.简单…

批量添加集合元素

方法一: Collections.addAll() 方法内部会迭代传递给它的元素列表&#xff0c;并将每个元素添加到目标集合中。 List<Integer> list new ArrayList<>();Collections.addAll(list,1,2,3,4,5); 方式二: ArrayList 类有一个构造函数&#xff0c;它接受一个 Colle…

Redis系列之Cluster集群搭建

在上一篇博客&#xff0c;我们学习Redis哨兵Sentinel集群的搭建&#xff0c;redis的哨兵模式提供了比如监控、自动故障转移等高可用方案&#xff0c;但是这种方案&#xff0c;容量相对固定&#xff0c;要进行持续扩容或者数据分片就不适合&#xff0c;所以有另外一种更复杂的集…

CentOS常见命令

以下是一些常见的CentOS命令&#xff1a; 管理文件和目录&#xff1a; ls&#xff1a;列出目录中的文件和子目录。cd&#xff1a;切换目录。mkdir&#xff1a;创建一个新的目录。rm&#xff1a;删除文件或目录。cp&#xff1a;复制文件或目录。mv&#xff1a;移动或重命名文件…

探索Java设计模式:桥接模式

探索Java设计模式&#xff1a;深入理解与实践桥接模式 桥接模式&#xff08;Bridge Pattern&#xff09;是一种结构型设计模式&#xff0c;它将抽象部分与其实现部分分离&#xff0c;使它们可以独立变化。在Java编程中&#xff0c;桥接模式常用于实现多维度变化、降低类的层次…

图像处理的魔法师:Pillow 库探秘

文章目录 图像处理的魔法师&#xff1a;Pillow 库探秘第一部分&#xff1a;背景介绍第二部分&#xff1a;库是什么&#xff1f;第三部分&#xff1a;如何安装这个库&#xff1f;第四部分&#xff1a;库函数使用方法第五部分&#xff1a;场景应用第六部分&#xff1a;常见Bug及解…

YOLOv9改进策略 | 添加注意力篇 | 利用ILSVRC冠军得主SENetV1改善网络模型特征提取能力

一、本文介绍 本文给大家带来的改进机制是SENet&#xff08;Squeeze-and-Excitation Networks&#xff09;其是一种通过调整卷积网络中的通道关系来提升性能的网络结构。SENet并不是一个独立的网络模型&#xff0c;而是一个可以和现有的任何一个模型相结合的模块(可以看作是一…

最新Java面试题3【2024中级】

互联网大厂面试题 1&#xff1a;阿里巴巴Java面试题 2&#xff1a;阿里云Java面试题-实习生岗 3&#xff1a;腾讯Java面试题-高级 4&#xff1a;字节跳动Java面试题 5&#xff1a;字节跳动Java面试题-大数据方向 6&#xff1a;百度Java面试题 7&#xff1a;蚂蚁金服Java…