揭秘英伟达A100、A800、H100、H800 GPU如何实现高性能大模型的百倍训练加速

2023-09-15 09:29:01

随着大模型的快速发展,我国在算力发展方面取得显著进展。近年来,我国投入大量资源用于高性能计算和人工智能领域研发,并建设一系列超级计算中心和云计算平台。这些举措不仅提升我国的科学研究能力,也为大模型训练和应用提供强大支持。我国算力发展已经进入全球领先行列,为推动人工智能发展奠定坚实的基础。

蓝海大脑大模型训练平台是蓝海大脑自主研发的高性能计算平台,专用于大模型训练和推理。该平台采用先进的硬件架构和优化的软件算法,可以提供高效的计算能力和存储能力。

一、引言

语言是人类独有的表达和交流能力,在儿童早期就开始形成并伴随一生不断发展变化。然而机器想要像人类一样自然地掌握理解和使用语言的能力,必须配备强大的人工智能算法。实现机器拥有类似人类阅读、写作和交流能力是一个长期的研究挑战。

从技术上讲,语言建模是提高机器语言智能的主要方法之一。语言建模通常是对词序列生成概率进行建模,以预测未出现的词语。语言建模研究在学术界受到广泛关注。其发展可分为四个主要阶段:

1、统计语言模型 (SLM)

SLM(Statistical Language Model)在20世纪90年代兴起,基于统计学习方法,通过马尔可夫假设来建立词预测模型。其具有固定上下文长度 n 的 SLM 也称为 n 元语言模型,例如 bigram 和 trigram 语言模型。广泛应用于信息检索和自然语言处理,但经常面临维数灾难的困扰。因此需要专门设计平滑策略,如回退估计和古德图灵估计已被引入以缓解数据稀疏问题。

2、神经语言模型 (NLM)

自然语言处理领域中,循环神经网络(RNN)等神经网络模型被广泛应用于描述单词序列的概率。早期工作引入了词的分布式表示概念,并基于分布式词向量来构建词预测函数,作为该领域的重要贡献。后续研究扩展了学习词语和句子有效特征的思路,开发出通用的神经网络方法,为各类自然语言处理任务建立统一的解决方案。另外,word2vec提出使用简化的浅层神经网络来学习分布式词表示,这些表示在多种自然语言处理任务中展现出非常有效。以上研究将语言模型应用于表示学习领域,而不仅限于词序列建模,对自然语言处理产生了深远影响。

3、预训练语言模型 (PLM)

PLM通过在大规模语料上预训练获取语义表示,然后微调到下游任务。Transformer等结构的引入极大提高了性能。“预训练-微调”成为自然语言处理的重要范式。

4、大语言模型 (LLM)

大语言模型继续扩大模型和数据规模,展示出小模型所不具备的强大语言能力。GPT-3等模型表现出惊人的上下文学习能力。ChatGPT成功地将大语言模型应用到开放领域对话。

相比预训练语言模型(PLM),大语言模型(LLM)有三大关键区别:

1)LLM展现出PLM不具备的惊人涌现能力,使其在复杂任务上表现强大

2)LLM将改变人类开发和使用AI系统的方式,需要通过提示接口访问

3)LLM的研究和工程界限不再明确。LLM技术正在引领AI、自然语言处理、信息检索和计算机视觉等领域的变革,基于LLM的实际应用生态正在形成。

但是,LLM的内在原理与关键因素还有待进一步探索,训练大规模的LLM非常困难,将LLM与人类价值观保持一致也面临挑战。因此需要更多关注LLM的研究和应用。

二、概述

下面将概述大语言模型(LLM)的背景,并概括GPT系列模型的技术演进历程。

1、大语言模型的背景

