From 1f46fc1dd5e177337a9b178efad82e533d88daaa Mon Sep 17 00:00:00 2001 From: KMnO4-zx <1021385881@qq.com> Date: Tue, 17 Jun 2025 17:07:09 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E6=9B=B4=E6=96=B0=E6=96=87=E6=A1=A3?= =?UTF-8?q?=E4=B8=AD=E7=9A=84=E5=9B=BE=E7=89=87=E9=93=BE=E6=8E=A5=E4=B8=BA?= =?UTF-8?q?=E7=BB=9D=E5=AF=B9=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 将所有文档中的相对图片路径替换为完整的GitHub raw链接,确保图片在文档中能够正确显示 --- docs/chapter2/第二章 Transformer架构.md | 14 +++++----- docs/chapter3/第三章 预训练语言模型.md | 30 +++++++++++----------- docs/chapter4/第四章 大语言模型.md | 10 ++++---- docs/chapter5/第五章 动手搭建大模型.md | 6 ++--- docs/chapter6/第六章 大模型训练流程实践.md | 18 ++++++------- docs/chapter7/第七章 大模型应用.md | 18 ++++++------- 6 files changed, 48 insertions(+), 48 deletions(-) diff --git a/docs/chapter2/第二章 Transformer架构.md b/docs/chapter2/第二章 Transformer架构.md index 3b7975d..c725cde 100644 --- a/docs/chapter2/第二章 Transformer架构.md +++ b/docs/chapter2/第二章 Transformer架构.md @@ -9,21 +9,21 @@ - 前馈神经网络(Feedforward Neural Network,FNN),即每一层的神经元都和上下两层的每一个神经元完全连接,如图2.1所示:
- 图片描述 + 图片描述

图2.1 前馈神经网络

- 卷积神经网络(Convolutional Neural Network,CNN),即训练参数量远小于前馈神经网络的卷积层来进行特征提取和学习,如图2.2所示:
- 图片描述 + 图片描述

图2.2 卷积神经网络

- 循环神经网络(Recurrent Neural Network,RNN),能够使用历史信息作为输入、包含环和自重复的网络,如图2.3所示:
- 图片描述 + 图片描述

图2.3 循环神经网络

@@ -222,7 +222,7 @@ scores = F.softmax(scores.float(), dim=-1).type_as(xq) 在原论文中,作者也通过实验证实,多头注意力计算中,每个不同的注意力头能够拟合语句中的不同信息,如图2.4所示:
- 图片描述 + 图片描述

图2.4 多头注意力机制

@@ -346,7 +346,7 @@ Seq2Seq,即序列到序列,是一种经典 NLP 任务。具体而言,是 Transformer 中的 Encoder,就是用于上述的编码过程;Decoder 则用于上述的解码过程。Transformer 结构,如图2.5所示:
- 图片描述 + 图片描述

图2.5 编码器-解码器结构

@@ -732,7 +732,7 @@ $$ 上述​编码结果,如图2.6所示:
- 图片描述 + 图片描述

图2.6 编码结果

@@ -773,7 +773,7 @@ class PositionalEncoding(nn.Module): 上述所有组件,再按照下图的 Tranfromer 结构拼接起来就是一个完整的 Transformer 模型了,如图2.7所示:
- 图片描述 + 图片描述

图2.7 Transformer 模型结构

diff --git a/docs/chapter3/第三章 预训练语言模型.md b/docs/chapter3/第三章 预训练语言模型.md index 04be3ed..6cda07a 100644 --- a/docs/chapter3/第三章 预训练语言模型.md +++ b/docs/chapter3/第三章 预训练语言模型.md @@ -26,7 +26,7 @@ BERT 是一个统一了多种思想的预训练模型。其所沿承的核心思 BERT 的模型架构是取了 Transformer 的 Encoder 部分堆叠而成,其主要结构如图3.1所示:
- 图片描述 + 图片描述

图3.1 BERT 模型结构

@@ -35,7 +35,7 @@ BERT 是针对于 NLU 任务打造的预训练模型,其输入一般是文本 模型整体既是由 Embedding、Encoder 加上 prediction_heads 组成:
- 图片描述 + 图片描述

图3.2 BERT 模型简略结构

