这篇博客全面介绍了大型语言模型(LLMs)的构建流程,从流行架构的选择到实际建模的每个关键步骤。文章首先探讨了LLMs的模型架构,然后详细阐述了数据准备过程,包括数据的收集、清洗和去重,接着是关于如何进行有效标记化的讨论。在模型构建方面,博客详细解释了采用自监督学习方法的预训练过程,以及对模型进行指令微调和对齐的重要性。每个环节都被细致地讲解,使读者能够深入理解LLMs的构建和优化过程。这篇博客为那些对LLMs工作方式感兴趣的读者提供了一个指导。
训练流程示意 :
1. 主流的LLM架构
Transformer
仅编码器架构
仅解码器架构
编码器-解码器架构
2. 数据清理
图:宏观数据精炼的后续阶段剔除了最初在CommonCrawl中的近90%文档。
2.1 数据过滤
数据过滤的目的是提高训练数据的质量和训练数据的有效性。常见的数据过滤技术包括:
2.2 数据去重
3 分词
3.1 BytePairEncoding(字节对编码)
3.2 WordPieceEncoding(词片编码)
3.3 SentencePieceEncoding(句子片编码)
4. 位置嵌入
4.1 绝对位置嵌入(Absolute Positional Embeddings, APE)
4.2 相对位置嵌入(Relative Positional Embeddings, RPE)
4.3 旋转位置嵌入(Rotary Position Embeddings, RoPE)
4.4 相对位置偏置(Relative Positional Bias)
5. 模型预训练
预训练是大型语言模型训练流程的第一步,帮助LLMs获得基本的语言理解能力,适用于广泛的语言相关任务。在预训练期间,LLM通常在大量(通常是未标记的)文本上以自监督的方式进行训练。预训练的方法有多种,包括下一句预测,最常见的两种包括下一个标记预测(自回归语言建模)和遮蔽语言建模。
5.1 自回归语言建模
5.2 遮蔽语言建模
5.3 专家混合(Mixture of Experts, MoE)
图:Switch Transformer编码器块示意图。它们用稀疏Switch FFN层(浅蓝色)替换了Transformer中的密集前馈网络(FFN)层。
6. 微调和指令微调
微调和指令微调是大型语言模型训练流程中的重要步骤,这些技术展示了微调和指令微调在提高LLMs性能、提升模型适应特定任务和遵循指令的能力方面的关键作用。
6.1 微调
6.2 指令微调
6.3 Self-Instruct方法
7. 对齐
7.1 对齐
AI对齐是指引导AI系统朝向人类的目标、偏好和原则的过程。预训练的LLMs,虽然针对词预测,但经常会展现出非预期行为,如生成有毒、有害、误导性和带有偏见的内容。
7.2 指令微调
指令微调是使LLMs更接近对齐的一步。然而,在许多情况下,还需要进一步的步骤来改善模型的对齐,避免非预期行为。最新研究表明,除SFT外的进一步对齐主要改善至少7B参数的模型。对于较小的模型,SFT已足够。以下是最流行的对齐方法:
7.3 RLHF和RLAIF
图:DPO优化人类偏好,避免强化学习。现有方法首先对人类反馈数据集中的提示和对响应对的人类偏好进行奖励模型拟合,然后使用RL找到最大化学习奖励的策略。相比之下,DPO直接针对最佳满足偏好的策略进行优化,具有简单的分类目标,无需显式奖励函数或RL。
图:LLM对齐涉及监督微调,然后优化以人为中心的损失(HALO)。然而,现有方法需要的成对偏好数据难以获取。相比之下,KTO使用一种更加丰富的数据类型,使其在现实世界中更易于使用。
8. 解码策略
解码是指使用预训练的LLMs进行文本生成的过程。在处理输入提示后,标记器将文本中的每个标记转换为相应的标记ID。语言模型随后使用这些ID预测下一个最可能的标记或标记序列。最后,模型产生逻辑值,通过softmax函数转换为概率。已经开发了多种解码策略,包括Greedy Search、Beam Search以及Top-K和Top-P (Nucleus sampling)等采样技术。
8.1 Greedy Search
8.2 Beam Search
8.3 Top-K采样
8.4 Top-P采样
9. 费效比优化训练/推理/适应/压缩
在这部分中,我们回顾了一些用于更经济、更高效计算地训练和使用LLMs的流行方法。
9.1 优化训练
为了更经济、更高效地训练LLMs,已经开发了许多框架。这些优化训练框架有助于更经济高效地训练和使用LLMs,降低成本的同时保持或提升性能。这里我们介绍一些主要的框架。
RWKV架构
RWKV与不同Transformers的时间复杂度比较
9.2 低秩适应(LoRA)
图:LoRA的重参数化过程。
9.3 知识蒸馏
图:具有学生和教师的通用知识蒸馏框架。
9.4 量化
量化是减少模型大小和提升运算速度的关键技术。在深度学习的核心,是一系列应用于具有特定精度的模型权重的数学函数。降低权重的精度可以用于减小模型大小,并使其运算更快。例如,与Int-8操作相比,Float-32操作更慢。量化可以在不同阶段应用。
主要量化方法:
结束语
到这里关于LLMs的流行架构与训练技术的介绍就要接近尾声了, 这个博客是大语言模型教程系列的第六篇,之后会陆续把大语言模型相关的知识点做更多的整理,在本次大语言模型的探索之旅的尾声,感谢每位朋友的陪伴,我是@APlayBoy,期待与您一起在AI的世界里不断成长!
原文链接:
原文链接:
本网站的文章部分内容可能来源于网络和网友发布,仅供大家学习与参考,如有侵权,请联系站长进行删除处理,不代表本网站立场,转载者并注明出处:https://www.jmbhsh.com/keji/33178.html