大语言模型(LLM)通常指在大规模文本数据上训练的、包含数千亿级(或更多)参数的Transformer结构语言模型,比如GPT-3、PaLM、Galactica、LLaMA和LLaMA2等。LLM展示了强大的语言理解能力和通过文本生成解决复杂任务的能力。为快速理解LLM的工作原理,下面将介绍LLM的基本背景,包括扩展法则、涌现能力和关键技术。

1)大语言模型的扩展法则

目前大语言模型主要建立在Transformer架构之上,其中多头注意力机制层堆叠在非常深的神经网络中。现有的大语言模型采用类似的Transformer结构和与小型语言模型相同的预训练目标(如语言建模),但是大语言模型大幅扩展模型规模、训练数据量和总计算量(数量级上的提升)。大量研究表明扩展规模可以显著提高语言模型的能力。因此,建立一个定量的方法来描述扩展效应很有意义。

KM扩展法则:2020年OpenAI团队首次提出神经语言模型的性能与模型规模、数据集规模和训练计算量之间存在幂律关系。在给定计算预算下,根据实验提出三个公式来描述扩展法则。

这里L是用自然对数表示的交叉熵损失。上述三个规律是通过拟合不同数据量、不同模型大小和不同训练计算量条件下的语言模型性能得出。结果表明模型性能与这三个因素存在非常强的依赖关系。

Chinchilla扩展法则:Google DeepMind团队提出了另一种替代的扩展法则形式,用于指导大语言模型的最优训练计算量。通过变化更大范围的模型规模和数据量进行严格的实验,并拟合出一个类似的扩展法则,但具有不同的系数:

在该法则中E、A、B、α和β为经验确定的系数。研究人员进一步在训练计算量约束C ≈ 6ND的条件下,通过优化损失函数L(N,D)展示如何最优地在模型规模和数据量之间分配计算预算的方法。

这里G是根据系数A、B、α和β计算得到的扩展系数。如文献分析随着给定计算预算的增加,KM扩展法则更倾向于将预算分配给模型规模,而Chinchilla扩展法则认为应该以相近的比例增加模型和数据规模。尽管存在一些局限性假设,这些扩展法则提供了对扩展效应的直观理解,可以用于训练过程中预测语言模型的性能。但是一些能力(如上下文学习)无法完全根据扩展法则预测,只有模型超过一定规模后才会出现。

大语言模型的关键特征之一是展现出预训练语言模型所不具备的涌现能力,即只有模型达到一定规模后才出现的全新能力。当涌现能力出现时,性能会突然显著提升,超过随机水平,类似于物理学中的相变现象。涌现能力可以与复杂任务相关,需要关注那些能广泛解决任务的通用能力。下面简要介绍大语言模型的三种典型涌现能力和相关的代表性模型。

上下文学习:GPT-3首次提出这种能力,即只需要提供语言指令和少量示例,模型就可以生成预期的输出,无需额外训练。但这个能力与模型规模相关,需要达到一定参数量才会出现。

指令遵循:通过指令微调,大语言模型可以在完全未见过的任务上,仅根据语言描述就进行泛化。当模型超过680亿参数后,这种能力才会显著提升。不同模型对这种能力的掌握也有差异。

逐步推理:小模型难以解决需要多步推理的复杂任务,而大语言模型可以通过提供中间推理步骤的思维链提示来完成这类任务。当模型超过600亿参数时,这种提示带来的效果才会显著。不同任务对这种能力的依赖程度也不同。

2)大语言模型的关键技术

经过长期发展大语言模型(LLM)进化到目前通用且具备强大能力的阶段。主要技术进展包括:

扩展:增加模型、数据规模以及训练计算量,可以显著提升LLM的能力。合理利用扩展定律指导资源分配也很重要。

训练:分布式训练算法对成功训练大模型至关重要。一些优化框架和技巧可以促进大规模分布式训练。

能力引导:设计恰当的提示策略可以激发LLM的潜在能力,但对小模型效果可能不同。

对齐微调:通过人机交互的强化学习,使LLM生成内容符合人类价值观。

