在上一篇《Generative AI 新世界:文本生成畛域论文解读》中,我率领大家一起梳理了文本生成畛域(Text Generation)的次要几篇论文:InstructGPT,RLHF,PPO,GPT-3,以及 GPT-4。本期文章我将帮忙大家一起梳理另一个目前煊赫一时的话题:大型语言模型(Large Language Models,或简写为 LLMs)。
亚马逊云科技开发者社区为开发者们提供寰球的开发技术资源。这里有技术文档、开发案例、技术专栏、培训视频、流动与比赛等。帮忙中国开发者对接世界最前沿技术,观点,和我的项目,并将中国优良开发者或技术举荐给寰球云社区。如果你还没有关注 / 珍藏,看到这里请肯定不要匆匆划过,点这里让它成为你的技术宝库! |
大型语言模型指的是具备数十亿参数(B+)的预训练语言模型(例如:GPT-3, Bloom, LLaMA)。这种模型能够用于各种自然语言解决工作,如文本生成、机器翻译和自然语言了解等。
大型语言模型的这些参数是在大量文本数据上训练的。现有的大型语言模型次要采纳 Transformer 模型架构,并且在很大水平上扩大了模型大小、预训练数据和总计算量。他们能够更好地了解自然语言,并依据给定的上下文(例如 prompt)生成高质量的文本。其中某些能力(例如上下文学习)是不可预测的,只有当模型大小超过某个程度时能力察看到。
以下是 2019 年以来呈现的各种大型语言模型(百亿参数以上)时间轴,其中标黄的大模型已开源。
Source:A timeline of existing LLMs(>10B) https://arxiv.org/abs/2303.18223?trk=cndc-detail
在本期文章中,咱们将一起探讨大型语言模型的倒退历史、语料起源、数据预处理流程策略、训练应用的网络架构、最新钻研方向剖析(LLaMA、PaLM-E 等),以及在亚马逊云科技上进行大型语言模型训练的一些最佳落地实际等。
大型语言模型的倒退历史
咱们首先来理解下大型语言模型的倒退历史和最新钻研方向剖析。
大型语言模型 1.0。过来五年里,自从咱们看到最后的 Transformer 模型 BERT、BLOOM、GPT、GPT-2、GPT-3 等的呈现,这一代的大型语言模型在 PaLM、Chinchilla 和 LLaMA 中达到了高峰。第一代 Transformers 的共同点是:它们都是在大型未加标签的文本语料库上进行预训练的。
大型语言模型 2.0。过来一年里,咱们看到许多通过预训练的大型语言模型,正在依据标记的指标数据进行微调。第二代 Transformers 的共同点是:对指标数据的微调,应用带有人工反馈的强化学习(RLHF)或者更经典的监督式学习。第二代大型语言模型的热门例子包含:InstructGPT、ChatGPT、Alpaca 和 Bard 等。
大型语言模型 3.0。过来的几个月里,这个畛域的热门主题是 参数高效微调和对特定畛域数据进行预训练 ,这是目前进步大型语言模型计算效率和数据效率的最新办法。另外,下一代大型语言模型可能 以多模态和多任务学习为核心,这将为大型语言模型带来更多簇新并冲破想象力的泛滥新性能。
在本文第二章节“大模型最新钻研方向剖析”中,咱们还会深入探讨参数微调、特定数据预训练和多模态等方向的相干停顿剖析。
近年来的大型语言模型概览
Source: https://arxiv.org/abs/2303.18223?trk=cndc-detail
上图展现了近年来大型语言模型(大于 10B 的参数)的统计数据,包含容量评估、预训练数据规模(token 数量或存储大小)和硬件资源老本。
图中,“Adaptation”示意模型是否通过了后续微调:IT 示意指令调整,RLHF 示意通过人工反馈进行强化学习。“Evaluation”示意模型在原始论文中是否通过了相应能力的评估:ICL 示意上下文学习(in-context learning),CoT 示意思维链(chain-of-thought)。
大型语言模型的语料起源
与晚期的预训练语言模型(PLMs)相比,蕴含更多参数的大型语言模型须要更大的训练数据量,涵盖了更宽泛的内容。为了满足这种需要,曾经公布了越来越多的用于钻研的训练数据集。依据他们的内容类型,大抵可分类为六组:图书、CommonCrawl、Reddit 链接、维基百科、代码和其它。如下表所示:
Source: https://arxiv.org/abs/2303.18223?trk=cndc-detail
Source: https://arxiv.org/abs/2303.18223?trk=cndc-detail
上图展现了现有大型语言模型预训练数据中,各种不同的数据起源占比比率的信息。
大型语言模型的数据预处理策略
在收集了大量数据后,对其进行预处理对于构建预训练语料库至关重要,尤其是要删除嘈杂、冗余、不相干和潜在的有毒数据,这可能会在很大水平上影响大型语言模型的容量和性能。该论文中,研究者们用一个章节专门论述了其钻研团队的数据预处理策略,以及如何通过各种办法来进步所收集数据品质。
Source: https://arxiv.org/abs/2303.18223?trk=cndc-detail
上图为该论文论述大型语言模型的预训练数据处理的典型策略概览图。
大型语言模型的网络结构
大型语言模型在训练阶段的网络结构设计参数,也是影响大型语言模型性能的重要指标之一。下表列举了一些大型语言模型的次要网络结构参数,包含:token 大小、归一化形式、地位嵌入形式、激活函数、是否应用 Bias、层数、注意力头的数量、暗藏状态大小、最大上下文长度等参数。如下表所示:
Source: https://arxiv.org/abs/2303.18223?trk=cndc-detail
上表概述了蕴含具体配置信息的多个大型语言模型的型号卡(Model cards):
- PE 示意地位嵌入
- L 表示层数
- H 示意注意力头的数量
- dmodel 示意暗藏状态的大小
- MCL 示意最大上下文长度
大型语言模型的涌现能力
LLM 的涌现能力被正式定义为「在小型模型中不存在但在大型模型中呈现的能力」,这是 LLM 与以前的 PLM 辨别开来的最显著特色之一。当呈现这种新的能力时,它还引入了一个显著的特色:当规模达到肯定程度时,性能显著高于随机的状态。以此类推,这种新模式与物理学中的相变景象密切相关。原则上,这种能力也能够与一些简单的工作无关,而人们更关怀能够利用于解决多个工作的通用能力。
Source: https://arxiv.org/pdf/2206.07682.pdf?trk=cndc-detail
在大量提醒(few-shot prompting)办法下测试了以下八个不同场景的模型性能:
- 算术运算(Mod. arithmetic)
- 语音翻译(IPA transliterate)
- 单词解读(Word unscramble)
- Persian QA
- TruthfulQA 基准
- 概念映射(Grounded mappings)
- 多任务语言了解(Multi-task NLU)
- 上下文了解基准
每个点都是一个独自的模型。当语言模型实现随机时,就会呈现通过大量提醒(few-shot prompting)办法执行工作的能力性能,在模型大小达到肯定规模之后,性能会显著进步到远高于随机程度。
目前大型语言模型次要有三种代表性的涌现能力,别离是:
- 上下文学习
- 指令遵循
- 循序渐进的推理
上下文学习。GPT-3 正式引入了上下文学习能力:假如语言模型曾经提供了自然语言指令和多个工作形容,它能够通过实现输出文本的词序列来生成测试实例的预期输入,而无需额定的训练或梯度更新。
指令遵循。通过对自然语言形容(即指令)格式化的多任务数据集的混合进行微调,LLM 在渺小的工作上体现良好,这些工作也以指令的模式所形容。这种能力下,指令调优使 LLM 可能在不应用显式样本的状况下通过了解工作指令来执行新工作,这能够大大提高泛化能力。
循序渐进的推理。对于小语言模型,通常很难解决波及多个推理步骤的简单工作,例如数学学科单词问题。同时,通过思维链推理策略,LLM 能够通过利用波及两头推理步骤的 prompt 机制来解决此类工作得出最终答案。据揣测,这种能力可能是通过代码训练取得的。
大模型最新钻研方向剖析
Amazon Titan
2023 年 4 月,亚马逊云科技发表推出 Amazon Titan 模型。依据其以下官方网站和博客的信息(如下图所示):一些亚马逊云科技的客户曾经预览了亚马逊全新的 Titan 根底模型。目前公布的 Amazon Titan 模型次要包含两个模型:
- 针对总结、文本生成、分类、开放式问答和信息提取等工作的生成式大语言模型;
- 文本嵌入(embeddings)大语言模型,可能将文本输出(字词、短语甚至是大篇幅文章)翻译成蕴含语义的数字表白(jiembeddings 嵌入编码)。
Source: https://aws.amazon.com/cn/bedrock/titan/ https://aws.amazon.com/cn/blogs/china/aws-announces-new-tools-for-generative-ai/?trk=cndc-detail
尽管这种大语言模型不生成文本,但对个性化举荐和搜寻等应用程序却大有裨益,因为绝对于匹配文字,比照编码能够帮忙模型反馈更相干、更合乎情境的后果。实际上,Amazon.com 的产品搜寻能力就是采纳了相似的文本嵌入模型,可能帮忙客户更好地查找所需的商品。为了继续推动应用负责任 AI 的最佳实际,Titan 根底模型能够辨认和删除客户提交给定制模型的数据中的无害内容,回绝用户输出不当内容,过滤模型中蕴含不当内容的输入后果,如怨恨舆论、脏话和语言暴力。
Alpaca: LLM Training LLM
2023 年 3 月 Meta 的 LLaMA 模型公布,该模型对标 GPT-3。曾经有许多我的项目建设在 LLaMA 模型的根底之上,其中一个驰名的我的项目是 Stanford 的羊驼(Alpaca)模型。Alpaca 基于 LLaMA 模型,是有 70 亿参数指令微调的语言 Transformer。Alpaca 没有应用人工反馈的强化学习(RLHF),而是应用监督学习的办法,其应用了 52k 的指令 - 输入对(instruction-output pairs)。
Source: https://github.com/tatsu-lab/stanford_alpaca?trk=cndc-detail
钻研人员没有应用人类生成的指令 - 输入对,而是 通过查问基于 GPT-3 的 text-davinci-003 模型来检索数据。因而,Alpaca 实质上应用的是一种弱监督(weakly supervised)或以常识蒸馏(knowledge-distillation-flavored)为主的微调。
Source:https://crfm.stanford.edu/2023/03/13/alpaca.html?trk=cndc-detail
这里值得关注的是羊驼(Alpaca)模型的训练数据,是通过查问 GPT-3 模型取得的。艰深地来说,这是“用 LLM 来训练 LLM”,或者称之为“用 AI 来训练 AI”。我感觉大多数人可能低估了这件事件对人类社会影响的意义,我感觉其意义不凡。这意味着:AI 之间的互相学习成长这件事,曾经开始了。很多年后,当咱们回望 AI 世代的演进史,这件事兴许会是一个重要的工夫节点。
PaLM-E: Multimodality
在 2023 年 3 月,PaLM-E 模型公布,展现了在大型语言模型和多模态数据模式(multimodality)交融的一些最新进展。这是大型语言模型的另一个重要趋势:通过视觉、多模态和多任务训练来扩大能力。
Source: PaLM-E paper: https://arxiv.org/pdf/2303.03378.pdf?trk=cndc-detail
如以上论文中的图示,PaLM-E 模型是一种用于具体推理工作、视觉语言工作和语言工作的繁多通用多模态语言模型。PaLM-E 模型对多模态句子进行操作,即一系列标记,其中来自任意模式(例如图像、神经三维示意或状态,绿色和蓝色)的输出与文本标记(橙色)一起插入,作为 LLM 的输出,通过端到端训练。
Source: PaLM-E paper: https://arxiv.org/pdf/2303.03378.pdf?trk=cndc-detail
该论文展现了 PaLM-E 在三个不同的机器人畛域做迁徙学习的测试后果比照图。应用 PaLM-E、ViT 预训练、机器人和视觉语言的混合数据组合,与仅对相应的域内数据进行训练相比,有显著的性能晋升。
值得注意的是,PaLM-E 持续被训练为一个齐全基于解码器的 LLM,它依据给定的前缀或提醒自回归生成文本补全。那么,它们如何启用状态表征或者图像的输出呢?他们对网络进行了预训练以将其编码为 embeddings。对于图像,他们应用 4B 和 22B 参数的视觉 Transformer (ViT) 来生成嵌入向量;而后对这些嵌入向量进行线性投影,以匹配单词令牌嵌入的嵌入维度。
在训练过程中,为了造成多模态的句子,他们首先应用非凡标记 Tokens,例如:、等,而后将其与嵌入的图像替换(相似于通过嵌入层嵌入单词标记的形式)。
Source: https://magazine.sebastianraschka.com/p/ahead-of-ai-7-large-l…
一些第三方畛域学者对其论文和展现的性能晋升也做了剖析,如上图所示。应用 PaLM-E、ViT 预训练、机器人和视觉语言的混合数据组合进行联结训练,与针对单个工作的训练模型相比,能够实现两倍以上的性能晋升。
大型语言模型的训练和构建优化
训练大型语言模型的挑战
训练大型语言模型波及许多挑战。这些挑战概括来说,大抵来自于六个方面,如下图示:
- 硬件(Hardware)
- 健康检查(Health Checks)
- 编排(Orchestration)
- 数据(Data)
- 规模扩大(Scaling up)
- 老本思考(Cost)
首先是硬件。你想应用最新的硬件。最新的硬件通常能够让你在各种基准测试中取得更好的性能,因而,如果这些模型须要数周或数月的工夫来训练,而你没有利用最新硬件的性能劣势,那么你将无奈训练模型以取得最适宜你的用例的后果。
第二个是健康检查。您须要确保硬件运行良好,以便最大限度地缩小模型训练期间的烦扰。
咱们还须要思考编排,启动集群,敞开集群,确保网络和平安配置运行良好,机器学习团队在运行各种工作负载时不会互相烦扰。
咱们须要思考的其余事件是大数据集。存储、解决和加载它们以进行机器学习训练并不是一件容易的事,并且可能须要大量的开发工作能力高效实现。
咱们扩充基础设施的规模并设计算法以绕过基础设施的局限性是另一个挑战。咱们明天议论的模型通常不适用于单个 GPU,因而你必须思考如何将该模型拆分到 GPU 上。
最初,咱们必须思考老本。这些大型模型的训练老本可能高达数十万甚至数百万美元。所以,你想很好地利用机器学习团队的工夫。与其让他们在基础架构上工作,他们能够专一于尝试新的模型创意,这样您的企业就能够利用该模型获得最佳后果。
大型语言模型的构建优化
侥幸的是,Amazon SageMaker 能够帮忙你应答所有这些挑战,从而减速大型语言模型的训练。当初,Amazon SageMaker 可帮忙您应用托管基础设施、工具和工作流程为任何用例构建、训练和部署机器学习模型。如下图所示。
下图中黄色的局部,例如:Amazon SageMaker 分布式训练库、Amazon SageMaker 训练编译优化等,咱们还会在下一篇的入手试验局部,用残缺的代码来演绎实现,让你有更身临其境的感触。
在上层,咱们有基础设施,Amazon SageMaker 可让你拜访最新的硬件,包含 GPU 和 Trainium,以及实例之间的疾速网络互连,这对于散发训练至关重要。
在中间层,有托管基础设施和工具的能力。
Amazon SageMaker 会为你解决大规模集群编排,它减速了集群,最初它会向下旋转。它有助于实现所有这些平安和网络配置,因而你能够轻松爱护客户数据和 IP 的平安。
在训练工作开始时还会进行健康检查,以确保硬件无效运行,缩小对训练工作的烦扰。编排还意味着你只需为所用的计算资源付费。你只须要在集群启动时付费,为你训练模型,这样你就不用全天候为所有低廉的硬件付费。
还有用于剖析、调试和监控试验的工具,以及应用各种策略进行超参数优化的工具,以确保取得尽可能好的模型。
在顶层,有针对云端进行了优化的框架和库,例如在 Amazon SageMaker 上十分易于应用的 PyTorch、TensorFlow 和 Hugging Face,以及可帮忙你解决超大型数据集或超大型模型的 Amazon SageMaker 分布式训练库。
我曾经谈了很多应用 Amazon SageMaker 进行训练的能力和益处,让咱们来谈谈它是如何运作的。训练模型,咱们须要一些计算资源,而后在某些数据集上运行咱们编写的训练代码。Amazon SageMaker 做到这一点的办法是:通过启动短暂的训练集群来实现工作。
当提交训练作业时,Amazon SageMaker 将依据你抉择的集群配置启动集群。它将从 ECR 加载训练代码,从 S3 加载数据,而后开始训练。训练过程中,它会将日志和指标输入到 CloudWatch,将模型检查点(checkpoint)同步到 S3,并在工作完结时敞开集群。如果你编写的代码思考了具备弹性,编写成可能从检查点主动复原,则你的训练作业将无需手动干涉即可主动重启。
以下是用于开始训练作业的外围代码,即 estimator API:
from sagemaker.pytorch import PyTorch
estimator = PyTorch(entry_point =‘./cifar10.py’,
role = role,
framework_version =‘1.13’,
py_version =‘py38’,
instance_count = 1,
instance_type =‘ml.g5.xlarge’,
hyperparameters = {‘epochs’: 50,‘batch_size’: 32},
metric_definitions = [{‘Name’:‘train:loss’,‘Regex’:‘loss: (.*)’}]
estimator.fit(“s3://bucket/path/to/training/data”)
左滑查看更多
这里抉择了 PyTorch 估算器,并定义了入口点的函数文件:cifar10.py。这与咱们在本人的本地电脑上运行用于训练模型的脚本十分类似,咱们称之为脚本模式。应用 Amazon SageMaker 训练作业的办法有很多,灵活性更强,你能够提供本人的 docker 容器或一些内置算法。
而后定义想要应用的框架和 Python 版本,以及训练作业的实例类型、实例数量和超参数。你当初能够随时轻松更改这些内容,启动其余训练任务来尝试不同的实例类型,看看哪种硬件最适宜你的用例。
接下来将给出指标定义。这将通知 Amazon SageMaker 如何解析从脚本中输入的日志,Amazon SageMaker 会将这些指标发送到 CloudWatch,供你稍后查看。
最初调用 estimator.fit(),其中蕴含训练数据的门路。
大模型训练在亚马逊云科技上的最佳实际
本章节内容,将重点关注大型语言模型在亚马逊云科技上的最佳训练实际。大抵分为五大方面:
- 计算(Compute) — Amazon SageMaker Training
- 存储(Storage) — 能够通过两种形式实现数据加载和检查点(checkpointing)配置:Amazon FSx Lustre 文件系统或 Amazon S3
- 并行化(Parallelism)— 抉择分布式训练库对于正确应用 GPU 至关重要。咱们倡议应用通过云优化的库,例如 SageMaker 分片数据并行处理,但自治理库和开源库也能够应用
- 联网(Networking) — 确保 EFA 和 NVIDA 的 GPUDirectRDMA 已启用,以实现疾速的机器间通信
- 弹性(Resiliency) — 在大规模状况下,可能会产生硬件故障。咱们倡议定期写入检查点(checkpointing)
因为篇幅所限,恕本文不能残缺解读剖析以上五个方面的最佳实际优化,你可通过亚马逊云科技的官网博客理解详情。
以下咱们会简略介绍下大模型训练并行化(Parallelism)在亚马逊云科技上的最佳实际。
大模型训练的并行化(Training Parallelism)
大模型通常有数十到数千亿个参数,这使得它们无奈包容在单个 GPU 卡中。大模型畛域目前已有多个训练分布式计算的开源库,例如:FSDP、DeepSpeed 和 Megatron。你能够在 Amazon SageMaker Training 中间接运行这些库,也能够应用 Amazon SageMaker 分布式训练库,这些库曾经针对亚马逊云进行了优化,可提供更简略的开发人员体验。
因而,在大型语言模型畛域的开发人员,在亚马逊云科技上目前有两种抉择:
- 在 Amazon SageMaker 上应用优化过的分布式库进行分布式训练;
- 本人来治理分布式训练。
以下将概述如何在 Amazon SageMaker 上,应用优化过的分布式库进行分布式训练。
为了提供更好的分布式训练性能和可用性,Amazon SageMaker Training 提出了几种专有扩大来扩大 TensorFlow 和 PyTorch 训练代码。在实在场景里,大型语言模型的训练通常以多维度并行(3D-parallelism)的形式在进行:
- 数据并行(data parallelism):可拆分训练小批次并将其馈送到模型的多个雷同正本,以进步处理速度
- 流水线并行(pipeline parallelism):将模型的各个层归因于不同的 GPU 甚至实例,以便将模型大小扩大到单个 GPU 和单个服务器以外
- Tensor 并行(tensor parallelism):将单个层拆分为多个 GPU,通常位于同一服务器内,以将单个层扩大到超过单个 GPU 的大小
以下示例图,展现了如何在具备 8k3 个 GPU(每台服务器 8 个 GPU)的 k*3 服务器集群上训练 6 层模型。数据并行度为 k,流水线并行度为 6,张量并行度为 4。集群中的每个 GPU 蕴含模型层的四分之一,残缺模型分为三台服务器(总共 24 个 GPU)。
Source: https://aws.amazon.com/cn/blogs/machine-learning/training-lar…
其中和大型语言模型特地相干的分布式实际包含:
- Amazon SageMaker 分布式模型并行 — 该库应用图形分区生成针对速度或内存进行了优化的智能模型分区。Amazon SageMaker 分布式模型并行提供了最新、最好的大型模型训练优化,包含数据并行、流水线并行、张量并行、优化器状态分片、激活检查点和卸载。
- Amazon SageMaker 分片数据并行——在 MiCS: Near-linear Scaling for Training Gigantic Model on Public Cloud 论文中,引入了一种新的模型并行策略,该策略仅在数据并行组上划分模型,而不是整个集群。借助 MiCS,亚马逊云科技的科学家们可能在每个 GPU 上实现 176 万亿次浮点运算(实践峰值的 56.4%),从而在 EC2 P4de 实例上训练 210 层、1.06 万亿个参数的模型。作为 Amazon SageMaker 并行共享数据,MIC 现已可能向 Amazon SageMaker Training 客户提供。
Amazon SageMaker 分布式训练库提供高性能和更简略的开发者体验。开发人员无需编写和保护自定义的并行过程启动器,或应用特定于框架的启动工具,因为并行启动器曾经内置在 Amazon SageMaker 的工作启动 SDK 之中。
与传统分布式训练相比,大型语言模型的微调通常不仅要求数据并行,数据并行和模型并行须要同时进行。Amazon SageMaker Model Parallelism 在易用性和稳定性 (OOM) 上与开源自建计划(如 DeepSpeed)相比具备外围竞争劣势。对于基于哪些模型进行具体微调、具体最佳实际等技术细节,你还能够征询亚马逊云科技的解决方案架构师团队,取得更进一步的技术支持和业余倡议。
总结
本期文章咱们一起探讨大型语言模型的倒退历史、语料起源、数据预处理流程策略、训练应用的网络架构、最新钻研方向剖析(LLaMA、PaLM-E 等),以及在亚马逊云科技上进行大型语言模型训练的一些最佳落地实际等。下期文章,咱们将重点探讨入手实际,解读和演示大型语言模型(LLMs)在亚马逊云科技上的部署、编译优化、分布式训练等方面的入手试验,敬请期待。
请继续关注 Build On Cloud 微信公众号,理解更多面向开发者的技术分享和云开发动静!
往期举荐
GitOps 最佳实际
开发者生态
机器学习洞察
作者黄浩文
亚马逊云科技资深开发者布道师,专一于 AI/ML、Data Science 等。领有 20 多年电信、挪动互联网以及云计算等行业架构设计、技术及守业治理等丰盛教训,曾就任于 Microsoft、Sun Microsystems、中国电信等企业,专一为游戏、电商、媒体和广告等企业客户提供 AI/ML、数据分析和企业数字化转型等解决方案咨询服务。
文章起源:https://dev.amazoncloud.cn/column/article/64411c1dfed6cd33add…