原文:
www.kdnuggets.com/7-steps-to-mastering-large-language-models-llms
图片来源:作者
GPT-4、Llama、Falcon 等——大型语言模型(LLMs)——真的是当下的热门话题。如果你正在阅读这些内容,你很可能已经通过聊天界面或 API 使用过一个或多个这些大型语言模型。
1. Google 网络安全证书 - 快速进入网络安全职业。
2. Google 数据分析专业证书 - 提升你的数据分析技能
3. Google IT 支持专业证书 - 支持你的组织的 IT 需求
如果你曾经好奇 LLMs 到底是什么,它们如何工作,以及你可以用它们构建什么,这份指南将是你所需要的。不论你是对大型语言模型感兴趣的数据专业人士,还是对它们感到好奇的普通人,这都是一份全面的 LLM 领域指南。
从 LLMs 是什么到如何构建和部署应用程序,我们将分解成 7 个简单的步骤,帮助你全面了解大型语言模型,内容包括:
-
你应该知道的事项
-
概念概览
-
学习资源
让我们开始吧!
如果你是大型语言模型的新手,首先了解 LLMs 的高层次概况以及它们为何如此强大是有帮助的。从尝试回答这些问题开始:
-
LLMs 究竟是什么?
-
为什么它们如此受欢迎?
-
LLMs 与其他深度学习模型有什么不同?
-
常见的 LLM 使用案例有哪些?(你可能已经熟悉这些;仍然是一个列出它们的好练习)
你能回答所有这些问题吗?好吧,让我们一起做吧!
大型语言模型(Large Language Models,简称 LLMs)是深度学习模型的一个子集,经过大规模文本数据的训练。它们非常庞大——拥有数百亿个参数——并且在各种自然语言任务上表现极为出色。
LLMs 具备理解和生成连贯、上下文相关且语法准确的文本的能力。它们的受欢迎和广泛应用的原因包括:
-
在各种语言任务上表现卓越
-
预训练 LLMs 的可访问性和可用性,使 AI 驱动的自然语言理解和生成得以民主化
由于其规模和架构,包括自注意力机制,LLMs 与其他深度学习模型不同。关键差异包括:
-
变换器架构,它彻底改变了自然语言处理并支撑了 LLMs (在我们的指南中即将介绍)
-
捕捉长距离依赖的能力,能够更好地理解上下文
-
能够处理各种语言任务,从文本生成到翻译、总结和问答
LLMs 在语言任务中得到了应用,包括:
-
自然语言理解:LLMs 在情感分析、命名实体识别和问答等任务中表现出色。
-
文本生成:它们可以为聊天机器人和其他内容生成任务生成类人文本。(如果你曾使用过 ChatGPT 或其替代品,这完全不会让你感到惊讶)
-
机器翻译:LLMs 显著提高了机器翻译的质量。
-
内容总结:LLMs 可以生成长篇文档的简明总结。你是否尝试过总结 YouTube 视频的文字记录?
现在你对 LLMs 及其能力有了初步了解,以下是一些资源,如果你有兴趣进一步探索:
既然你已经了解了什么是 LLMs,让我们继续学习支撑这些强大 LLMs 的变换器架构。所以,在 LLM 的学习过程中,这一步中变换器需要你所有的注意力 (没有任何双关意思)
原始变换器架构,在论文"Attention Is All You Need"中介绍,彻底改变了自然语言处理:
-
关键特性:自注意力层、多头注意力、前馈神经网络、编码器-解码器架构。
-
应用案例:变换器是著名的语言模型(LLMs),如 BERT 和 GPT 的基础。
原始变换器架构使用编码器-解码器架构;但也存在仅编码器和仅解码器的变体。这里是这些架构的全面概述,包括它们的特性、著名 LLMs 和应用案例:
架构 | 关键特性 | 著名 LLMs | 应用案例 |
---|---|---|---|
仅编码器 | 捕捉双向上下文;适用于自然语言理解 |
-
BERT
-
同样基于 BERT 架构的 RoBERTa,XLNet
|
-
文本分类
-
问答系统
|
仅解码器 | 单向语言模型;自回归生成 |
---|
-
GPT
-
PaLM
|
-
文本生成(各种内容创建任务)
-
文本补全
|
编码器-解码器 | 输入文本到目标文本;任何文本到文本的任务 |
---|
-
T5
-
BART
|
-
总结
-
翻译
-
问答系统
-
文档分类
|
以下是学习变换器的绝佳资源:
既然你已经熟悉了大型语言模型(LLMs)和变换器架构的基础知识,你可以继续学习 LLMs 的预训练。预训练为 LLMs 奠定基础,通过让它们接触大量的文本数据,使它们能够理解语言的各个方面和细微差别。
这里是你应该了解的概念概览:
-
LLMs 预训练的目标:让 LLMs 接触大量文本语料,以学习语言模式、语法和上下文。了解具体的预训练任务,如掩蔽语言建模和下一句预测。
-
LLMs 预训练的文本语料:LLMs 在大量多样化的文本语料上进行训练,包括网页文章、书籍和其他来源。这些是大规模数据集——包含数十亿到万亿的文本标记。常见的数据集包括 C4、BookCorpus、Pile、OpenWebText 等。
-
训练过程:理解预训练的技术细节,包括优化算法、批量大小和训练轮次。了解挑战,如减轻数据中的偏差。
如果你有兴趣进一步学习,请参考 CS324: 大型语言模型中的LLM 训练模块。
这些预训练的 LLMs 作为微调特定任务的起点。是的,微调 LLMs 是我们的下一步!
在对 LLMs 进行大规模文本语料的预训练后,下一步是对其进行特定自然语言处理任务的微调。微调可以让你使预训练模型适应执行特定任务,如情感分析、问答或翻译,以更高的准确性和效率完成任务。
微调是必要的,原因有几个:
-
预训练的 LLMs 已经获得了通用的语言理解,但需要微调才能在特定任务上表现良好。微调帮助模型学习目标任务的细微差别。
-
微调相比从头训练模型显著减少了所需的数据和计算量。因为它利用了预训练模型的理解,所以微调数据集可以比预训练数据集小得多。
现在让我们深入了解微调 LLMs 的方法:
-
选择预训练 LLM: 选择与任务匹配的预训练 LLM。例如,如果你在处理问答任务,选择一个有助于自然语言理解的预训练模型。
-
数据准备:为 LLM 执行的特定任务准备数据集。确保数据集包含标记的示例,并格式正确。
-
微调:在选择了基础 LLM 并准备好数据集之后,接下来就是真正的微调模型。但怎么做呢?
有没有参数高效的技术? 请记住,LLM 有数十亿个参数。权重矩阵非常庞大!
如果你无法访问权重怎么办?
图片由作者提供
当你无法访问模型的权重并通过 API 访问模型时,如何微调 LLM?大型语言模型具备上下文学习的能力——无需明确的微调步骤。你可以通过提供输入和任务的示例输出来利用它们从类比中学习。
提示调优——修改提示以获取更有帮助的输出——可以是:硬提示调优或*(软)提示调优*。
硬提示调优涉及直接修改提示中的输入令牌,因此不会更新模型的权重。
软提示调优将输入嵌入与一个可学习的张量拼接在一起。一个相关的想法是前缀调优,在每个 Transformer 块中使用可学习的张量,而不仅仅是输入嵌入。
如前所述,大型语言模型具有数十亿个参数。因此,微调所有层中的权重是一项资源密集型任务。最近,参数高效微调技术(PEFT)如 LoRA 和 QLoRA 变得流行。使用 QLoRA,你可以在单个消费级 GPU 上微调 4 位量化的 LLM,而不会降低性能。
这些技术引入了一小组可学习的参数——适配器——而不是整个权重矩阵。以下是一些有用的资源,以了解更多关于微调 LLMs 的内容:
大型语言模型可能会生成有害、偏见或与用户实际期望不符的内容。对齐是指将 LLM 的行为与人类偏好和伦理原则对齐的过程。其目的是减少模型行为相关的风险,包括偏见、争议性回应和有害内容生成。
你可以探索以下技术:
-
从人类反馈中强化学习(RLHF)
-
对比后训练
RLHF 使用人类偏好注释来优化 LLM 输出,并根据这些注释拟合奖励模型。对比后训练旨在利用对比技术自动构建偏好对。
LLM 中的对齐技术 | 图片来源
欲了解更多信息,请查看以下资源:
一旦你为特定任务微调了 LLM,评估其性能并考虑持续学习和适应的策略至关重要。此步骤确保你的 LLM 保持有效并与时俱进。
评估性能以衡量其有效性并识别改进领域。以下是 LLM 评估的关键方面:
-
任务特定指标:为你的任务选择合适的指标。例如,在文本分类中,你可以使用传统的评估指标,如准确率、精确率、召回率或 F1 分数。对于语言生成任务,常用的指标有困惑度和 BLEU 分数。
-
人类评估:让专家或众包标注员在现实场景中评估生成内容或模型的响应质量。
-
偏见与公平性:评估 LLM 的偏见和公平性问题,特别是在将其应用于现实世界时。分析模型在不同人口群体中的表现,并解决任何差异。
-
鲁棒性与对抗测试:通过对 LLM 进行对抗攻击或挑战性输入来测试其鲁棒性。这有助于发现漏洞并增强模型安全性。
为了保持 LLM 与新数据和任务的同步,考虑以下策略:
-
数据增强:持续扩充数据存储,以避免因缺乏最新信息而导致的性能下降。
-
重新训练:定期用新数据重新训练 LLM,并对其进行针对不断变化任务的微调。对最新数据的微调有助于模型保持最新状态。
-
主动学习:实施主动学习技术以识别模型不确定或可能出错的实例。收集这些实例的注释以完善模型。
LLM 的另一个常见问题是幻觉。确保探索像检索增强这样的技术来减轻幻觉。
这里有一些有用的资源:
在为特定任务开发和微调 LLM 后,开始构建和部署利用 LLM 能力的应用程序。实质上,利用 LLM 构建有用的现实世界解决方案。
图片由作者提供
以下是一些考虑事项:
-
任务特定的应用开发:开发针对特定用例的应用程序。这可能涉及创建基于网页的界面、移动应用、聊天机器人或集成到现有软件系统中。
-
用户体验(UX)设计:关注以用户为中心的设计,确保你的 LLM 应用程序直观且易于使用。
-
API 集成:如果你的 LLM 作为语言模型后台,创建 RESTful API 或 GraphQL 端点,以便其他软件组件能够无缝地与模型互动。
-
可扩展性和性能:设计应用程序以处理不同级别的流量和需求。优化性能和可扩展性,以确保流畅的用户体验。
你已经开发了你的 LLM 应用程序,并准备将其部署到生产环境中。以下是你应该考虑的事项:
-
云部署:考虑将 LLM 应用程序部署到 AWS、Google Cloud 或 Azure 等云平台,以实现可扩展性和便于管理。
-
容器化:使用 Docker 和 Kubernetes 等容器化技术打包应用程序,并确保在不同环境中的一致部署。
-
监控:实施监控以跟踪已部署的 LLM 应用程序的性能,并实时检测和解决问题。
数据隐私和伦理考虑是潜在的:
-
数据隐私:在处理用户数据和个人身份信息(PII)时,确保遵守数据隐私法规。
-
伦理考虑:在部署 LLM 应用程序时遵循伦理指南,以减轻潜在的偏见、虚假信息或有害内容生成。
你还可以使用像 LlamaIndex 和 LangChain 这样的框架来帮助你构建端到端的 LLM 应用程序。以下是一些有用的资源:
我们通过定义大型语言模型是什么、为什么它们受到欢迎开始讨论,逐渐深入技术方面。我们总结了构建和部署 LLM 应用程序的讨论,这需要仔细规划、以用户为中心的设计、强大的基础设施,同时优先考虑数据隐私和伦理。
正如你可能已经意识到的,跟进该领域的最新进展并不断构建项目是重要的。如果你有一些自然语言处理的经验,本指南将在此基础上进行深入探讨。即使没有经验,也不用担心。我们的 7 个步骤掌握自然语言处理指南将帮助你。祝学习愉快!
Bala Priya C**** 是来自印度的开发者和技术作家。她喜欢在数学、编程、数据科学和内容创作的交叉点工作。她的兴趣和专业领域包括 DevOps、数据科学和自然语言处理。她喜欢阅读、写作、编码和喝咖啡!目前,她正在通过编写教程、如何做指南、观点文章等,学习并与开发者社区分享她的知识。Bala 还制作引人入胜的资源概述和编码教程。