工具操作:利用外部工具弥补LLM的局限,类似其“眼睛和耳朵”,可以扩展能力范围。

此外,许多其他因素(例如硬件升级)也对 LLM 的成功 做出了贡献。但是,我们主要讨论在开发 LLM 方面的主要技 术方法和关键发现。

2、GPT 系列模型的技术演进

ChatGPT因其与人类交流的出色能力受到广泛关注。它基于功能强大的GPT模型开发,对话能力得到了专门的优化。考虑到人们对ChatGPT和GPT模型的浓厚兴趣,本文特别总结了GPT系列模型在过去几年中的技术演进过程,以提高大众的理解。总得来说OpenAI在大语言模型研究上经历了以下几个阶段:

1)早期探索

根据OpenAI联合创始人Ilya Sutskever的采访,在OpenAI早期就已经探索过使用语言模型实现智能系统的想法,但当时试验的是循环神经网络(RNN)。随着Transformer架构的出现,OpenAI开发出了两个早期GPT模型:GPT-1和GPT-2,这些模型可以视为后来更强大的GPT-3和GPT-4的基础。

GPT-1:在2018年,OpenAI基于当时新的Transformer架构,开发出第一个GPT模型。GPT-1采用Transformer解码器结构,并使用无监督预训练和有监督微调的方法,为后续GPT模型奠定基础。

GPT-2:GPT-2在GPT-1的基础上增加了参数量,达到150亿,使用更大规模的网页数据集进行训练。通过无监督语言建模来完成下游任务,而不需要标注数据的显式微调。

2)能力飞跃

尽管GPT-2旨在通过无监督训练成为通用的多任务学习器,但与有监督微调的当前最优方法相比,其性能仍较弱。虽然GPT-2模型规模较小,经过微调后在下游任务尤其是对话任务中仍然取得广泛应用。在GPT-2的基础上,GPT-3通过扩大模型规模,实现了在类似生成式预训练架构下的重大能力飞跃。

在2020年发布的GPT-3将模型规模进一步扩大到1750亿参数。GPT-3论文正式提出上下文学习(In-Context Learning, ICL)的概念,即用小样本或零样本的方式使用语言模型。ICL本质上仍然是语言建模,只是预测的是完成给定任务的文本输出。GPT-3不仅在NLP任务上表现强劲,在需要推理的任务上也展现出惊人的适应能力。尽管GPT-3论文没有明确讨论涌现能力,但可以观察到其性能飞跃可能超越了基本的规模扩展法则,标志着从预训练语言模型到大语言模型的重要进化。

3)能力增强

GPT-3成为OpenAI开发更强大语言模型的基础,主要通过两种方式进行改进:

使用代码数据进行训练:原始GPT-3在纯文本上训练,推理能力较弱。使用GitHub代码微调可以增强其编程和数学问题解决能力。

与人类对齐:OpenAI早在2017年就开始研究如何从人类偏好中学习。他们使用强化学习方法训练语言模型以符合人类期望。不仅提高了指令遵循能力,也能减轻有害内容生成。通过人机交互强化学习对齐语言模型与人类价值观非常重要。

三、大语言模型资源

鉴于训练大语言模型面临的技术难题和计算资源需求,从零开始开发或复现大语言模型非常困难。一个可行的方法是在现有语言模型的基础上进行增量开发或实验研究。下面简要总结用于开发大语言模型的公开可用资源,包括公开的模型Checkpoint、语料库和代码库。

1、公开可用的模型检查点或API

考虑到预训练模型的高昂成本,公开的预训练检查点对研究组织开展大语言模型至关重要。参数规模是使用这些模型时需要考虑的关键因素。为帮助用户根据计算资源选择适当的研究方向,将公开的模型分为百亿和千亿参数两个级别。另外,公开的API可以直接使用模型进行推理,无需本地运行。下面介绍公开的模型检查点和API。

1)百亿参数量级别的模型

