来源:Mangesh Gothankar
在本文中,我们将了解如何从零开始构建 LLM(大型语言模型)。你可能会问,为什么要做这样的事情?是这样的,LLM 在无数应用中都非常有用,从头开始构建一个 LLM,你就能了解底层的 ML 技术,并根据自己的特定需求定制 LLM。
内容目录:
语言在人类交流中起着基础性作用,在当今数据不断增长的网络时代,创建工具来分析、理解和连贯地交流是不可避免的。
这就是LLM的由来。
大型语言模型是一种 ML 模型,可以完成各种自然语言处理任务,从创建内容到将文本从一种语言翻译成另一种语言。大型 "一词表征了语言模型在学习期间可改变的参数数量,令人惊讶的是,成功的大型语言模型拥有数十亿个参数。
本文揭示LLM 发展背后的情况,了解它们闻所未闻的能力,并理解它们是如何重塑语言处理世界的。
主要启示:
了解有关 LLM 的一切及其目前的技术水平
了解不同类型的 LLM,并评估它是否是一种时尚或流行
发现从头开始训练 LLM 的最佳方法,并对其进行分析
什么是大型语言模型
通俗地说,"大型语言模型 "是一种经过训练的深度学习模型,它能以类似人类的方式理解和生成内容。在大舞台的背后,大型变换器模型创造了奇迹。
大型语言模型是一种深度学习算法,可以完成多项自然语言处理任务。
大型语言模型被称为神经网络,因为人脑为这些系统提供了灵感。这些神经网络使用分层节点网络工作,非常类似神经元。
此外,大型学习模型必须经过预先训练,然后进行微调,以教授人类语言,从而解决文本分类、文本生成挑战、问题解答和文档摘要等问题。Top 12 大型语言模型在解决各种问题方面的潜力可应用于从金融、医疗保健到娱乐等领域,这些模型服务于一系列 NLP 应用,如人工智能助手、聊天机器人、翻译等。
大型语言模型由难以计数的参数组成,类似于模型在训练过程中学习收集的记忆。您可以将这些参数视为模型的知识库。
快速回顾变革者模型
2017 年,一切都变了。
瓦斯瓦尼(Vaswani)发表了(我更喜欢传说中的)论文《Attention is All You Need》,其中使用了一种新颖的架构,他们称之为 "转换器(Transformer)"。
如今,转换器模型是大型语言模型最常见的架构。转换器模型通过对输入进行标记化处理数据,并通过数学公式来识别标记之间的关系,这样,计算系统就能看到人类在收到相同查询时会注意到的模式。
此外,转换器模型还具有自我注意机制,这使得模型的学习速度比传统的扩展短期记忆模型更快。自我注意机制允许转换器模型封装序列的不同部分或完整句子,从而进行预测。
总而言之,转换器模型在自然语言处理中发挥了重要作用。随着各公司开始利用这一革命性技术并开发自己的大型语言模型,企业和技术专业人士都必须了解这项技术的工作原理。尤其关键的是,要了解这些模型如何处理自然语言查询,使其能够准确地响应人类的问题和请求。
因此,让我们深入了解大型语言模型的世界,探索是什么让它们如此强大。
大型语言模型的关键要素
大型语言模型由多个神经网络层组成。这些定义好的层协同工作,处理输入文本并创建理想的输出内容。
让我们来看看。
嵌入层(The embedding layer)
该层是大型学习模型的关键要素。嵌入层接收输入(一串单词),并将每个单词转化为矢量表示。单词的向量表示捕捉了单词的含义及其与其他单词的关系。
前馈层(The feedforward layer)
LLM 的前馈层由几个完全连接的层组成,用于转换输入嵌入。同时,这些层允许模型提取更高层次的抽象概念,即识别用户输入文本的意图。
递归层(Recurrent Layer)
递归层允许 LLM 学习依赖关系,并生成语法正确、语义丰富的文本。
注意机制(The attention mechanism)
大语言模型中的注意力机制可让人专注于输入文本中的某个元素,以验证其与手头任务的相关性。此外,这些层还能使模型创建最精确的输出。
大型语言模型的类型
通常,大型语言模型会根据其所执行的任务进行分类:
混合模型
自回归大型语言模型(预测下一个单词)(Autoregressive LLM)
大型学习模型的训练目的是建议输入文本中的下一个词序,简单地说,它们的唯一任务就是续写文本。
例如,在文本 "你好吗?"中,大型学习模型可能会完成 "你好吗?"或 "你好吗?我很好 "这样的句子。
属于这一类的大型学习模型有 Transformers、LaMDA、X.NET、BERT 和 GPT-3。
GPT-3- GPT-3 是一种革命性的语言模型,有可能根据所提供的描述提供高质量的类人文本。此外,GPT-3 还使用了数十亿个参数和技术来创建类人句子。
LaMDA- LaMDA 是一种事实性语言模型,经过训练可创建不同的创意文本模式,如诗歌、代码、脚本、音乐作品、电子邮件、信件等,并能非正式地回答您的问题。
XLNet- XLNet 是一种自回归语言模型,可理解文本序列的无监督表示。
这些 LLM 面临的唯一挑战是,它在完成文本而不仅仅是回答方面的能力令人难以置信,很多时候,我们期待的是答案而不是完成。
将上面讨论的例子 "你好吗?"作为输入,大型学习模型会尝试用 "在做什么?"或 "我很好 "这样的文字来完成文本。这就说明,回答可以是完成语,也可以是答案,这也正是对话优化 LLM 出现的原因。
基于变换器的 LLM(对话优化型)
这些类型的 LLM 会回答问题,而不是完成问题。因此,当输入 "你好吗?"时,这类 LLM 通常会回答 "我很好",而不是完成句子。
经过对话优化的 LLM 包括 ChatGPT、BERT、BARD、InstructorGPT、Falcon-40B-instruct 等。
BERT-BERT(Bidirectional Encoder Representation from Transformers)是一种基于深度神经工作的动态自动回归 LLM。它的主要重点是理解单词之间的关系,而不是关注一个单词的含义。
多语言模型
多语言模型在不同的语言数据集上进行训练,可以处理和生成不同语言的文本。它们有助于完成跨语言信息检索、多语言机器人或机器翻译等任务。
XLM-XLM 是由 Facebook 创建的跨语言语言模型。
混合模型
混合模型是不同架构的混合体,可提高性能。例如,基于变压器的架构与递归神经网络(RNN)相结合,用于顺序数据处理。
UniLM(统一语言模型)是一种混合大型语言模型,它结合了自动回归和序列到序列建模方法。
还有更多。尤其是如果你想获得最终的成功,这篇文章就更不能省略了。
生成式人工智能与大型语言模型的微妙区别
生成式人工智能(Generative AI)是一个庞大的术语;简单地说,它是一个统称,指的是有可能创建内容的人工智能模型。此外,生成式人工智能还可以创建代码、文本、图像、视频、音乐等。一些流行的生成式人工智能工具有 Midjourney、DALL-E 和 ChatGPT。
大型语言模型是生成式人工智能的一种,它在文本上进行训练并生成文本内容。ChatGPT 就是生成式文本人工智能的一个节选。
所有大型语言模型都是生成式人工智能。
现在,如果您正在犹豫不决,想知道在哪里、做什么以及如何从头开始构建和训练 LLM,别担心,继续来了解下面的内容。
构建大型语言模型
现在是创建 LLM 的时候了。
我们将使用 TensorFlow 或 PyTorch 等机器学习框架来创建模型,这些框架提供了用于创建和训练 LLM 的预建工具和库,因此几乎不需要重新发明轮子。
我们将首先概述 LLM 的架构。此外,您还需要选择要使用的模型类型,例如递归神经网络转换器,以及层数和每层的神经元数。
接下来就是使用收集到的预处理数据对模型进行训练。
如何从零开始训练 LLM
对于不同类型的 LLM,训练 LLM 的方法也不同。假设您想建立一个连续文本 LLM,那么与对话优化的 LLM 相比,方法将完全不同。
这两点是影响 LLM 性能的关键因素。因此,让我们来讨论一下训练 LLM 所涉及的不同步骤。
自回归 LLM(Autoregressive LLMs )
延续文本的 LLM 的训练过程被称为相关 LLM。这些 LLM 在自我监督的学习环境中进行训练,以预测文本中的下一个单词。以下是从头开始训练 LLMs 的每个步骤:
步骤 1:收集数据集
训练 LLM 的第一步也是最重要的一步是收集大量文本数据。毕竟,数据集对大型学习模型的性能起着至关重要的作用。
最近,受 LLaMA-13B 启发的最新对话优化大型语言模型 "OpenChat "在 Vicuna GPT-4 评估中取得了 105.7% 的 ChatGPT 分数。
其成功背后的秘诀是高质量的数据,该模型在 ~6K 数据上进行了微调。
用于训练的数据收集自互联网,主要来自社交媒体、网站、平台、学术论文等。所有这些语料库确保了训练数据尽可能地分类,最终为大规模语言模型描绘出改进的通用跨领域知识。
因此,利用高质量的数据释放 LLM 的潜能是毫无疑问的!
步骤 2:数据集预处理和清理
接下来是数据集预处理和清理步骤。
由于数据集是从众多网页和不同来源抓取的,因此数据集很有可能包含各种细微的差异。因此,消除这些细微差别并为模型训练提供高质量的数据集至关重要。
具体步骤主要取决于您目前正在处理的数据集。标准的预处理措施包括:
数据重复。
训练数据可能有重复或几乎相同的句子,因为这些数据仅从互联网上的众多数据源收集而来。因此,出于两个重要原因,坚持重复数据删除的做法是不可避免的:
它有助于更好地评估 LLM,因为测试和训练数据包含非重复信息。
步骤 3:准备数据
数据集准备是对数据进行清理、转换和组织,使其成为机器学习的理想数据。这是任何机器学习项目中必不可少的一步,因为数据集的质量会直接影响模型的性能。
在预训练阶段,LLM 被训练为预测文本中的下一个标记。因此,输入和输出对也相应地进行了开发。
步骤 4:定义模型架构
下一步是 "定义模型架构和训练 LLM"。
目前,正在开发大量 LLM。您可以在 Hugging Face Open LLM Leaderboard 上了解所有 LLM 的概况。首先,研究人员在创建 LLM 时会遵循一个明确的流程。
通常,研究人员会从现有的大型语言模型架构(如 GPT-3)以及模型的实际超参数开始。然后,对模型架构/超参数/数据集进行调整,最终形成新的 LLM。
步骤 5:超参数调整
毫无疑问,超参数调整是一件既费钱又费时的事情。
不用担心!例如,如果您使用的是 GPT-3,那么请使用其相应架构的超参数,然后在小范围内确定最佳超参数,再将其插值到最终模式中。
这项实验包括以下任何一项或全部内容:
密集层与稀疏层的分组
以下是一些行之有效的超参数实践:
对话优化 LLM(Dialogue-optimized LLM)
在对话优化 LLM 中,首要步骤与预训练 LLM 相同,一旦完成预训练,LLMs 就有可能完成文本。
此外,为了生成特定问题的答案,LLM 还需要在包括问题和答案在内的监督数据集上进行微调,到这一步结束时,您的 LLM 就可以为所提问题创建解决方案了。
例如,ChatGPT 是一种对话优化 LLM,其训练过程与上述步骤类似。唯一不同的是,除了预训练和监督微调外,它还包括一个额外的 RLHF(从人类反馈中强化学习)步骤。
LLM 训练完成后,就是评估其性能的时候了。让我们来看看如何评估!
如何评估大型学习模型?
大型语言模型评估不能主观臆断,相反它必须是一个评估 LLM 性能的逻辑过程。
考虑到在分类或回归挑战的情况下进行评估,比较实际表格和预测标签有助于了解模型的性能如何,为此我们通常会查看混淆矩阵。但 LLM 又是什么情况呢?它们会生成文本。
不用担心!评估 LLM 有两种方法--内在方法和外在方法。
内在方法
传统的语言模型使用内在方法进行评估,如每字符比特数、复杂度、BLUE 分数等。这些度量参数跟踪语言方面的性能,即模型预测下一个单词的能力。
人工评估:人工评价包括请人工评委对 LLM 生成的文本质量进行评分。这可以通过使用各种不同的评估来实现,如流畅性、连贯性和相关性。
此外,同样重要的是,没有放之四海而皆准的评价指标,每种衡量标准都有自己的优缺点。因此,必须使用各种不同的评估方法,以全面了解 LLM 的表现。
以下是评估 LLM 的一些额外注意事项:
外在方法
随着当今LLM的进步,外在方法正成为评估法律硕士表现的首选。评估 LLM 的建议方法是考察它们在推理、解决问题、计算机科学、数学问题、竞争性考试等不同任务中的表现。
EleutherAI 推出了一个名为 Language Model Evaluation Harness 的框架,用于比较和评估 LLM 的性能,HuggingFace 整合了该评估框架,以衡量社区创建的开源 LLM。
该框架通过四个不同的数据集对 LLM 进行评估,最终得分是每个数据集得分的累积。以下是参数:
HellaSwag- 这是一项挑战最新模型的测试,以 95% 的精确度做出对人类来说很容易的常识性推断。
部署 LLM
最后,是在生产环境中部署 LLM 的时候了。
您可以选择Lambda 或 google Cloud Functions 等无服务器技术,将模型部署为网络服务。此外,您还可以使用 Docker 等容器化技术,将模型及其依赖项打包到一个容器中。
最后......是时候更进一步了!
大型语言模型(如 ChatGPT 或谷歌的 PaLM)在人工智能领域掀起了一场风暴,然而,大多数公司在训练这些模型方面还没有任何进展,只能依赖少数几家科技巨头作为技术提供商。
如果您也在原地踏步,并计划走得更远,我们或许能帮到您多走一英里。