突破边界:高性能计算引领 LLM 驶向通用人工智能 AGI 的创新纪元
AGI | AIGC | 大模型训练 | GH200
LLM | LLMs | 大语言模型 | MI300
ChatGPT 的成功带动整个 AIGC 产业的发展,尤其是 LLM(大型语言模型,大语言模型)、NLP、高性能计算和深度学习等领域。LLM 的发展将为全球和中国 AI 芯片、AI 服务器市场的增长提供强劲动力,据估算,LLM 将为全球和中国 AI 服务器带来约 891.2 亿美元和 338.2 亿美元的市场空间。
国外厂商在 LLM 领域具有领先优势,但我国 LLM 产品也在快速发展,2023 年以来多家厂商推出了自研的通用 LLM,国产 LLM 在各行业的应用以及生态建设也取得积极进展。虽然我国 LLM 相比 GPT-4 或仍有一定差距,但在短期内达到或接近 ChatGPT 的水平是可以预期的。
值得关注是 AMD 上周推出 MI300 系列加速卡,旨在与英伟达展开竞争。MI300 系列是 AMD 为 AI 和高性能计算打造的一系列最新 APU 加速卡,包括 MI300A 和 MI300X。其中 MI300A 集成了 CPU 和 GPU,而 MI300X 则是一款专门面向生成式 AI 推出的加速器,对标英伟达 H100。从性能参数看,MI300 系列产品足以比肩甚至超越英伟达的高端加速卡,但总的来说,短期仍然难以撼动英伟达在该领域的绝对领先地位。
展望下半年,我国大模型产品已经初步具备商用能力。北上深三地利好通用人工智能发展政策的发布,彰显我国对 AIGC 发展的重视和支持,同时将为其他城市发布类似政策带来示范效应。在政策与技术的共振下,我国 AIGC 产业未来发展前景广阔。
如今,国内在 LLM 模型相关技术方面距离最先进技术的差距进一步加大。在 Bert 出现之后的一到两年间,国内在这块的技术追赶速度很快的同时也提出了一些很好的改进模型。差距拉开的分水岭应该是在 GPT 3.0 出来之后,也就是 2020 年年中左右。在当时,其实只有少数的人觉察到 GPT 3.0 它不仅仅是一项具体的技术,更能体现出 LLM 应该往何处去的一个发展理念。
大型语言模型(LLM)是一种低成本、高效率的技术,它在自然语言处理(NLP)和人工智能(AI)领域引起了广泛关注。其中,ChatGPT 作为 LLM 的代表,是否带来了 NLP 和 AI 领域的研究范式转变?如果是,将会产生怎样的影响?LLM 通过从海量数据中学习,积累了丰富的知识。那么,LLM 是如何存取这些知识的呢?随着 LLM 规模逐步增大,它将对研究和应用产生怎样的影响?此外,上下文学习(In Context Learning)是一项神秘的技术,它与指令(Instruct)有着密切的关系。LLM 是否具备推理能力?思维链(CoT)又是如何实现的呢?接下来,将详细介绍以上提到的方面。
LLMs 的背景、能力
一、LLM 的背景
LLM(大型语言模型,大语言模型)是指使用大量文本数据训练的语言模型,包含数千亿或更多的参数。采用 Transformer 架构和语言建模预训练目标,但相较于小型模型,LLM 模型大小、预训练数据和总计算量更大。这使得它们可以更好地理解自然语言,并生成高质量的文本。LLM 的容量改进可以用标度律进行部分地描述,但某些能力只有在模型大小超过某个水平时才能观察到。
二、LLM 的涌现能力
LLM 的涌现能力是指在小型模型中不存在但在大型模型中出现的能力,是 LLM 与以前的 PLM 区分的最显著特征之一。当规模达到一定水平时,LLM 的性能显著高于随机状态,这种新模式与物理学中的相变现象密切相关。LLM 的涌现能力可以与一些复杂的任务有关,人们更关心的是它的通用能力。
LLM 的三种代表性的涌现能力包括上下文学习、指令遵循和循序渐进的推理。其中,上下文学习能力使得语言模型可以通过完成输入文本的词序列来生成测试实例的预期输出;指令遵循能力使得 LLM 能够在不使用显式样本的情况下通过理解任务指令来执行新任务,从而提高泛化能力;循序渐进的推理能力使得 LLM 可以通过利用涉及中间推理步骤的 prompt 机制来解决复杂任务得出最终答案。
NLP 研究范式的转换
从浅层语义到深层语义的建模
在过去的 10 年中,NLP 领域可能经历了两次重要的研究范式转换。
一、从深度学习到两阶段预训练模型
NLP 领域引入深度学习大致从 2013 年开始,直到 GPT 3.0 出现之前(2020 年 5 月左右)。在 Bert 和 GPT 模型出现之前,NLP 领域流行的技术主要是深度学习模型,主要依托于改进的 LSTM 和 CNN 模型作为特征抽取器,以及 Sequence to Sequence+Attention 作为总体技术框架。然而,这些虽然增加了模型层深,但在解决具体任务上的效果仍然不够成功。这主要是由于任务训练数据量有限和 LSTM/CNN 特征抽取器表达能力不够强所致。
直到 Bert 和 GPT 这两个预训练模型的出现,才代表了 NLP 领域的一个技术飞跃,并带来了整个领域研究范式的转换。这种范式转换带来的影响主要体现在两个方面:一是部分 NLP 研究子领域的衰退乃至逐步消亡;二是 NLP 不同子领域的技术方法和技术框架日趋统一,技术栈基本收敛到两种技术模式中。
1、部分 NLP 研究子领域的衰退乃至逐步消亡
NLP 是一个宏观研究领域的统称,里面有五花八门具体的子领域与子方向,如果仔细分析,从任务的性质角度,可以把这些任务分成两大类:中间任务和最终任务。
1)中间任务
典型的中间任务主要包括中文分词、词性标注、NER、句法分析、指代消解、语义 Parser 等,这类任务一般并不解决应用中的实际需求,大多数是作为那些解决实际需求任务的中间阶段或者辅助阶段存在。比如几乎没有需求说,要一个句法 Parser,把这个句子的句法分析树给用户看看,用户不需要看到这些 NLP 的中间阶段处理结果,只需关心某个具体任务有没有干好。
2)最终任务
这类任务(文本分类、文本相似性计算、机器翻译、文本摘要等)的特点是每个子领域都解决某个实际需求,任务结果基本能直接呈现给用户,比如用户确实存在给你一句英文,告诉他中文是什么的需求。
按理说,“中间任务”不应该出现,而之所以会存在的原因是 NLP 技术发展水平不够高。在技术发展早期阶段,由于当时技术相对落后,很难一步做好有难度的最终任务。如机器翻译,早期技术要做好机器翻译是很困难的,于是科研人员就把难题分而治之,分解成分词、词性标注、句法分析等各种中间阶段,先把每个中间阶段做好,然后再拼起来完成最终任务。
自从 Bert/GPT 出现之后,就没有必要做中间任务。因为通过大量数据的预训练,Bert/GPT 已经把这些中间任务作为语言学特征,吸收到 Transformer 的参数里,此时完全可以端到端地直接解决那些最终任务,而无须对这种中间过程专门建模。
2、不同研究方向技术路线的统一
除了“中间任务”,NLP 任务可以划分为两大类型:自然语言理解和自然语言生成。自然语言理解任务包括文本分类、句子关系判断、情感倾向判断等分类任务,模型根据输入文本判断其属于哪个类别。自然语言生成任务包括聊天机器人、机器翻译、文本摘要、问答系统等生成任务,模型根据输入文本生成相应输出文本。
自 Bert/GPT 模型出现后,NLP 领域出现了技术统一趋向,特征抽取器逐渐从 LSTM/CNN 统一到 Transformer 上,多数任务采用预训练+微调或 Zero/Few Shot Prompt 模式。自然语言理解任务采用 Bert 为代表的双向语言模型预训练+Fine-tuning 模式,自然语言生成任务采用 GPT 2.0 为代表的自回归语言模型+Zero/Few Shot Prompt 模式。这两种模式背后的发展思路和未来发展方向不同,但很多人低估了 GPT 模式的潜力。GPT 模式的自回归语言模型可以生成高质量的文本,能够应用于多个自然语言生成任务且具有良好的迁移能力。相比之下,Bert 模式在生成任务上表现较差且 Fine-tuning 方式需要大量标注数据,不易适应新任务。
二、从预训练模型走向通用人工智能 (AGI,Artificial General Intelligence)
这次范式转换涵盖的时间大致在 GPT3.0 出现后,从 2020 年 6 月左右开始一直持续到现在。ChatGPT 转换的关键节点,但在 InstructGPT 出现之前,LLM 处于范式转换的过渡期。
1、以 GPT 3.0 为代表的“自回归语言模型+Prompting”模式占据统治地位
在预训练模型发展的早期,技术框架收敛到 Bert 模式和 GPT 模式这两种不同的技术范型,而且人们普遍更看好 Bert 模式一些,相当多数的后续技术改进,都是沿着 Bert 那条路走。但是,随着技术的继续发展就发现目前规模最大的 LLM 模型,几乎清一色都是类似 GPT 3.0 的“自回归语言模型+Prompting”模式(如 GPT-3、PaLM、GLaM、Gopher、Chinchilla、MT-NLG、LaMDA 等)。为什么会这样呢?背后一定有其必然性,主要源于两个原因。
1)Google 的 T5 模型,在形式上统一自然语言理解和自然语言生成任务的外在表现形式
如上图所示,T5 模型中的文本分类问题和判断句子相似性的回归或分类问题,都是典型的自然语言理解问题。在 T5 模型中,这些自然语言理解问题的输入输出形式与生成问题保持一致,可以将分类问题转换成让 LLM 模型生成对应类别的字符串,从而实现理解和生成任务在表现形式上的完全统一。这表明自然语言生成任务在表现形式上可以兼容自然语言理解任务,而反过来则很难做到这一点。这样做的好处是,同一个 LLM 生成模型可以解决几乎所有 NLP 问题。相比之下,如果仍然采用 Bert 模式,LLM 模型则无法很好地处理生成任务。
2)如果要以零示例提示语(zero shot prompting)或少数示例提示语(few shot prompting)的方式做好任务就必须要采取 GPT 模式
研究表明,以 fine-tuning 方式解决下游任务时,Bert 模式的效果优于 GPT 模式。但是,如果是以 zero shot/few shot prompting 模式解决下游任务,则 GPT 模式的效果要优于 Bert 模式。这说明,生成模型更容易完成 zero shot/few shot prompting 方式的任务,而 Bert 模式在这种方式下做任务时存在劣势。
那么问题来了:为什么要追求 zero shot/few shot prompting 方式来做任务呢?要解释清楚这个问题,首先需要搞清楚另外一个问题:什么样的 LLM 模型最理想的?
对于 LLM 模型来说,首先,应该具备强大的自主学习能力。如果将世界上所有可获得的文本、图片等不同类型的数据输入模型中,应该能够自动学习其中包含的所有知识点,学习过程不需要人的介入,并且能够灵活应用所学知识来解决实际问题。由于数据量庞大,要吸收所有知识,模型必然需要具备大量的参数来存储知识,因此这个模型必然会是一个巨无霸模型。
其次,LLM 模型应该能够解决 NLP 任何子领域的问题,而不仅限于某个有限的领域,甚至应该能够响应 NLP 之外的其他领域的问题。此外,当使用 LLM 模型解决某个具体领域的问题时,应该使用人类习惯的表达方式,即 LLM 应该理解人类的命令。这体现让 LLM 适应人类,而不是让人去适应 LLM 模型。人适应 LLM 的典型例子是,人们会费尽心思地尝试各种不同的 prompt,以试图找到好的提示语,以便更好地解决手头问题。
为什么要追求 zero shot/few shot prompting 这种方式来解决任务?主要有以下两个原因。
1)理想中的 LLM 模型规模必然非常巨大,只有极少数机构有能力制作出这个模型或改动模型参数。任务需求方却千千万万,其中大多数是中小机构甚至个人即使模型开源,也无法部署这个模型,更不用说再使用 Fine-tuning 这种模式去修改模型参数了。因此应该追求不修正模型参数就能让任务需求方完成任务的方式,即应该采取 prompt 模式完成任务,而非 Fine-tuning 模式。模型制作方则将 LLM 作为公用服务,以 LLM as Service 的模式运行。
作为服务支持方,考虑到用户需求的多样性,LLM 模型制作方更应该追求让 LLM 能够完成尽可能多类型的任务,这是附带的影响,也是为何超级大模型一定会追求走向 AGI 的现实因素。
2)zero shot prompting 也好,few shot prompting 也好,甚至促进 LLM 推理能力的思维链(CoT, Chain of Thought)Prompting 也好,都是现有技术中的一种。具体而言,zero shot prompting 的初衷是直接用人类常用的任务表述方式让 LLM 做事情,但是发现 LLM 并不能很好地理解,效果也不好。经过继续研究,人们转而发现,对于某项任务,如果给 LLM 几个示例,用这些示例来代表任务描述,效果会比 zero shot prompting 好,于是都开始研究更好的 few shot prompting 技术。
可以理解为,本来希望 LLM 能够用人类常用的命令方式来执行某个任务,但是目前技术还做不到,所以退而求其次,用这些替代技术来表达人类的任务需求。如果理解了上述逻辑,很容易得出如下结论:few shot prompting(也被称为 In Context Learning)只是一种过渡时期的技术。如果能够更自然地去描述一个任务,而且 LLM 可以理解,那么肯定会毫不犹豫地抛弃这些过渡期的技术,原因很明显,用这些方法来描述任务需求,并不符合人类的使用习惯。
2、让 LLM 适配人的新型交互接口
ChatGPT 是一种能力强大、善解人意的技术方法,最接近理想的 LLM 模型。ChatGPT 的强大能力主要得益于 GPT 3.5 模型,而非人工标注数据。虽然加入了人工标注数据,但这些数据量级只有数万,对 GPT 3.5 的基础能力增强作用微乎其微。
ChatGPT 的最大贡献在于它基本实现了理想 LLM 的接口层,让 LLM 适配人的习惯命令表达方式,而不是反过来让人去适配 LLM。这增加了 LLM 的易用性和用户体验,是一种更符合人类表达习惯的人和 LLM 进行交互的人机接口技术。ChatGPT 的技术贡献必将启发后续的 LLM 模型,在易用人机接口方面继续做进一步的工作。
3、很多 NLP 子领域不再具备独立研究价值
范式转换将会改变 NLP 领域的格局,许多独立存在的研究领域将被 LLM 技术体系所纳入,逐步消失。虽然许多“中间任务”不再需要独立存在,但是大多数“最终任务”仍将作为独立领域存在,只是在“预训练+fine-tuning”框架下,陆续提出新的改进方案。
研究表明,随着 LLM 模型规模的增大,许多 NLP 任务的效果会得到大幅提升。因此,很多领域所谓“独有”的问题,只是因为缺乏领域知识而表现出来的外在表象。只要提供更多的领域数据给 LLM,让它自己学习更多知识,这些问题就可以被很好地解决。未来的技术发展趋势应该是追求规模越来越大的 LLM 模型,通过增加预训练数据的多样性,来涵盖越来越多的领域。研究重心将投入到如何构建理想 LLM 模型,而非解决某个领域的具体问题。因此,越来越多 NLP 的子领域将被纳入 LLM 技术体系,逐步消失。
判断某个具体领域是否需要立即停止独立研究,可以采取以下两种方法:一是判断 LLM 的研究效果是否超过人类表现,对于那些 LLM 效果已超过人类表现的研究领域,已无独立研究的必要。二是对比两种模式的任务效果,如果 few-shot prompting 或 instruct-based 方法的效果达到或超过用较大的领域专用数据进行 Fine-tuning 的效果,则意味着这个领域没有继续独立存在的必要性。
如果这个猜测成立,将意味着很多 NLP 领域的研究人员面临着往何处去的选择,是继续做领域独有问题呢?还是放弃这种方式,转而去建设更好的 LLM?
4、更多 NLP 之外的研究领域将被纳入 LLM 技术体系
理想中的 LLM 应该是一种通用的人工智能模型,不应该被限制在某一个学科领域内。ChatGPT 的出现证明了这种追求 AGI 的可行性,而现在是抛开“领域学科”这种思维束缚的时候了。除展示出在各种 NLP 任务中流畅的对话形式,ChatGPT 还具备强大的代码能力。
LLM 技术正在向外扩展,其中一个自然的方向是图像处理和多模态任务。目前已经有一些工作在尝试将多模态融入 LLM 中,以实现通用人机接口的功能,例如 DeepMind 的 Flamingo 和微软的“Language Models are General-Purpose Interfaces”。
图像领域的预训练模型应用到下游任务的效果收益远不如 NLP 领域的预训练模型显著,这可能是因为图像预处理模型仍需深入探索,以释放图像数据的潜力。因此,图像处理领域被融入 LLM 的时间可能会比想象的要慢。当然,如果图像领域的预训练模型被趟通,它们很可能会被融入到大型 LLM 中,直接完成终端任务,类似于 NLP 领域的局面。
除了图像和多模态,其他领域也将逐渐被纳入到 LLM 中,这是具备高价值的研究主题。范式转换的个人思考表明,LLM 技术的主要技术进展可以分为两大类:一类是关于 LLM 模型如何从数据中吸收知识,也包括模型规模增长对 LLM 吸收知识能力带来的影响。第二类是关于人如何使用 LLM 内在能力来解决任务的人机接口,包括 In Context Learning 和 Instruct 两种模式。思维链(CoT)prompting 这种 LLM 推理技术,本质上也属于 In Context Learning。
从无尽数据导海量知识
目前的研究结果表明,Transformer 作为一个特征抽取器已经足够强大,不需要进行特别的改进。预训练过程让 Transformer 学到了什么?知识是如何存储的?如何修正错误的知识?这些问题是当前研究的重点。本节讲述这方面的研究进展。
一、LLM 学到了什么知识
LLM 通过学习海量自由文本,获得了大量的知识,可以将这些知识粗略地分为语言类知识和世界知识两大类。语言类知识包括词法、词性、句法和语义等,有助于人类或机器理解自然语言。研究表明,LLM 可以学习各种层次类型的语言学知识,并且这些知识存储在 Transformer 的低层和中层。世界知识则包括真实事件(事实型知识)和常识性知识(Common Sense Knowledge)。
研究表明,LLM 可以从训练数据中吸收大量世界知识,并且这些知识主要分布在 Transformer 的中层和高层,随着模型层数的增加,能够学习到的知识数量逐渐以指数级增加。对于 Bert 类型的语言模型来说,只用 1000 万到 1 亿单词的语料,就能学好句法语义等语言学知识,但是要学习事实类知识,则需要更多的训练数据。随着增加训练数据量,预训练模型在各种下游任务中效果越好,这说明了从增量的训练数据中学到的更主要是世界知识。
二、LLM 如何存取知识
LLM 是一种基于 Transformer 结构的语言模型,可以从大量的自由文本中学习到丰富的语言类和世界知识。但对于具体的某条知识,LLM 是如何存储和提取的呢?从 Transformer 的结构来看,模型参数由两部分构成:多头注意力(MHA)部分占了大约参数总体的三分之一,三分之二的参数集中在 FFN 结构中。
FFN 的第一层是一个 MLP 宽隐层,也就是 Key 层;第二层是一个 MLP 窄隐层,也就是 Value 层。FFN 的输入层实际上是某个单词对应的 MHA 的输出结果 Embedding,也就是通过 Self Attention,将整个句子有关的输入上下文集成到一起的 Embedding,代表了整个输入句子的整体信息。
Key 层的每个神经元节点,记载了一对<Key,Value>信息。比如对于 FFN 第一个隐层的第 i 个节点 ki,也许就是它记载了<北京,is-capital-of,中国>这条知识。ki 节点对应的 Key 向量,其实指的是节点 ki 和输入层每个节点的权重向量;而对应的 Value 向量,指的是节点 ki 和 FFN 第二层的 Value 层每个节点形成连接的权重向量。
每个神经元的 Key 向量,用于识别输入中的某种语言或者知识模式,是一种模式探测器。如果输入中包含它要检测的某种模式,那么输入向量和 ki 节点的 key 权重进行向量内积计算,加上 Relu,形成 ki 的大数值响应,意味着 ki 检测到了这个模式,于是再把这个响应值,通过 ki 节点的 Value 权重向量向 FFN 第二层传播。这等价于将 Value 向量的值,用响应值加权,然后传递并体现到第二层 Value 层每个节点的输出上。
这样,FFN 的正向传播计算过程,看起来就像是通过 Key 检测到某种知识模式,然后取出对应的 Value,并把 Value 体现在 FFN 的第二层输出上。当然,FFN 第二层每个节点,会收集 FFN 的 Key 层所有节点信息,所以是一种混合响应,而 Value 层所有节点的混合响应,可以解读为代表输出单词的概率分布信息。把 FFN 看成 Key-Value 存储器这种思路,虽然可能不是最终的正确答案,但是距离最终正确答案的距离,估计也不太远。
三、如何修正 LLM 里存储的知识
当使用 LLM 进行自然语言处理时,可能会遇到一些过时或错误的知识。为了解决这个问题,可以使用三种不同的方法来修正 LLM 中存储的知识。
1、从训练数据的源头开始修正知识
通过追踪某条知识对应的训练数据源头定位到是哪些数据导致 LLM 学会知识。然后删除数据源,重新预训练整个 LLM 模型,以达到删除 LLM 中相关知识的目的。但这种方法在少量多次的常规知识修正场景中不适用。
2、通过 fine-tuning 来修正知识
根据要修正成的新知识来构建训练数据,让 LLM 模型在练数据上做 fine-tuning,以指导 LLM 记住新的知识,遗忘旧知识。但是会有忘掉该忘的知识,还会忘掉不该忘的知识现象存在,导致这么做之后有些下游任务效果下降。此外成本也相当高。
3、直接修改 LLM 的模型参数来修正知识
通过定位存储知识的具体位置,强行调整 FFN 中对应的模型参数,将旧知识替换成新的知识。然而,这种方法需要解决两个关键问题。首先需要知道如何在 LLM 参数空间中定位某条知识的具体存储位置。其次需要知道如何修正模型参数,以实现旧知识到新知识的修正。
理解修正 LLM 知识的过程对于更深入理解 LLM 的内部运作机制是很有帮助的。虽然三种方法各有优缺点,但都可以帮助修正 LLM 中的过时或错误的知识,提高 LLM 在自然语言处理任务中的表现。
当 LLM 越来越大时会发生什么
近年来,LLM 模型规模不断增长,目前效果最好的 LLM 模型,其参数规模大都超过了千亿(100B)参数规模。如 OpenAI 的 GPT-3 规模为 175B,Google 的 LaMDA 规模为 137B,PaLM 的规模为 540B,DeepMind 的 Gogher 规模为 280B 等。国内也有中文巨型模型,比如清华 &智谱 GLM 规模 130B,华为“盘古”规模 200B,百度“文心”规模 260B,浪潮“源 1.0”规模 245B。
那么问题来了,随着 LLM 模型规模的不断增长会发生些什么呢?预训练模型的应用往往是两阶段的:预训练阶段和具体场景应用阶段。在预训练阶段,LLM 模型的优化目标是交叉熵,对于像 GPT 这种自回归语言模型来说,也就是看 LLM 是否正确预测下一个单词。而在场景应用阶段,一般要看具体场景的评价指标。通常,LLM 模型在预训练阶段的指标越好解决下游任务的能力就越强。然而,事实并非完全如此。
现有研究表明,预训练阶段的优化指标确实和下游任务表现出正相关关系,但并非完全正相关。也就是说,仅仅看预训练阶段的指标来判断一个 LLM 模型是否够好是不够的。因此需要在模型的预训练阶段和应用阶段都进行充分的评估和测试。
在预训练阶段,OpenAI 和 DeepMind 的研究表明,同时增加训练数据量和模型参数是最优的选择,而只单独增加其中某一个是不够好的。DeepMind 认为,训练数据量和模型参数是同等重要的,因此应该同比例地增加。比如,如果用于训练 LLM 的算力总预算增加了 10 倍,那么应该增加 3.3 倍的模型参数量,3.3 倍的训练数据量,这样模型效果才最好。而对于 Chinchilla 模型,它选择增加 4 倍的训练数据,但是将模型参数降低为 Gopher 的四分之一,大约为 70B。这样做的结果是,Chinchilla 的预训练指标和许多下游任务指标都要优于规模更大的 Gopher。这表明,可以选择放大训练数据,并同比例地减少 LLM 模型参数,以达到在不降低模型效果的前提下,极大缩小模型规模的目的。
从 LLM 解决下游具体任务效果的角度来看,随着模型规模增大,不同类型的任务有不同的表现。比如,对于简单的任务,如语言模型的困惑度,随着模型规模增大,模型效果会不断提升。在 OpenAI 的研究中,当训练数据量从 12B 增加到 800B 时,GPT-3 模型的困惑度从 3.15 降低到 1.28。
对于中等难度的任务,如问答、文本分类等,随着模型规模增大,模型效果会先提升后趋于平稳。在 OpenAI 的研究中,当训练数据量从 12B 增加到 800B 时,GPT-3 模型在 LAMBADA 和 SuperGLUE 等任务上的表现都有所提升,但是提升幅度逐渐减小。对于复杂的任务,如机器翻译、语义理解等,随着模型规模增大,模型效果会先提升后出现饱和现象或者略微下降。在 Google 的研究中,当模型参数量从 1558M 增加到 137B 时,BLEU 分数从 36.8 提高到 37.5,但是随着模型规模进一步增大,BLEU 分数反而略微下降。因此,在选择 LLM 模型规模时,需要根据具体任务的难度和要求,综合考虑各种因素,以获得最佳的模型性能。
第一类任务展现了 LLM 模型的 scaling law,即随着模型规模的增大,任务的表现越来越好。这类任务通常是知识密集型任务,LLM 模型包含的知识量越多,任务表现越好。研究表明,更大的 LLM 模型学习效率越高,相同训练数据量,大模型可以学到更多的知识点。传统的自然语言理解类任务大多属于这种类型,近两年这些任务的效果有了极大的提升,很可能是因为 LLM 模型的规模增长所带来的。
第二类任务展现出 LLM 具备某种“涌现能力”,当模型规模达到某个阀值时,LLM 模型对此类任务的效果会出现突然的性能增长。这种“涌现能力”是 LLM 模型规模增长的关键,随着模型规模越来越大,LLM 模型会逐渐解锁新的能力。这种现象很神奇,因为即使 LLM 模型现在还不能很好地解决某些任务,但如果继续推大模型,也许某一天它的这项能力就被突然解锁了。这些任务一般由多步骤构成,需要先解决多个中间步骤,逻辑推理能力在最终解决这类任务中发挥重要作用。思维链 Prompting 是一种典型的增强 LLM 推理能力的技术,能大幅提升此类任务的效果。关于为何 LLM 会出现这种“涌现能力”现象,目前还需要进一步的研究。
还有一部分任务的效果曲线呈现出 U 形特性,即随着模型规模的增大,任务效果逐渐变差,但当模型规模进一步增大时,效果开始变好,呈现出 U 形增长趋势。这些任务内部隐含了两种不同类型的子任务,一种是真正的任务,另一种是“干扰任务”。当模型规模小的时候,无法识别任意一种子任务,所以模型的表现跟随机选择答案差不多。
当模型增长到中等规模时,主要执行的是干扰任务,所以对真正的任务效果有负面影响,体现为真正任务效果的下降。当进一步增加模型规模时,LLM 可以忽略干扰任务,执行真正的任务,效果开始增长。如果采用思维链(CoT)Prompting,则部分任务的表现转换为遵循 Scaling law,即模型规模越大效果越好,而其他任务则转换为 U 形增长曲线。这说明此类任务应属于推理类型的任务,加入 CoT 后任务表现会发生质的变化。
从 In Context Learning 到 Instruct 理解
一般常提到的人和 LLM 的接口技术包括:Instruct 和 In Context Learning。Instruct 是 ChatGPT 的接口方式,人以自然语言给出任务的描述,例如“把这个句子从中文翻译成英文”。而 In Context Learning 和 few shot prompting 意思类似,给 LLM 几个示例作为范本,然后让 LLM 解决新问题。
虽然这些技术都是描述任务的方式,但其实思路是不同的。Instruct 是一种抽象的描述方式,而 In Context Learning 是一种例子示范的说明法。尽管叫法有些混乱,但这两种技术是最为常见的人和 LLM 的接口技术。下面将重点介绍 Instruct 和 In Context Learning,而不再提及 zero shot 和 few shot。
一、神秘的 In Context Learning
In Context Learning 是一项非常神奇的技术。它之所以神奇,是因为只需要提供 LLM 几个样本示例<x1,y1>,<x2,y2>....<xn,yn>,然后给一个新的输入 xn+1,LLM 就能成功预测对应的输出 yn+1。这听起来有些类似于 Fine-tuning,但实际上更为复杂。
Fine-tuning 和 In Context Learning 看似都提供了一些示例给 LLM,但两者之间存在着质的不同。Fine-tuning 使用这些示例作为训练数据,通过反向传播来修正 LLM 的模型参数,从而实现了 LLM 从示例中学习的过程。而 In Context Learning 只是简单地展示示例,然后要求 LLM 去预测新的示例,没有使用反向传播来修正模型参数,这意味着它貌似没有经历学习的过程。但是,In Context Learning 却能够仅凭一眼就预测出新的示例。
目前,有一些研究对这个问题提出了不同的看法,但是它们之间存在着相互矛盾的结论。对于这个问题的真相,目前仍是未解之谜。有些研究认为 In Context Learning 并没有从示例中学习映射函数,而是通过输入和输出的分布来实现预测。而另一些研究则认为 LLM 仍然从示例中学习了映射函数,只是这个过程是隐式的。
二、神奇的 Instruct 理解
Instruct 是一种为了方便人类理解的任务表述。基于这个前提,目前的 Instruct 研究可以分为两类:一种是偏向学术研究的 Instruct,另一种则是关注于人类真实需求描述的 Instruct。
首先,来看偏向学术研究的 Instruct。该领域的核心研究主题是 LLM 模型在多任务场景下对 Instruct 理解的泛化能力。这种方法使用多个 NLP 任务,每个任务都有一个或多个 Prompt 模版作为 Instruct,并用训练数据对 LLM 模型进行微调,使其能够同时学习多个任务。
训练好模型后,给 LLM 模型一个全新的任务 Instruct,然后让 LLM 解决 zero shot 任务,从而判断 LLM 模型是否具有对 Instruct 的泛化能力。目前的研究表明,增加多任务的数量、增加 LLM 模型的大小、提供 CoT Prompting 以及增加任务的多样性等因素可以有效地增加 LLM 模型对 Instruct 的理解能力。
第二种是面向人类真实需求的 Instruct,这类研究以 InstructGPT 和 ChatGPT 为代表。这种方法同样基于多任务,但与偏向学术研究的方法最大的不同在于它是面向真实需求的。它使用从大量用户提交的真实请求中抽样而来的任务描述 Prompt 进行 LLM 多任务训练,而不是固定好研究任务的范围,然后让研究人员来编写任务描述 prompt。
这种方法的优势在于可以涵盖更多样化的任务类型,更符合用户的真实需求;同时,任务的 prompt 描述来自用户提交的请求,反映了用户在表达任务需求时的真实表述方式。因此,这种方法训练出的 LLM 模型可以更好地满足用户需求。InstructGPT 论文还将该方法与偏向学术研究的 FLAN 方法进行了比较。结果表明,FLAN 方法的效果距离 InstructGPT 有很大差距。这是因为 FLAN 方法涉及的任务领域相对较少,而 InstructGPT 使用的任务类型更加多样化,更符合用户的真实需求。因此,从用户数据中收集真实需求对于提高 LLM 模型的效果是非常重要的。
三、In Context Learning 和 Instruct 的联系
可以将 In Context Learning 看作是通过一些具体的例子来表达任务命令,而 Instruct 则是更符合人类习惯的抽象任务描述。这引发了一个自然的问题:这两种方法之间是否存在联系?例如,是否可以提供一些具体的示例,让 LLM 找出对应的自然语言描述的 Instruct 命令来完成某个任务?
目前有些研究工作在探索具象任务示例和自然语言命令之间的联系,并且这个方向具有很高的研究价值。在这个问题上,答案是肯定的:LLM 确实可以实现这个任务。最近的一项研究使用了 GPT-3 和 InstructGPT 作为基础模型,让 LLM 通过一些具体的示例生成自然语言命令来描述某项任务,然后再用这个描述测试任务效果。这项技术的加持使得 LLM 生成的 Instruct 效果大大提升,甚至在一些任务上超过了人类的表现。这表明了具象任务示例和自然语言命令之间存在一种神秘的内在联系,但我们目前还无法确定这种联系的具体本质。
如何增强 LLM 的推理能力
目前,许多研究表明 LLM 具有强大的记忆能力,但通常不会因为一个人记忆能力强就认为他/她很聪明,因为推理能力往往是判断一个人是否聪明的重要标准。因此,对于 LLM 而言,强大的推理能力也是必不可少的。在过去一年中,LLM 的推理能力已成为最重要和热门的研究领域之一。目前的研究表明,当模型规模足够大时,LLM 本身具备推理能力,在简单推理问题上已经达到了很好的能力,但在复杂推理问题上仍需要更深入的研究。
LLM 推理能力的研究可以归为两大类分别是基于 Prompt 的方法和引入程序代码的方法。基于 Prompt 的方法通过合适的提示语或提示样本来激发 LLM 本身具备的推理能力,Google 在这个方向做了很多有成效的工作。而引入程序代码的方法则在预训练过程中将代码和文本一起参与预训练,以此进一步增强 LLM 的推理能力,这是 OpenAI 实践出的思路。这两种方法的大方向是迥异的:前者是通过提供多样性的训练数据来直接增强 LLM 推理能力,而后者则是让 LLM 在解决问题过程中更好地展示出推理能力的技术方法。虽然这两种方法互补,但从长远来看,治本的方法更为重要。
归纳一下大致可以分为三条技术路线。
一、直接在问题上追加辅助推理 Prompt
在各个领域,基于 Prompt 的方法都被证明是一种有效的方法来增强 LLM 的推理能力。这种方法非常简单,直接在问题上追加辅助推理 Prompt 即可。其中,Zero-shot CoT 是一种被广泛应用的方法,它通过在提问的问题上追加“Let’s think step by step”这句提示语来激发 LLM 本身具备的推理能力。
具体而言,分为两个阶段,第一阶段在问题上追加提示语,LLM 会输出具体的推理过程;第二阶段,拼接 LLM 输出的具体推理过程,并再追加 Prompt,此时 LLM 会给出答案。这种简单的操作可以大幅增加 LLM 在各项推理任务中的效果。目前,关于 LLM 为什么会具备推理能力的原因尚无定论,但可能是因为预训练数据中存在大量以“Let’s think step by step”开头的数据,LLM 在预训练的时候记住了这些模式。
因此,当我们输入这个提示语的时候,LLM 会模仿这些例子进行步骤推理并给出答案。当然,Zero-shot CoT 的效果比标准 CoT 差一些,因为靠 LLM 回忆示例,精准性估计不会太高。但无论是 Zero-shot CoT 还是标准 CoT,都说明了一个道理,就是 LLM 本身是具备推理能力的,只是我们没有办法把它的这种能力激发出来而已。
二、基于示例的思维链(few-shot CoT,Chain of Thought)Prompting
目前,基于 Prompt 的方法是 LLM 推理研究的主要方向,很多工作都是在这个思路上展开的。在这个方向上,有几个代表性的工作取得了显著的效果,这些工作基本能代表 CoT 技术发展的方向。
CoT 的主体思想非常简单明了,为了让 LLM 模型学会推理,需要给出一些人工写好的推理示例,示例中详细说明得到最终答案前的具体推理步骤,而这些人工写的详细推理过程就是思维链 Prompting。CoT 的目的是让 LLM 模型明白在推理过程中,步子不要迈得太大,需要化大问题为小问题,步步为营,积小胜为大胜。最早明确提出 CoT 这个概念的文章是“Chain of thought prompting elicits reasoning in large language models”,该论文于 2022 年 1 月份发布。尽管 CoT 的做法很简单,但应用 CoT 后 LLM 模型的推理能力得到了巨大提升,GSM8K 数学推理测试集准确率提高到了约 60.1%。值得一提的是,这种给出详细推理步骤和中间过程的思想,并非 CoT 最早提出的。更早一些的“scratchpad”技术就采用了类似的思路。
CoT 提出不久,随后在 2022 年 3 月份,一项名为“Self-Consistency”的改进技术迅速问世,将 GSM8K 测试集准确率提高到了 74.4%。这项改进技术的思路也很简单明了,首先利用 CoT 给出几个写了推理过程的示例,然后要求 LLM 对给定的问题进行推理,但不同于 CoT 的是,“Self-Consistency”要求 LLM 输出多个不同的推理过程和答案,并采用投票的方式选出最佳答案。这种思路教导 LLM 学会这样一个道理:一个数学题的正确解法可以有很多种,每个不同的推导过程都指向最终的答案。简单的方法往往蕴含着深刻的哲学含义。之后,“On the Advance of Making Language Models Better Reasoners”这个工作在“Self-Consistency”的基础上,进一步集成了“从一个 Prompt 问题拓展到多个 Prompt 问题、检查推理中间步骤的正确性以及对多个输出的回答加权投票”这三个改进点,将 GSM8K 测试集准确率提高到了约 83%。
三、分治算法
核心思想是将一个复杂的推理问题分解成若干个容易解决的子问题,解决这些子问题,再从子问题的答案推导出复杂问题的答案。这种思路可能是揭示问题本质、最终解决 LLM 复杂推理问题的正宗道路。以“Least-to-most prompting”技术为例,它分为两个阶段。在第一个阶段,我们从原始问题中得到最终要问的问题,然后构造一个 Prompt 模板,填充“如果要解决 Final Q 问题,那么我需要先解决”的内容,让 LLM 模型回答,得到前置子问题 Sub Q。在第二个阶段,让 LLM 先回答子问题 Sub Q,并得到对应的答案,然后将原始问题与子问题 Sub Q 及对应答案拼接在一起,再去问 LLM 最终问题 Final Q,此时 LLM 会给出最终的答案。这种思路体现了拆解子问题,并从子问题的答案逐步找出最终答案的思路,类似于分治算法的思想。
代码预训练增强 LLM 推理能力
上面提到了当前利用 Prompt 激发 LLM 模型推理能力的三种主流方法,同时还观察到了一个有趣而费解的现象:除了文本之外,将程序代码与文本一起参与模型的预训练可以显著提高 LLM 模型的推理能力。
在论文“On the Advance of Making Language Models Better Reasoners”中,通过实验数据展示了一个有趣的现象:将程序代码与文本一起参与模型预训练,可以显著提升 LLM 模型的推理能力。实验结果表明,仅仅是从纯文本预训练模型切换到文本和 Code 混合预训练模型,就可以在几乎所有测试数据集合上,将模型推理能力提升 20 到 50 个百分点。
此外研究还发现,GPT 3 这种纯文本预训练模型,其实具备相当程度的推理能力,只是需要采用合适的方法来激发。而加入 instruct fine-tuning 会损害 LLM 模型的推理能力,但会在一定程度上提升自然语言理解能力。至于为何预训练模型可以从代码的预训练中获得额外的推理能力,目前尚未得到确切的原因,但可能是因为代码训练本质上是<文本,Code>两种数据的多模态对齐工作,其中包含相当比例的数学或逻辑推理类的数据,对于解决下游数学推理问题是有帮助的。这些结论启发了后续进一步的思考和探索。
关于 LLM 推理能力的思考
最近一年来,关于激发 LLM 的推理能力的技术进展很快,但总体感觉距离接触到真正的问题本质还有一段距离,需要更深入的思考和探索。对于复杂的推理问题,将其拆解成若干简单的子问题,因为子问题对于 LLM 来说回答正确的概率更高。受到“Least-to-most prompting”技术的启发,LLM 推理本质上可能是不断和 LLM 进行交互的图上推理问题,或者是不断和 LLM 进行交互的程序流程图执行问题。
假设我们能够将复杂问题拆解成由子问题或子步骤构成的图结构,其中节点代表子问题或子步骤,边表示子问题之间的依赖关系。我们可以根据依赖关系,引导 LLM 一步一步回答必须首先回答的子问题,直到推导出最终答案。图中可能存在循环结构,即需要反复执行某些子步骤。如果我们能够得到上述子问题拆解图,那么就能够有效地引导 LLM 进行推理。
假设我们能够将复杂问题拆解成子问题或子步骤,并生成一个类似程序流程图的结构,其中有循环结构和条件分支。我们可以在执行每个子步骤时,与 LLM 进行交互,得到子步骤的答案,并按照流程不断执行,直到输出最终答案。这种多模态预训练模型可以增强 LLM 模型从文本构建出隐含的流程图并按照流程图执行的能力,从而增强其推理能力。
然而,如何根据文本描述得到图结构或流程图结构仍然是一个难点。一种可能的思路是通过增强文本和更高质量的代码预训练来隐式学习内部隐含结构。目前的 CoT 技术是试图根据最后一个图节点,倒推出图结构或程序流程图,但目前的方法限制了它的倒推深度,只能推导出简单的图结构,这是其能力受限的原因。
LLM 研究趋势及值得研究的重点方向
这里列出一些比较重要的 LLM 研究领域或值得深入探索的研究方向。
一、探索 LLM 模型的规模天花板
虽然 LLM 模型的规模看似没有技术含量,但其实这个事情异常重要。自 Bert 问世以来,到 GPT 3 和 ChatGPT 给人印象深刻的关键技术突破,核心贡献都来自于 LLM 模型规模的增长,而非某项具体技术。这说明对于知识密集型的任务,随着模型规模越大,各种任务的效果会越来越好。而对于很多推理类型的有难度的任务,加上 CoT Prompting 后,其效果也呈现出遵循 Scaling law 的趋向。因此,很自然的一个问题就是:对于这些任务,LLM 的规模效应,能将这些任务解决到何种程度?
考虑到 LLM 具备的神奇的“涌现能力”,如果继续增加模型规模,将会解锁哪些意想不到的新能力呢?这也是很有意思的问题。因此,需要不断增大模型规模,看看模型规模对解决各类任务的天花板在哪里。当然,这种事情也就只能说说,对 99.99%的从业者来说,是没有机会和能力做这个事情的。
要做这个事情,对研究机构的财力及投入意愿、工程能力、技术热情,都有极高的要求,缺一不可。能做这事情的机构,粗估下来,国外不超过 5 家,国内不超过 3 家。这是因为做超大规模的 LLM 模型对技术团队的工程实现能力要求非常高,需要有非常强的硬件和软件支持。因此,这是具有技术含量的工作。
尽管如此,继续推大 LLM 模型规模的研究意义仍然非常重要。除探究 LLM 的规模效应对各种任务的效果影响到何种程度,还可以探索 LLM 模型规模增大后会解锁哪些新的能力。这些问题的答案将有助于更好地理解 LLM 模型的性质和行为,为未来的研究和应用提供重要的参考。因此,对于有能力的研究机构来说,继续推大 LLM 模型规模的研究是非常有价值的。
二、增强 LLM 的复杂推理能力
正如之前对 LLM 推理能力的叙述,尽管 LLM 在最近一年的推理能力方面取得了很大进展,但是仍然存在一些限制。例如,许多研究表明,LLM 仍然无法很好地解决复杂推理问题,特别是当涉及到长字符串或数字时,LLM 的推理能力会显著下降。因此,加强 LLM 的复杂推理能力应该成为未来研究的重点之一。
在前文中,我们提到了一种直接增强 LLM 推理能力的方法,即将代码加入到预训练中。虽然这种方法已经得到了一些实践的总结,但是需要深入探索背后的原理,并引入更多类型的新型数据来增强 LLM 的推理能力。这可能是更本质的提升 LLM 推理能力的方向,而不仅仅局限于代码的加入。
三、LLM 纳入 NLP 之外更多其它研究领域
当前的 ChatGPT 是一个在自然语言处理(NLP)和编程任务方面表现出色的模型。作为通向人工通用智能(AGI)的前沿研究之一,将图像、视频、音频等多媒体数据与语言模型相结合,并进一步将 AI 应用到科学研究、机器人控制等其他领域,是实现更大范围应用和差异化发展的重要途径。虽然这个研究方向仍处于初级阶段,但却具有极高的研究价值。
四、更易用的人和 LLM 的交互接口
正如前面所讨论的那样,ChatGPT 的主要技术贡献在于其在特定领域,如 NLP 和编程任务方面的出色表现。然而,我们也意识到当前的技术仍有不完善之处,存在许多命令和指令 LLM 无法理解的情况。因此,一个非常有前景和崭新的技术方向是寻找更好的方法,使得 LLM 能够理解人类使用自己习惯的命令表达方式。这个方向的探索将为我们创造新的机会,并为改善 LLM 的技术水平提供更多的潜在解决方案。
五、建设高难度的综合任务评测数据集
一个优秀的评测数据集是推动技术不断进步的基础。随着 LLM 模型不断扩大,任务效果迅速提升,许多经典测试集很快就变得太容易,无法有效评估当前技术的缺陷和盲点。因此,构建具有高难度的测试数据集对于推动 LLM 技术的进步至关重要。目前,业界已经出现了一些新的测试集,例如 BIGBench 和 OPT-IML 等。这些测试集具有一定的难度,综合了多种任务类型的要求,并能更好地反映当前 LLM 技术的挑战。
受到 ChatGPT 的启发,除了测试集的难度和多样性之外,还应该考虑体现真实用户需求的因素。也就是说,这些任务应该是由真实用户提出的,只有这样构建出来的 LLM 模型才能真正解决用户的实际需求。此外,LLM 将迅速扩展其能力到 NLP 以外的领域,因此需要提前考虑如何将更多其他领域的评测数据融入其中。这将有助于进一步提高 LLM 模型的广泛适应性。
六、高质量数据工程
数据是预训练模型的核心,预训练过程是从数据中获取知识的过程。因此,需要更加注重挖掘、收集和清洗高质量数据。数据质量和数量是两个关键方面。根据 T5 的实验比较,可以得出结论:在质量和数量之间,质量应优先考虑。因此,正确的做法是在确保数据质量的前提下增加数据规模。数据质量方面,需要考虑数据的信息含量和多样性等多个标准。例如,维基百科是信息含量极高的高质量数据。增加数据类型的多样性对于激发 LLM 的各种新能力至关重要。例如,加入问答网站的数据对于提升 LLM 的问答能力具有直接帮助。多样化的数据赋予 LLM 更好解决各种类型任务的能力,因此多样性是数据质量中最关键的标准。
关于数据数量,原则上可以纳入预训练模型的是互联网上公开发布的数据。然而,数据的数量也存在一定的极限。一项研究对数据量的扩展性进行了估算,并得出结论:到 2026 年左右,高质量的 NLP 数据将耗尽,低质量的 NLP 数据将在 2030 年至 2050 年之间耗尽,低质量图像数据将在 2030 年至 2060 年之间耗尽。这说明要么需要开发新类型的数据来源,要么必须提高 LLM 模型对数据的利用效率。否则,当前依赖数据驱动的模型优化方式将停止进步或收益减少。因此需要寻求新的解决方案,以应对数据的极限问题。
七、超大 LLM 模型 Transformer 的稀疏化
LLM 中存在一些最大规模模型,如 GPT 3、PaLM、GLaM 等,采用了稀疏结构。使用稀疏化模型的主要优点是可以极大地减少训练和推理时间。相比于密集模型,稀疏模型在相同算力预算下,训练速度可以提升 4 倍到 7 倍。这是因为尽管稀疏模型拥有巨大的参数量,但对于每个训练实例,稀疏模型通过路由机制只使用其中一小部分参数参与训练和推理,所以速度更快。
未来的超大规模 LLM 模型很可能会趋向于稀疏模型,主要有两个原因。首先,研究显示标准的密集模型在训练和推理过程中本身也呈现稀疏的激活,即只有部分参数会被激活,大部分参数没有参与训练和推理。基于这一点,迁移到稀疏模型是合理的选择。其次,LLM 模型的规模将继续增大,而高昂的训练成本是其扩大模型规模的主要障碍。使用稀疏模型可以显著降低超大模型的训练成本,因此随着模型规模的增加,稀疏模型的好处将更加明显。鉴于这些原因,未来更大规模的 LLM 模型很可能采用稀疏模型方案。
然而,目前其他大规模模型尚未采用稀疏模型的原因是稀疏模型存在训练不稳定和容易过拟合等问题,很难训练得好。因此,解决稀疏模型面临的问题,设计出更易于训练的稀疏模型,是未来研究的重要方向。
复刻 ChatGPT 时要注意些什么?
要复刻类似 ChatGPT 这种令人惊艳的 LLM 模型,我们需要在技术选型时权衡以下问题。
一、关于预训练模式,可以选择 GPT 这种自回归语言模型、Bert 这种双向语言模型,或者 T5 这种混合模式。基于本文的分析,选用 GPT 自回归语言模型可能是更好的选择。然而,目前似乎许多国内 LLM 项目选择了 Bert 双向语言模型或 T5 混合语言模型,这可能导致方向有所偏移。
二、强大的推理能力是用户认可 LLM 的重要基础,为了实现这一目标,根据当前经验,预训练阶段最好引入大量代码和文本,同时进行 LLM 训练。前文中也有相应的分析对此进行了解释。
三、如果希望模型参数规模不过于庞大但依然具备良好效果,有两个选项。一是加强高层的特征抽取和表示能力,通过更深层次的网络结构或者更复杂的特征提取方法来实现。二是采用文本检索模型与 LLM 相结合的方式,通过文本检索模型提供初步的筛选和匹配,再由 LLM 进行进一步的生成和推理,这样可以极大地减小 LLM 模型的参数规模。
四、由于超级大模型的训练成本过高,很少有机构有能力去实施。因此,降低 LLM 的训练成本是非常重要的。其中,一种有效的技术选择是将 LLM 的特征抽取器进行 Sparse 化,这可以有效降低模型的训练和推理成本。因此,随着模型规模的增大,LLM 模型的 Sparse 化是一个应该考虑的选项。
五、目前最接近理想 LLM 的技术方案是 ChatGPT,理想中的 LLM 应该是一个几乎无所不能的通用大模型,可以支持各种任务类型。为了实现这一目标,可以通过增加 LLM 的预训练数据的多样性来支持更多的任务类型。数据的多样性越好,LLM 能够支持的任务类型就越丰富。因此,应该重视通过增加数据多样性来增强 LLM 的能力。
六、易用的人机操作接口也是非常重要。LLM 需要能够理解人类用自己习惯的方式来描述任务的真实含义。同时,也需要根据最终用户的需求收集任务表述方式,而不是依靠研发人员的臆想或猜测。ChatGPT 在这方面给了我很大的启发,因此,是否使用增强学习并不重要,其他替代技术也能够实现类似的效果。
要复刻类似 ChatGPT 这种令人惊艳的 LLM 模型,需要在技术选型上权衡预训练模式、推理能力、模型规模、训练成本、数据多样性和人机操作接口等因素,并选择最合适的方法来实现目标。
LLM 训练所需因素
当训练大型语言模型时会面临多个挑战,可以归纳为以下六个方面:硬件需求、健康检查、编排技术、数据处理、模型规模扩展和成本管理。每个方面都对模型训练的效果和效率产生重要影响。
在训练大型语言模型时,我们会面临多个挑战。首先是硬件方面。使用最新的硬件可以提供更好的性能,而没有充分利用最新硬件的优势会导致训练时间延长,无法达到最佳结果。
蓝海大脑高性能 LLM 大模型训练平台利用工作流体作为中间热量传输的媒介,将热量由热区传递到远处再进行冷却。支持多种硬件加速器,包括 CPU、GPU、FPGA 和 AI 等,能够满足大规模数据处理和复杂计算任务的需求。采用分布式计算架构,高效地处理大规模数据和复杂计算任务,为深度学习、高性能计算、大模型训练、大型语言模型(LLM)算法的研究和开发提供强大的算力支持。具有高度的灵活性和可扩展性,能够根据不同的应用场景和需求进行定制化配置。可以快速部署和管理各种计算任务,提高了计算资源的利用率和效率。
另一个挑战是健康检查,确保硬件正常运行,减少干扰。此外还需要考虑编排,以确保团队中的工作负载不会互相干扰,同时保持网络和安全配置良好。处理大规模数据集也是一项挑战,需要高效的存储、处理和加载方法。扩展基础设施和设计算法以克服限制性问题也是一项重要任务。这些模型通常不适用于单个 GPU,所以需要考虑如何将模型拆分到多个 GPU 上。
最后,成本管理是不可忽视的因素。训练大型模型的成本可能很高,应该充分利用机器学习团队的时间,让其专注于创造新的模型,而不是花费过多时间在基础架构上。
评论