百亿参数量级的公开语言模型包括mT5、PanGu-α、T0、GPT-NeoX-20B、CodeGen、UL2、Flan-T5 和 mT0等,参数规模在100-200亿之间。其中Flan-T5可用于指令微调研究,CodeGen专为生成代码设计,mT0支持多语言。针对中文任务,PanGu-α表现较好。LLaMA是最近公开的模型,在指令遵循任务上展现卓越能力。这类规模的模型通常需要数百至上千个GPU/TPU。为准确估计所需计算资源,可使用计算量指标如FLOPS。

2)千亿参数量级别的模型

千亿参数量级的公开语言模型较少,主要有OPT、OPT-IML、BLOOM、BLOOMZ、GLM和Galactica。其中OPT用于复现GPT-3,BLOOM和BLOOMZ在多语言建模上表现较好,OPT-IML进行过指令微调。这类模型通常需要数千个GPU/TPU,比如OPT使用992个A100 GPU,GLM使用了96个DGX-A100节点。

3)大语言模型的公共API

相比直接使用模型,API提供更方便的方式使用大语言模型,无需本地运行。GPT系列模型的API已经被广泛使用,包括ada、babbage、curie、davinci等。其中davinci对应GPT-3最大模型。此外还有与Codex相关的代码生成API。GPT-3.5系列新增text-davinci-002等接口。gpt-3.5-turbo-0301对应ChatGPT。最近,GPT-4的API也发布。总体来说,接口选择取决于具体应用场景和响应需求。

四、数据收集

LLM 需要高质量数据进行预训练,其模型能力也依赖预处理方式和预训练语料库。下面主要讨论预训练数据的收集和处理,包括数据来源、预处理方法以及对 LLM 性能的影响分析。

1、数据来源

开发有能力的LLM关键在于收集大量自然语言语料库。现有LLM混合各种公共文本数据集作为预训练语料库,来源分为通用文本和专用文本。通用文本数据(如网页、书籍和对话文本等)规模大、多样性强且易于获取,被大多数 LLM 所利用,可增强其语言建模和泛化能力。专用数据集(如多语言数据、科学数据和代码等)可赋予 LLM 解决专用任务的能力。

DM_20230909114002_005.png现有 LLM 预训练数据中各种数据来源的比率

1)通用文本数据

通用预训练数据是LLM模型中不可或缺的部分,提供丰富的文本资源和多样的主题。其中,三种重要的通用文本数据包括网页、对话文本和书籍。

网页包括维基百科、新闻网站等,但需要过滤低质量内容。为提高数据质量,研究人员通常使用网络爬虫工具从互联网上抓取大量数据,如CommonCrawl。这些数据可能同时包含高质量和低质量的文本,因此需要进行过滤和处理。

对话文本可以增强 LLM 的对话能力和问答任务的表现。研究人员可以利用公共对话语料库的子集或从在线社交媒体收集对话数据。由于对话数据通常涉及多个参与者之间的讨论,因此一种有效的处理方法是将对话转换成树形结构,将每句话与回应它的话语相连。通过这种方式,可以将多方之间的对话树划分为预训练语料库中的多个子对话。但是,过度引入对话数据可能会导致指令错误地被认为是对话的开始,从而降低指令的有效性。

书籍是另一种重要的通用文本数据来源,相对于其他语料库,书籍提供更正式的长文本。这对于LLM学习语言知识、建模长期依赖关系以及生成叙述性和连贯的文本具有潜在的好处。现有的开源数据集包括Books3和Bookcorpus2,这些数据集可以在Pile数据集中获得。

2)专用文本数据

专用数据集对提高LLM在特定任务中的能力非常有用。三种专用数据类型包括多语言文本、科学文本和代码。

• 多语言文本:整合多语言语料库可以增强模型的多语言理解和生成能力。例如,BLOOM和PaLM在其预训练语料库中收集包含46种和122种语言的多语言数据,这些模型在多语言任务中展现出色的性能,如翻译、多语言摘要和多语言问答,并且与在目标语言上微调的最先进的模型具有可比性甚至更好的性能。