@@ -44,21 +44,21 @@ BERT 是针对于 NLU 任务打造的预训练模型,其输入一般是文本 prediction_heads 其实就是线性层加上激活函数,一般而言,最后一个线性层的输出维度和任务的类别数相等,如图3.3所示:
- 图片描述 + 图片描述

图3.3 prediction_heads 结构

而每一层 Encoder Layer 都是和 Transformer 中的 Encoder Layer 结构类似的层,如图3.4所示:
- 图片描述 + 图片描述

图3.4 Encoder Layer 结构

如图3.5所示,已经通过 Embedding 层映射的 hidden_states 进入核心的 attention 机制,然后通过残差连接的机制和原输入相加,再经过一层 Intermediate 层得到最终输出。Intermediate 层是 BERT 的特殊称呼,其实就是一个线性层加上激活函数:
- 图片描述 + 图片描述

图3.5 Intermediate 结构

@@ -71,7 +71,7 @@ GELU 的核心思路为将随机正则的思想引入激活函数,通过输入 BERT 的 注意力机制和 Transformer 中 Encoder 的 自注意力机制几乎完全一致,但是 BERT 将相对位置编码融合在了注意力机制中,将相对位置编码同样视为可训练的权重参数,如图3.6所示:
- 图片描述 + 图片描述

图3.6 BERT 注意力机制结构

@@ -230,14 +230,14 @@ T5 的大一统思想将不同的 NLP 任务如文本分类、问答、翻译等 BERT 采用了 Encoder-Only 结构,只包含编码器部分;而 GPT 采用了 Decoder-Only 结构,只包含解码器部分。T5 则采用了 Encoder-Decoder 结构,其中编码器和解码器都是基于 Transformer 架构设计。编码器用于处理输入文本,解码器用于生成输出文本。编码器和解码器之间通过注意力机制进行信息交互,从而实现输入文本到输出文本的转换。其主要结构如图3.7所示:
- 图片描述 + 图片描述

图3.7 T5 模型详细结构

如图3.8所示,从整体来看 T5 的模型结构包括 Tokenizer 部分和 Transformer 部分。Tokenizer 部分主要负责将输入文本转换为模型可接受的输入格式,包括分词、编码等操作。Transformer 部分又分为 EncoderLayers 和 DecoderLayers 两部分,他们分别由一个个小的 Block组成,每个 Block 包含了多头注意力机制、前馈神经网络和 Norm 层。Block 的设计可以使模型更加灵活,像乐高一样可以根据任务的复杂程度和数据集的大小来调整 Block 的数量和层数。
- 图片描述 + 图片描述

图3.8 T5 模型整体结构

@@ -246,14 +246,14 @@ T5 模型的 Encoder 和 Decoder 部分都是基于 Transformer 架构设计的 和 Encoder 不一样的是,在 Decoder 中还包含了 Encoder-Decoder Attention 结构,用于捕捉输入和输出序列之间的依赖关系。这两种 Attention 结构几乎完全一致,只有在位置编码和 Mask 机制上有所不同。如图3.9所示,Encoder 和 Decoder 的结构如下:
- alt text + alt text

图3.9 Encoder 和 Decoder

T5 的 Self-Attention 机制和 BERT 的 Attention 机制是一样的,都是基于 Self-Attention 机制设计的。Self-Attention 机制是一种全局依赖关系建模方法,通过计算 Query、Key 和 Value 之间的相似度来捕捉输入序列中的全局依赖关系。Encoder-Decoder Attention 仅仅在位置编码和 Mask 机制上有所不同,主要是为了区分输入和输出序列。如图3.10所示,Self-Attention 结构如下:
- alt text + alt text

图3.10 Self-Attention 结构

@@ -298,7 +298,7 @@ T5通过大规模的文本数据进行预训练,然后在具体任务上进行 我们可以通过图3.11,更加直观地理解 T5 的大一统思想:
- alt text + alt text

图3.11 T5 的大一统思想

@@ -323,7 +323,7 @@ GPT,即 Generative Pre-Training Language Model,是由 OpenAI 团队于 2018 #### (1) 模型架构——Decoder Only
- alt text + alt text

图3.12 GPT 模型结构

