在了解大语言模型一文中,对 LLM 做了初步介绍,本文接续前一篇文章的内容,简要介绍 LLM 的应用和构建过程。
1.2 LLM 的应用
由于大型语言模型(LLMs)在解析和理解非结构化文本数据方面具备先进能力,它们在不同领域有着广泛的应用。如今,LLMs 被用于机器翻译、生成新文本(见图1.2)、情感分析、文本摘要及其他多种任务。最近,LLMs 还被应用于内容创作,如撰写小说、文章,甚至是计算机代码。此外,LLMs 还能驱动复杂的聊天机器人和虚拟助手,例如 OpenAI 的 ChatGPT 或谷歌的 Gemini(前身为 Bard),这些工具能够回答用户查询,并增强传统搜索引擎的功能——现在兴起的 AI 搜索,即是此功能的产品表现。
更重要的是,LLMs 可以在特定领域如医学或法律中,从海量文本中有效地检索知识,包括筛选文档、总结长篇大论及回答技术问题等。简而言之,LLMs 对于几乎任何涉及解析和生成文本的任务自动化都是不可或缺的。它们的应用几乎是无穷无尽的,随着我们不断创新并探索使用这些模型的新方法,很明显,LLMs 有潜力重新定义我们与技术的关系,使其更加对话式、直观且易于访问。
图 1.2 LLM 接口使用户和AI系统之间能够进行自然语言交流。此截图展示了 ChatGPT 根据用户的指定要求编写诗歌的过程。
1.3 构建和使用 LLMs
为什么我们要构建自己的 LLMs?从头开始编码一个 LLM 是理解其机制和局限性的极好实践。同时,这也为我们提供了必要的知识,以便对现有的开源LLM架构进行预训练或微调,以适应特定领域的数据集或任务。
注意:如今大多数LLM都是使用 PyTorch 深度学习库实现的,这也是我们将要使用的工具。
研究表明,在模型性能方面,针对特定任务或领域的定制构建 LLM 可以胜过通用目的的 LLM,比如由 ChatGPT 提供的那些旨在应用于广泛领域的模型。这些例子包括 BloombergGPT(专注于金融领域)以及专门用于医学问答的 LLM。当然,AI Agent 也是一个解决通用模型知识不足的重要方法,但这不是我们这里所探讨的话题。
使用定制构建的 LLM 有几个优势,特别是在数据隐私方面。例如,由于保密性考虑,公司可能不愿意与 OpenAI 等第三方 LLM 提供商共享敏感数据。此外,开发较小的定制 LLM 可以直接部署在客户的设备上,如笔记本电脑和智能手机,这是苹果等公司目前正在探索的方向。这种本地实施可以显著降低延迟并减少与服务器相关的成本。而且,定制 LLM 赋予开发者完全的自主权,使他们能够根据需要控制模型的更新和修改。
创建 LLM 的一般过程包括预训练和微调。“预训练”中的“预”指的是模型(如 LLM)在一个大而多样的数据集上进行初步训练,以发展出对语言的广泛理解。这个预训练模型然后作为一个基础资源,可以通过微调进一步优化,即模型在更窄、更特定于具体任务或领域的数据集上进行特别训练。这种包含预训练和微调的两阶段训练方法如图 1.3 所示。
图 1.3 预训练一个 LLM 涉及到在大型文本数据集上进行下一个词预测。预训练后的 LLM 然后可以使用一个较小的标记数据集进行微调。
创建 LLM 的第一步是使用大量的文本数据 corpus 进行训练,有时这些数据被称为原始文本。“原始”指的是这些数据只是普通的文本,没有任何标签信息。(可能会应用一些过滤,比如去除格式字符或未知语言的文档。)
注意:具有机器学习背景的读者可能会注意到,传统的机器学习模型和通过常规监督学习范式训练的深度神经网络通常需要标签信息。然而,对于 LLM 的预训练阶段而言,情况并非如此。在这个阶段,LLM 使用自监督学习,即模型从输入数据中生成自己的标签。
LLM 的第一个训练阶段也被称为预训练,通过这一过程创建一个初始的预训练 LLM,通常称为基础模型或基石模型。此类模型的一个典型例子是 GPT-3 模型(ChatGPT 原始模型的前身)。该模型能够完成文本——即完成用户提供的半成品句子。它还具有有限的少样本能力,这意味着它可以根据仅有的一些示例学习执行新任务,而不需要大量的训练数据。
在通过对大型文本数据集进行训练获得预训练的 LLM 之后(在此过程中,LLM 被训练来预测文本中的下一个词),我们可以进一步使用标记数据对 LLM 进行训练,这个过程也被称为微调。
微调 LLM 最受欢迎的两类方法是指令微调和分类微调。
- 在指令微调中,标记数据集由指令和答案对组成,比如一个要求翻译文本的查询及其正确翻译后的文本。
- 在分类微调中,标记数据集包含文本及其相关的类别标签——例如,与“垃圾邮件”和“非垃圾邮件”标签关联的电子邮件。
原文:Sebastian Raschka. Build a Large Language Model(From Scratch),此处为原文的中文翻译,为了阅读方便,有适当修改。