• 科学文本:科学出版物的不断增长见证了人类对科学的探索。为增强LLM对科学知识的理解,可以将科学语料库纳入模型的预训练语料,通过在大量科学文本上进行预训练,LLM可以在科学和推理任务中取得出色的性能。现有的工作主要收集arXiv 论文、科学教材、数学网页和其他相关的科学资源。由于科学领域数据的复杂性,例如数学符号和蛋白质序列,通常需要特定的标记化和预处理技术来将这些不同格式的数据转换为可以被语言模型处理的统一形式。

• 代码:程序编写在学术界和PLM应用中受到广泛关注,但生成高质量和准确的程序仍具有挑战性。最近研究显示,在大量代码语料库上预训练LLM可以提高编程质量,通过单元测试用例或解决竞赛编程问题。预训练LLM的代码语料库主要有两种来源:编程问答社区和开源软件仓库。与自然语言文本不同,代码以编程语言格式呈现,对应着长距离依赖和准确的执行逻辑。最近研究表明,训练代码可能是复杂推理能力的来源,并且将推理任务格式化为代码的形式还可以帮助 LLM 生成更准确的结果。

2、数据预处理

收集大量文本数据后,对数据进行预处理是必要的,特别是消除噪声、冗余、无关和潜在有害的数据,因为这些数据可能会影响 LLM 的能力和性能。下面将回顾提高数据质量的数据预处理策略。预处理 LLM 的预训练数据的典型流程已在图中说明。

DM_20230909114002_006.png一个典型的预处理预训练数据的流程图

1)质量过滤

为删除低质量数据,现有工作通常采用基于分类器或基于启发式的方法。基于分类器的方法使用高质量文本训练分类器,并预测每个数据的分数,从而过滤低质量数据。但这些方法可能会删除方言、口语和社会语言的高质量文本,导致偏见和减少多样性。基于启发式的方法则通过设计一组规则来消除低质量文本,这些规则可以总结为:去除重复、无关或不完整的文本;去除拼写错误、语法错误或非常规用词的文本;去除缺乏上下文信息的文本等。

2)去重

现有研究发现,语料库中的重复数据会影响模型多样性和训练过程稳定性,因此需要对预训练语料库进行去重处理。具体而言,可以在句子级、文档级和数据集级等不同粒度上去重。在句子级别上,应删除包含重复单词和短语的低质量句子;在文档级别上,可通过检测重叠比率来删除相似内容的重复文档;同时,还需防止训练集和评估集之间的重叠。这三个级别的去重都有助于改善 LLM 的训练,应该共同使用。

3)隐私去除

大多数预训练文本数据来自网络来源,包括用户生成内容涉及敏感或个人信息,可能增加隐私泄露风险。因此,需要从预训练语料库中删除可识别个人信息(PII)。一种直接有效的方法是采用基于规则的方法,例如关键字识别,来检测和删除 PII 等敏感信息。此外,研究人员还发现,LLM 在隐私攻击下的脆弱性可能归因于预训练语料库中存在的重复 PII 数据。因此,去重也可以降低隐私风险。

4)分词

分词是数据预处理的关键步骤,将原始文本分割成词序列,作为 LLM 的输入。虽然已有的分词器方便,但使用专为预训练语料库设计的分词器更有效,特别是对于多领域、语言和格式的语料库。最近的几个LLM使用SentencePiece为预训练语料库训练定制化的分词器,并利用BPE算法确保信息不会丢失。但需要注意归一化技术可能会降低分词性能。

3、预训练数据对大语言模型的影响

与小规模的PLM不同,大规模LLM通常无法进行多次预训练迭代,因此在训练之前准备充分的预训练语料库非常重要。下面将探讨预训练语料库的质量、分布等因素如何影响LLM的性能。