@@ -394,7 +394,7 @@ LLaMA模型是由Meta(前Facebook)开发的一系列大型预训练语言模 与GPT系列模型一样,LLaMA模型也是基于Decoder-Only架构的预训练语言模型。LLaMA模型的整体结构与GPT系列模型类似,只是在模型规模和预训练数据集上有所不同。如图3.13是LLaMA模型的架构示意图:
- alt text + alt text

图3.13 LLaMA-3 模型结构

@@ -460,7 +460,7 @@ GLM 通过优化一个自回归空白填充任务来实现 MLM 与 CLM 思想的 通过将 MLM 与 CLM 思想相结合,既适配逐个 token 生成的生成类任务,也迫使模型从前后两个方向学习输入文本的隐含关系从而适配了理解类任务。使用 GLM 预训练任务产出的 GLM 模型,在一定程度上展现了其超出同体量 BERT 系模型的优越性能:
- alt text + alt text

图3.14 alt text

@@ -479,7 +479,7 @@ ChatGLM3-6B 发布于 23年 10月,相对于二代在语义、数学、推理 图3.15展示了 GLM 系列模型在基准集上的表现演进:
- alt text + alt text

图3.15 alt text

diff --git a/docs/chapter4/第四章 大语言模型.md b/docs/chapter4/第四章 大语言模型.md index 911e7b2..d33c217 100644 --- a/docs/chapter4/第四章 大语言模型.md +++ b/docs/chapter4/第四章 大语言模型.md @@ -96,7 +96,7 @@ LLM 的强大能力也为其带来了跨模态的强大表现。随着 LLM 的 在上一节,我们分析了 LLM 的定义及其特有的强大能力,通过更大规模的参数和海量的训练语料获得远超传统预训练模型的涌现能力,展现出强大的上下文学习、指令遵循及逐步推理能力,带来 NLP 领域的全新变革。那么,通过什么样的步骤,我们才可以训练出一个具有涌现能力的 LLM 呢?训练一个 LLM,与训练传统的预训练模型,又有什么区别?
- alt text + alt text

图4.1 训练 LLM 的三个阶段

@@ -128,7 +128,7 @@ GPT-3|96|12288|96|175B|300B 也正因如此,分布式训练框架也成为 LLM 训练必不可少的组成部分。分布式训练框架的核心思路是数据并行和模型并行。所谓数据并行,是指训练模型的尺寸可以被单个 GPU 内存容纳,但是由于增大训练的 batch_size 会增大显存开销,无法使用较大的 batch_size 进行训练;同时,训练数据量非常大,使用单张 GPU 训练时长难以接受。
- alt text + alt text

图4.2 模型、数据并行

@@ -137,7 +137,7 @@ GPT-3|96|12288|96|175B|300B 但是,当 LLM 扩大到上百亿参数,单张 GPU 内存往往就无法存放完整的模型参数。如图4.3所示,在这种情况下,可以将模型拆分到多个 GPU 上,每个 GPU 上存放不同的层或不同的部分,从而实现模型并行。
- alt text + alt text

图4.3 模型并行

@@ -297,7 +297,7 @@ RLHF,全称是 Reinforcement Learning from Human Feedback,即人类反馈强 如图4.4所示,ChatGPT 在技术报告中将对齐分成三个阶段,后面两个阶段训练 RM 和 PPO 训练,就是 RLHF 的步骤:
- alt text + alt text

图4.4 ChatGPT 训练三个的阶段

@@ -331,7 +331,7 @@ RM,Reward Model,即奖励模型。RM 是用于拟合人类偏好,来给 LL 在具体 PPO 训练过程中,会存在四个模型。如图4.5所示,两个 LLM 和两个 RM。两个 LLM 分别是进行微调、参数更新的 actor model 和不进行参数更新的 ref model,均是从 SFT 之后的 LLM 初始化的。两个 RM 分别是进行参数更新的 critic model 和不进行参数更新的 reward model,均是从上一步训练的 RM 初始化的。
- alt text + alt text

图4.5 PPO 训练流程

diff --git a/docs/chapter5/第五章 动手搭建大模型.md b/docs/chapter5/第五章 动手搭建大模型.md index 128cfd9..9f391ee 100644 --- a/docs/chapter5/第五章 动手搭建大模型.md +++ b/docs/chapter5/第五章 动手搭建大模型.md @@ -7,7 +7,7 @@ Meta(原Facebook)于2023年2月发布第一款基于Transformer结构的大 LLaMA2 模型结构如下图5.0所示:
- alt text + alt text

