近期,成为了全网热议的话题。是一种基于大规模语言模型技术(LLM, large model)实现的人机对话工具。但是,如果我们想要训练自己的大规模语言模型,有哪些公开的资源可以提供帮助呢?在这个项目中,人民大学的老师同学们从模型参数()、语料和代码库三个方面,为大家整理并介绍这些资源。接下来,让我们一起来看看吧。
资源链接:
论文地址:
模型参数
从已经训练好的模型参数做精调、继续训练,无疑可以极大地降低计算成本。那目前有哪些开源的大模型参数,可以供我们选择呢?
第一类是100~1000亿参数的模型。这类模型除了LLaMA(650亿)之外,参数范围都集中在100~200亿之间。具体而言,包括:LLaMA[1], mT5[2], T0[3], GPT-NeoX-20B[4], [5], UL2[6], Flan-T5[7], mT0[8], PanGu-α[9]。
其中,Flan-T5经过 的训练;专注于代码生成;mT0是个跨语言模型;PanGu-α有大模型版本,并且在中文下游任务上表现较好。
第二类是超过1000亿参数规模的模型。这类模型开源的较少,包括:OPT[10], OPT-IML[11], BLOOM[12], [13], GLM[14], [15]。参数规模都在1000亿~2000亿之间。
其中,OPT是专为开源和大模型复现提出的;BLOOM 和 具有跨语言能力;, GLM, 和 OPT-IML都是经过 的。
这些模型参数大多使用几百到上千块显卡训练得到。比如GPT-NeoX-20B(200亿参数)使用了96个A100-SXM4-40GB GPU,LLaMA(650亿参数)使用了2048块A100-80G GPU学习了21天,OPT(1750亿参数)使用了992 A100-80GB GPU,GLM(1300亿参数)使用了768块DGX-A100-40G GPU训练了60天。
除了这些可供公开下载参数的模型之外,还提供在他们的服务器上精调GPT-3模型的服务,可以选择的初始模型参数包括(GPT-3 1B), curie(GPT-3 6.7B)和 (GPT-3 175B)。
上图中,标黄的模型均为开源模型。
语料
训练大规模语言模型,训练语料不可或缺。主要的开源语料可以分成5类:书籍、网页爬取、社交媒体平台、百科、代码。
书籍语料包括:[16] 和 [17],分别包含1.1万和7万本书籍。前者在GPT-2等小模型中使用较多,而MT-NLG 和 LLaMA等大模型均使用了后者作为训练语料。
最常用的网页爬取语料是[18]。不过该语料虽然很大,但质量较差。大模型大多采用从其中筛选得到的子集用于训练。常用的4个子集包括:C4[19], CC-, CC-News[20], 和 [21]。
CC-的原版现在已不提供下载,一个替代选项是CC–R[22]。
社交媒体平台语料主要获取自平台。包含了平台上的高赞内容,然而现在已经不提供下载,现在可以用[23]替代。此外,.io[24]提供了一个实时更新的的全部内容。
百科语料就是维基百科([25])的下载数据。该语料被广泛地用于多种大语言模型(GPT-3, LaMDA, LLaMA 等),且提供多种语言版本,可用于支持跨语言模型训练。
代码语料主要来自于中的项目,或代码问答社区。开源的代码语料有谷歌的[26]。大语言模型在训练时就使用了的一个子集。
除了这些单一内容来源的语料,还有一些语料集。比如 the Pile[27]合并了22个子集,构建了800GB规模的混合语料。而 ROOTS[28]整合了59种语言的语料,包含1.61TB的文本内容。
上图统计了这些常用的开源语料。目前的预训练模型大多采用多个语料资源合并作为训练数据。比如GPT-3使用了5个来源3000亿token(word piece),包含开源语料, 和非开源语料(,, )。
代码库
使用代码库,可以帮助你快速搭建模型结构,而不用一个个矩阵乘法地搭建结构。具体而言,包括以下7个:
[29]是 Face构建的用来快速实现结构的库。同时也提供数据集处理与评价等相关功能。应用广泛,社区活跃。
[30]是一个微软构建的基于的库。GPT-Neo,BLOOM等模型均是基于该库开发。提供了多种分布式优化工具,如ZeRO, 等。
-LM[31]是构建的一个基于的大模型训练工具,并提供一些用于分布式计算的工具如模型与数据并行、混合精度训练,与 等。
JAX[32]是 Brain构建的一个工具,支持GPU与TPU,并且提供了即时编译加速与自动等功能。
-AI[33]是基于JAX开发的一个大模型训练工具,支持并行化与混合精度训练。最近有一个基于LLaMA训练的对话应用就是基于该工具构建的。
[34] 是 开发的一个大模型训练工具,强调代码简化,低资源与高可用性。在其中,已经构建好如Flan-T5 与 GLM等模型结构可供直接使用。
[35] 是一个基于的用于搭建混合专家模型的工具,并支持训练时数据与模型并行。
结束语
通过使用以上提到的模型参数、语料与代码,我们可以极大地方便自己实现大规模语言模型,并搭建出自己的对话工具。但是,尽管数据资源相对容易获取,计算资源却十分稀缺。想要获得足够的显卡资源以训练/调整大规模模型,仍然是一件非常困难的事情。因此,私有化的道路任重而道远。在计算资源相对匮乏的情况下,我们更是要利用好手头的模型参数、语料与代码等资源,以有限的计算量取得最好的表现。
参考文献:
[1]
[2]
[3]
[4]
[5]
[6]
[7]#flan-t5-
[8]
[9]
[10]
[11]
[12]
[13]
[14]
[15]
[16]
[17]
[18]
[19]
[20]
[21]
[22]
[23]
[24]
[25]
[26]
[27]
[28]
[29]
[30]
[31]
[32]
[33]
[34]
[35]
发表回复