1)混合来源

来自不同领域或场景的预训练数据具有不同的语言特征或语义知识,混合不同来源的数据时需要仔细设置预训练数据的分布。Gopher实验表明增加书籍数据比例可以提高模型从文本中捕捉长期依赖的能力,增加C4数据集比例则会提升在C4验证数据集上的性能。但单独训练过多某个领域的数据会影响LLM在其他领域的泛化能力。因此,建议研究人员应确定预训练语料库中来自不同领域的数据的比例,以开发更符合需求的 LLM。

2)预训练数据的数量

为预训练一个有效的 LLM,收集足够的高质量数据很重要。现有研究发现,随着 LLM参数规模的增加,需要更多的数据来训练模型。许多现有的LLM由于缺乏充足的预训练数据而遭受次优训练的问题。通过广泛的实验表明,在给定的计算预算下,采用相等规模的模型参数和训练token是必要的。LLaMA 研究表明,使用更多的数据和进行更长时间的训练,较小的模型也可以实现良好的性能。因此,建议研究人员在充分训练模型时,关注高质量数据的数量。

3)预训练数据的质量

研究表明,对低质量的语料库进行预训练可能会损害模型性能。为了开发表现良好的 LLM,收集的训练数据的数量和质量都至关重要。最近的研究已经表明数据质量对下游任务性能的影响。通过比较在过滤和未过滤的语料库上训练的模型的性能,得到了相同的结论,即在清理后的数据上预训练LLM可以提高性能。更具体地说,数据的重复可能会导致“双下降现象”,甚至可能会使训练过程不稳定。此外,重复的数据会降低 LLM 从上下文中复制的能力,进一步影响 LLM 在 ICL 中的泛化能力。因此,研究人员有必要仔细地对预训练语料库进行预处理来提高训练过程的稳定性,并避免其对模型性能的影响。

五、总结与未来方向

理解和解释语言模型的涌现能力是一个重要而又有挑战的问题。随着模型规模的扩大,像链式推理这样的能力会突然出现,但其机制还不清楚。探索涌现能力的影响因素和理论解释是当前的研究热点。然而,更多正式的理论和原理还需建立,比如从复杂系统的角度解释语言模型。解读语言模型的能力和行为仍是一个值得探讨的基本问题,也是发展下一代模型的关键所在。需要跨学科视角,以期获得更深入的理解和解释。

构建更高效的Transformer变体和减轻灾难性遗忘是未来改进语言模型架构的两个重要方向。由于标准自注意力复杂度高,需要探索更高效的注意力机制。另外,微调语言模型时原有知识很容易被新数据覆盖并遗忘。所以需要通过引入更灵活的机制或模块,支持模型进行数据更新和任务专用化,同时保留原有通用能力。扩展现有架构使其既适应新任务又不遗忘旧知识是语言模型面临的关键挑战。

尽管能力强大,大语言模型仍面临小模型类似的安全性挑战,如产生错误信息、被利用产生有害内容等。主要的对策是通过人类反馈进行对齐优化,但目前的强化学习方法严重依赖大量高质量人类标注。

随着大规模语言模型(LLM)在各种任务中展现出强大的能力,正在广泛应用于现实世界的各种应用中,包括遵循自然语言指令的特定任务。ChatGPT作为一个重要的进步,已经改变了人们获取信息的方式,并在”New Bing”发布中得到了体现。在不久的将来,可以预见LLM将对信息检索技术产生重大影响,包括搜索引擎和推荐系统。此外,智能信息助手的开发和使用将随着LLM技术的升级而得到广泛推广。从更广泛的视角来看,这一技术创新浪潮将形成一个以LLM为支持的应用生态系统,例如ChatGPT对插件的支持,与人类的生活息息相关。




首页
产品
新闻
联系
Powered by MetInfo 7.3.0 ©2008-2021  mituo.cn