图 5.0 LLaMA2结构

@@ -1333,7 +1333,7 @@ class PretrainDataset(Dataset): 在以上代码和图5.1可以看出,`Pretrain Dataset` 主要是将 `text` 通过 `tokenizer` 转换成 `input_id`,然后将 `input_id` 拆分成 `X` 和 `Y`,其中 `X` 为 `input_id` 的前 n-1 个元素,`Y` 为 `input_id` 的后 n-1 `个元素。loss_mask` 主要是用来标记哪些位置需要计算损失,哪些位置不需要计算损失。
- alt text + alt text

图5.1 预训练损失函数计算

@@ -1420,7 +1420,7 @@ class SFTDataset(Dataset): 在 SFT 阶段,这里使用的是多轮对话数据集,所以就需要区分哪些位置需要计算损失,哪些位置不需要计算损失。在上面的代码中,我使用了一个 `generate_loss_mask` 函数来生成 `loss_mask`。这个函数主要是用来生成 `loss_mask`,其中 `loss_mask` 的生成规则是:当遇到 `|assistant\n` 时,就开始计算损失,直到遇到 `|` 为止。这样就可以保证我们的模型在 SFT 阶段只计算当前轮的对话内容,如图5.2所示。
- alt text + alt text

图5.2 SFT 损失函数计算

diff --git a/docs/chapter6/第六章 大模型训练流程实践.md b/docs/chapter6/第六章 大模型训练流程实践.md index 76c3bf3..4ed7113 100644 --- a/docs/chapter6/第六章 大模型训练流程实践.md +++ b/docs/chapter6/第六章 大模型训练流程实践.md @@ -15,7 +15,7 @@ Transformers 是由 Hugging Face 开发的 NLP 框架,通过模块化设计实现了对 BERT、GPT、LLaMA、T5、ViT 等上百种主流模型架构的统一支持。通过使用 Transformers,开发者无需重复实现基础网络结构,通过 AutoModel 类即可一键加载任意预训练,图6.1 为 Hugging Face Transformers 课程首页:
- alt text + alt text

图6.1 Hugging Face Transformers

@@ -24,7 +24,7 @@ Transformers 是由 Hugging Face 开发的 NLP 框架,通过模块化设计实 对 LLM 时代的 NLP 研究者更为重要的是,HuggingFace 基于 Transformers 框架搭建了其庞大的 AI 社区,开放了数亿个预训练模型参数、25万+不同类型数据集,通过 Transformers、Dataset、Evaluate 等多个框架实现对预训练模型、数据集及评估函数的集成,从而帮助开发者可以便捷地使用任一预训练模型,在开源模型及数据集的基础上便捷地实现个人模型的开发与应用。
- alt text + alt text

图6.2 Hugging Face Transformers 模型社区

@@ -35,14 +35,14 @@ Transformers 是由 Hugging Face 开发的 NLP 框架,通过模块化设计实 我们可以使用 transformers 的 AutoModel 类来直接初始化已经实现好的模型。对于任意预训练模型,其参数中都包含有模型的配置信息。如果是想要从头训练一个 LLM,可以使用一个已有的模型架构来直接初始化。这里,我们以 [Qwen-2.5-1.5B](https://huggingface.co/Qwen/Qwen2.5-1.5B/tree/main)的模型架构为例:
- alt text + alt text

图6.3 Qwen-2.5-1.5B

该界面即为 HuggingFace 社区中的 Qwen-2.5-1.5B 模型参数,其中的 `config.json` 文件即是模型的配置信息,包括了模型的架构、隐藏层大小、模型层数等,如图6.4所示:
- alt text + alt text

图6.4 Qwen-2.5-1.5B config.json 文件

@@ -59,7 +59,7 @@ os.system('huggingface-cli download --resume-download Qwen/Qwen2.5-1.5B --local- 如图6.5,此处的 “Qwen/Qwen2.5-1.5B”即为要下载模型的标识符,对于其他模型,可以直接复制 HuggingFace 上的模型名即可:
- alt text + alt text

图6.5 模型下载标识

@@ -87,7 +87,7 @@ model = AutoModelForCausalLM.from_config(config,trust_remote_code=True) 由于 LLM 一般都是 CausalLM 架构,此处使用了 AutoModelForCausalLM 类进行加载。如果是用于分类任务训练,可使用 AutoModelForSequenceClassification 类来加载。查看该 model,图6.6可以看到其架构和定义的配置文件相同:
- alt text + alt text

图6.6 模型结构输出结果

@@ -130,7 +130,7 @@ ds["train"][0] ```
- alt text + alt text

图6.7 数据集展示

@@ -788,7 +788,7 @@ trainer.save_model() 具体而言,其在预训练模型每层中插入用于下游任务的参数,即 Adapter 模块,在微调时冻结模型主体,仅训练特定于任务的参数,如图6.8所示。
- alt text + alt text

图6.8 Adapt Tuning

@@ -840,7 +840,7 @@ $$h = W_0 x + \Delta W x = W_0 x + B A x$$ 训练思路如图6.9所示:
- alt text + alt text

图6.9 LoRA

diff --git a/docs/chapter7/第七章 大模型应用.md b/docs/chapter7/第七章 大模型应用.md index 0a044c1..4280780 100644 --- a/docs/chapter7/第七章 大模型应用.md +++ b/docs/chapter7/第七章 大模型应用.md @@ -47,7 +47,7 @@ Open LLM Leaderboard 为由 Hugging Face 提供的开放式榜单,汇集了多个开源大模型的评测结果,帮助用户了解不同模型在各种任务上的表现。该榜单通过多个标准化测试集来评估模型的性能,并通过持续更新的方式反映最新的技术进展,为研究者和开发者提供了高价值的对比参考,如图7.1所示。
- alt text + alt text

图 7.1 Open LLM Leaderboard

@@ -56,7 +56,7 @@ Open LLM Leaderboard 为由 Hugging Face 提供的开放式榜单,汇集了多 由lmsys提供的聊天机器人评测榜单,通过多维度的评估,展示各类大模型在对话任务中的能力。该榜单采用真实用户与模型交互的方式来评测对话质量,重点考察模型的自然语言生成能力、上下文理解能力以及用户满意度,是当前评估聊天机器人性能的重要工具,如图7.2所示。
- alt text + alt text

图7.2 Lmsys Chatbot Arena Leaderboard

@@ -65,7 +65,7 @@ Open LLM Leaderboard 为由 Hugging Face 提供的开放式榜单,汇集了多 OpenCompass 是国内的评测榜单,针对大模型在多种语言和任务上的表现进行评估,提供了中国市场特定应用的参考。该榜单结合了中文语言理解和多语言能力的测试,以适应本地化需求,并特别关注大模型在中文语境下的准确性、鲁棒性和适应性,为国内企业和研究者选择合适的模型提供了重要参考。
- alt text + alt text

图7.3 OpenCompass

@@ -84,7 +84,7 @@ OpenCompass 是国内的评测榜单,针对大模型在多种语言和任务 - 医疗榜:基于MedBench评测集,评估大语言模型在医学知识问答、安全伦理理解等方面的表现。由上海人工智能实验室提供。
- alt text + alt text

图7.4 垂直领域榜单

@@ -118,7 +118,7 @@ RAG的基本结构有哪些呢? 上述也就是 TinyRAG 的所有模块内容,如图7.5所示。
- alt text + alt text

图7.5 TinyRAG 项目结构

@@ -131,7 +131,7 @@ RAG的基本结构有哪些呢? 如下图7.6所示的流程图,图片出处 ***[Retrieval-Augmented Generation for Large Language Models: A Survey](https://arxiv.org/pdf/2312.10997.pdf)***
- alt text + alt text

图7.6 RAG 流程图

@@ -403,7 +403,7 @@ print(chat.chat(question, [], content)) 传统的LLM像一个知识渊博但只能纸上谈兵的图书馆员,而 LLM Agent 则更像一个全能的私人助理,不仅懂得多,还能跑腿办事,甚至能主动思考最优方案。
- alt text + alt text

图7.7 Agent 工作原理

@@ -440,7 +440,7 @@ LLM Agent 通过将大型语言模型的强大语言理解和生成能力与规 最终的实现效果如图7.8所示:
- +

图7.8 效果示意图

@@ -633,7 +633,7 @@ Agent 的工作流程如下: 如图7.9所示,Agent 调用工具流程:
- alt text + alt text

图7.9 Agent 工作流程