docs: 更新文档中的图片链接为绝对路径
将所有文档中的相对图片路径替换为完整的GitHub raw链接,确保图片在文档中能够正确显示
This commit is contained in:
@@ -9,21 +9,21 @@
|
||||
- 前馈神经网络(Feedforward Neural Network,FNN),即每一层的神经元都和上下两层的每一个神经元完全连接,如图2.1所示:
|
||||
|
||||
<div align="center">
|
||||
<img src="../images/2-figures/1-0.png" alt="图片描述" width="90%"/>
|
||||
<img src="https://raw.githubusercontent.com/datawhalechina/happy-llm/main/docs/images/2-figures/1-0.png" alt="图片描述" width="90%"/>
|
||||
<p>图2.1 前馈神经网络</p>
|
||||
</div>
|
||||
|
||||
- 卷积神经网络(Convolutional Neural Network,CNN),即训练参数量远小于前馈神经网络的卷积层来进行特征提取和学习,如图2.2所示:
|
||||
|
||||
<div align="center">
|
||||
<img src="../images/2-figures/1-1.png" alt="图片描述" width="90%"/>
|
||||
<img src="https://raw.githubusercontent.com/datawhalechina/happy-llm/main/docs/images/2-figures/1-1.png" alt="图片描述" width="90%"/>
|
||||
<p>图2.2 卷积神经网络</p>
|
||||
</div>
|
||||
|
||||
- 循环神经网络(Recurrent Neural Network,RNN),能够使用历史信息作为输入、包含环和自重复的网络,如图2.3所示:
|
||||
|
||||
<div align="center">
|
||||
<img src="../images/2-figures/1-2.png" alt="图片描述" width="90%"/>
|
||||
<img src="https://raw.githubusercontent.com/datawhalechina/happy-llm/main/docs/images/2-figures/1-2.png" alt="图片描述" width="90%"/>
|
||||
<p>图2.3 循环神经网络</p>
|
||||
</div>
|
||||
|
||||
@@ -222,7 +222,7 @@ scores = F.softmax(scores.float(), dim=-1).type_as(xq)
|
||||
在原论文中,作者也通过实验证实,多头注意力计算中,每个不同的注意力头能够拟合语句中的不同信息,如图2.4所示:
|
||||
|
||||
<div align="center">
|
||||
<img src="../images/2-figures/1-3.jpeg" alt="图片描述" width="90%"/>
|
||||
<img src="https://raw.githubusercontent.com/datawhalechina/happy-llm/main/docs/images/2-figures/1-3.jpeg" alt="图片描述" width="90%"/>
|
||||
<p>图2.4 多头注意力机制</p>
|
||||
</div>
|
||||
|
||||
@@ -346,7 +346,7 @@ Seq2Seq,即序列到序列,是一种经典 NLP 任务。具体而言,是
|
||||
Transformer 中的 Encoder,就是用于上述的编码过程;Decoder 则用于上述的解码过程。Transformer 结构,如图2.5所示:
|
||||
|
||||
<div align="center">
|
||||
<img src="../images/2-figures/2-0.jpg" alt="图片描述" width="90%"/>
|
||||
<img src="https://raw.githubusercontent.com/datawhalechina/happy-llm/main/docs/images/2-figures/2-0.jpg" alt="图片描述" width="90%"/>
|
||||
<p>图2.5 编码器-解码器结构</p>
|
||||
</div>
|
||||
|
||||
@@ -732,7 +732,7 @@ $$
|
||||
上述编码结果,如图2.6所示:
|
||||
|
||||
<div align="center">
|
||||
<img src="../images/2-figures/3-0.png" alt="图片描述" width="90%"/>
|
||||
<img src="https://raw.githubusercontent.com/datawhalechina/happy-llm/main/docs/images/2-figures/3-0.png" alt="图片描述" width="90%"/>
|
||||
<p>图2.6 编码结果</p>
|
||||
</div>
|
||||
|
||||
@@ -773,7 +773,7 @@ class PositionalEncoding(nn.Module):
|
||||
上述所有组件,再按照下图的 Tranfromer 结构拼接起来就是一个完整的 Transformer 模型了,如图2.7所示:
|
||||
|
||||
<div align="center">
|
||||
<img src="../images/2-figures/3-1.png" alt="图片描述" width="80%"/>
|
||||
<img src="https://raw.githubusercontent.com/datawhalechina/happy-llm/main/docs/images/2-figures/3-1.png" alt="图片描述" width="80%"/>
|
||||
<p>图2.7 Transformer 模型结构</p>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ BERT 是一个统一了多种思想的预训练模型。其所沿承的核心思
|
||||
BERT 的模型架构是取了 Transformer 的 Encoder 部分堆叠而成,其主要结构如图3.1所示:
|
||||
|
||||
<div align="center">
|
||||
<img src="../images/3-figures/1-0.png" alt="图片描述" width="100%"/>
|
||||
<img src="https://raw.githubusercontent.com/datawhalechina/happy-llm/main/docs/images/3-figures/1-0.png" alt="图片描述" width="100%"/>
|
||||
<p>图3.1 BERT 模型结构</p>
|
||||
</div>
|
||||
|
||||
@@ -35,7 +35,7 @@ BERT 是针对于 NLU 任务打造的预训练模型,其输入一般是文本
|
||||
模型整体既是由 Embedding、Encoder 加上 prediction_heads 组成:
|
||||
|
||||
<div align="center">
|
||||
<img src="../images/3-figures/1-1.png" alt="图片描述" width="70%"/>
|
||||
<img src="https://raw.githubusercontent.com/datawhalechina/happy-llm/main/docs/images/3-figures/1-1.png" alt="图片描述" width="70%"/>
|
||||
<p>图3.2 BERT 模型简略结构</p>
|
||||
</div>
|
||||
|
||||
@@ -44,21 +44,21 @@ BERT 是针对于 NLU 任务打造的预训练模型,其输入一般是文本
|
||||
prediction_heads 其实就是线性层加上激活函数,一般而言,最后一个线性层的输出维度和任务的类别数相等,如图3.3所示:
|
||||
|
||||
<div align="center">
|
||||
<img src="../images/3-figures/1-5.png" alt="图片描述" width="20%"/>
|
||||
<img src="https://raw.githubusercontent.com/datawhalechina/happy-llm/main/docs/images/3-figures/1-5.png" alt="图片描述" width="20%"/>
|
||||
<p>图3.3 prediction_heads 结构</p>
|
||||
</div>
|
||||
|
||||
而每一层 Encoder Layer 都是和 Transformer 中的 Encoder Layer 结构类似的层,如图3.4所示:
|
||||
|
||||
<div align="center">
|
||||
<img src="../images/3-figures/1-2.png" alt="图片描述" width="40%"/>
|
||||
<img src="https://raw.githubusercontent.com/datawhalechina/happy-llm/main/docs/images/3-figures/1-2.png" alt="图片描述" width="40%"/>
|
||||
<p>图3.4 Encoder Layer 结构</p>
|
||||
</div>
|
||||
|
||||
如图3.5所示,已经通过 Embedding 层映射的 hidden_states 进入核心的 attention 机制,然后通过残差连接的机制和原输入相加,再经过一层 Intermediate 层得到最终输出。Intermediate 层是 BERT 的特殊称呼,其实就是一个线性层加上激活函数:
|
||||
|
||||
<div align="center">
|
||||
<img src="../images/3-figures/1-3.png" alt="图片描述" width="40%"/>
|
||||
<img src="https://raw.githubusercontent.com/datawhalechina/happy-llm/main/docs/images/3-figures/1-3.png" alt="图片描述" width="40%"/>
|
||||
<p>图3.5 Intermediate 结构</p>
|
||||
</div>
|
||||
|
||||
@@ -71,7 +71,7 @@ GELU 的核心思路为将随机正则的思想引入激活函数,通过输入
|
||||
BERT 的 注意力机制和 Transformer 中 Encoder 的 自注意力机制几乎完全一致,但是 BERT 将相对位置编码融合在了注意力机制中,将相对位置编码同样视为可训练的权重参数,如图3.6所示:
|
||||
|
||||
<div align="center">
|
||||
<img src="../images/3-figures/1-4.png" alt="图片描述" width="40%"/>
|
||||
<img src="https://raw.githubusercontent.com/datawhalechina/happy-llm/main/docs/images/3-figures/1-4.png" alt="图片描述" width="40%"/>
|
||||
<p>图3.6 BERT 注意力机制结构</p>
|
||||
</div>
|
||||
|
||||
@@ -230,14 +230,14 @@ T5 的大一统思想将不同的 NLP 任务如文本分类、问答、翻译等
|
||||
BERT 采用了 Encoder-Only 结构,只包含编码器部分;而 GPT 采用了 Decoder-Only 结构,只包含解码器部分。T5 则采用了 Encoder-Decoder 结构,其中编码器和解码器都是基于 Transformer 架构设计。编码器用于处理输入文本,解码器用于生成输出文本。编码器和解码器之间通过注意力机制进行信息交互,从而实现输入文本到输出文本的转换。其主要结构如图3.7所示:
|
||||
|
||||
<div align="center">
|
||||
<img src="../images/3-figures/2-1.png" alt="图片描述" width="100%"/>
|
||||
<img src="https://raw.githubusercontent.com/datawhalechina/happy-llm/main/docs/images/3-figures/2-1.png" alt="图片描述" width="100%"/>
|
||||
<p>图3.7 T5 模型详细结构</p>
|
||||
</div>
|
||||
|
||||
如图3.8所示,从整体来看 T5 的模型结构包括 Tokenizer 部分和 Transformer 部分。Tokenizer 部分主要负责将输入文本转换为模型可接受的输入格式,包括分词、编码等操作。Transformer 部分又分为 EncoderLayers 和 DecoderLayers 两部分,他们分别由一个个小的 Block组成,每个 Block 包含了多头注意力机制、前馈神经网络和 Norm 层。Block 的设计可以使模型更加灵活,像乐高一样可以根据任务的复杂程度和数据集的大小来调整 Block 的数量和层数。
|
||||
|
||||
<div align="center">
|
||||
<img src="../images/3-figures/2-2.png" alt="图片描述" width="70%"/>
|
||||
<img src="https://raw.githubusercontent.com/datawhalechina/happy-llm/main/docs/images/3-figures/2-2.png" alt="图片描述" width="70%"/>
|
||||
<p>图3.8 T5 模型整体结构</p>
|
||||
</div>
|
||||
|
||||
@@ -246,14 +246,14 @@ T5 模型的 Encoder 和 Decoder 部分都是基于 Transformer 架构设计的
|
||||
和 Encoder 不一样的是,在 Decoder 中还包含了 Encoder-Decoder Attention 结构,用于捕捉输入和输出序列之间的依赖关系。这两种 Attention 结构几乎完全一致,只有在位置编码和 Mask 机制上有所不同。如图3.9所示,Encoder 和 Decoder 的结构如下:
|
||||
|
||||
<div align='center'>
|
||||
<img src="../images/3-figures/2-3.png" alt="alt text" width="50%">
|
||||
<img src="https://raw.githubusercontent.com/datawhalechina/happy-llm/main/docs/images/3-figures/2-3.png" alt="alt text" width="50%">
|
||||
<p>图3.9 Encoder 和 Decoder</p>
|
||||
</div>
|
||||
|
||||
T5 的 Self-Attention 机制和 BERT 的 Attention 机制是一样的,都是基于 Self-Attention 机制设计的。Self-Attention 机制是一种全局依赖关系建模方法,通过计算 Query、Key 和 Value 之间的相似度来捕捉输入序列中的全局依赖关系。Encoder-Decoder Attention 仅仅在位置编码和 Mask 机制上有所不同,主要是为了区分输入和输出序列。如图3.10所示,Self-Attention 结构如下:
|
||||
|
||||
<div align='center'>
|
||||
<img src="../images/3-figures/2-4.png" alt="alt text" width="50%">
|
||||
<img src="https://raw.githubusercontent.com/datawhalechina/happy-llm/main/docs/images/3-figures/2-4.png" alt="alt text" width="50%">
|
||||
</p>图3.10 Self-Attention 结构</p>
|
||||
</div>
|
||||
|
||||
@@ -298,7 +298,7 @@ T5通过大规模的文本数据进行预训练,然后在具体任务上进行
|
||||
我们可以通过图3.11,更加直观地理解 T5 的大一统思想:
|
||||
|
||||
<div align='center'>
|
||||
<img src="../images/3-figures/2-0.png" alt="alt text" width="90%">
|
||||
<img src="https://raw.githubusercontent.com/datawhalechina/happy-llm/main/docs/images/3-figures/2-0.png" alt="alt text" width="90%">
|
||||
<p>图3.11 T5 的大一统思想</p>
|
||||
</div>
|
||||
|
||||
@@ -323,7 +323,7 @@ GPT,即 Generative Pre-Training Language Model,是由 OpenAI 团队于 2018
|
||||
#### (1) 模型架构——Decoder Only
|
||||
|
||||
<div align='center'>
|
||||
<img src="../images/3-figures/3-0.png" alt="alt text" width="100%">
|
||||
<img src="https://raw.githubusercontent.com/datawhalechina/happy-llm/main/docs/images/3-figures/3-0.png" alt="alt text" width="100%">
|
||||
<p>图3.12 GPT 模型结构</p>
|
||||
</div>
|
||||
|
||||
@@ -394,7 +394,7 @@ LLaMA模型是由Meta(前Facebook)开发的一系列大型预训练语言模
|
||||
与GPT系列模型一样,LLaMA模型也是基于Decoder-Only架构的预训练语言模型。LLaMA模型的整体结构与GPT系列模型类似,只是在模型规模和预训练数据集上有所不同。如图3.13是LLaMA模型的架构示意图:
|
||||
|
||||
<div align='center'>
|
||||
<img src="../images/3-figures/3-1.png" alt="alt text" width="100%">
|
||||
<img src="https://raw.githubusercontent.com/datawhalechina/happy-llm/main/docs/images/3-figures/3-1.png" alt="alt text" width="100%">
|
||||
<p>图3.13 LLaMA-3 模型结构</p>
|
||||
</div>
|
||||
|
||||
@@ -460,7 +460,7 @@ GLM 通过优化一个自回归空白填充任务来实现 MLM 与 CLM 思想的
|
||||
通过将 MLM 与 CLM 思想相结合,既适配逐个 token 生成的生成类任务,也迫使模型从前后两个方向学习输入文本的隐含关系从而适配了理解类任务。使用 GLM 预训练任务产出的 GLM 模型,在一定程度上展现了其超出同体量 BERT 系模型的优越性能:
|
||||
|
||||
<div align='center'>
|
||||
<img src="../images/3-figures/3-2.png" alt="alt text" width="90%">
|
||||
<img src="https://raw.githubusercontent.com/datawhalechina/happy-llm/main/docs/images/3-figures/3-2.png" alt="alt text" width="90%">
|
||||
<p>图3.14 alt text</p>
|
||||
</div>
|
||||
|
||||
@@ -479,7 +479,7 @@ ChatGLM3-6B 发布于 23年 10月,相对于二代在语义、数学、推理
|
||||
图3.15展示了 GLM 系列模型在基准集上的表现演进:
|
||||
|
||||
<div align='center'>
|
||||
<img src="../images/3-figures/3-3.png" alt="alt text" width="90%">
|
||||
<img src="https://raw.githubusercontent.com/datawhalechina/happy-llm/main/docs/images/3-figures/3-3.png" alt="alt text" width="90%">
|
||||
<p>图3.15 alt text</p>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -96,7 +96,7 @@ LLM 的强大能力也为其带来了跨模态的强大表现。随着 LLM 的
|
||||
在上一节,我们分析了 LLM 的定义及其特有的强大能力,通过更大规模的参数和海量的训练语料获得远超传统预训练模型的涌现能力,展现出强大的上下文学习、指令遵循及逐步推理能力,带来 NLP 领域的全新变革。那么,通过什么样的步骤,我们才可以训练出一个具有涌现能力的 LLM 呢?训练一个 LLM,与训练传统的预训练模型,又有什么区别?
|
||||
|
||||
<div align='center'>
|
||||
<img src="../images/4-figures/2-0.jpg" alt="alt text" width="90%">
|
||||
<img src="https://raw.githubusercontent.com/datawhalechina/happy-llm/main/docs/images/4-figures/2-0.jpg" alt="alt text" width="90%">
|
||||
<p>图4.1 训练 LLM 的三个阶段</p>
|
||||
</div>
|
||||
|
||||
@@ -128,7 +128,7 @@ GPT-3|96|12288|96|175B|300B
|
||||
也正因如此,分布式训练框架也成为 LLM 训练必不可少的组成部分。分布式训练框架的核心思路是数据并行和模型并行。所谓数据并行,是指训练模型的尺寸可以被单个 GPU 内存容纳,但是由于增大训练的 batch_size 会增大显存开销,无法使用较大的 batch_size 进行训练;同时,训练数据量非常大,使用单张 GPU 训练时长难以接受。
|
||||
|
||||
<div align='center'>
|
||||
<img src="../images/4-figures/2-1.jpg" alt="alt text" width="60%">
|
||||
<img src="https://raw.githubusercontent.com/datawhalechina/happy-llm/main/docs/images/4-figures/2-1.jpg" alt="alt text" width="60%">
|
||||
<p>图4.2 模型、数据并行</p>
|
||||
</div>
|
||||
|
||||
@@ -137,7 +137,7 @@ GPT-3|96|12288|96|175B|300B
|
||||
但是,当 LLM 扩大到上百亿参数,单张 GPU 内存往往就无法存放完整的模型参数。如图4.3所示,在这种情况下,可以将模型拆分到多个 GPU 上,每个 GPU 上存放不同的层或不同的部分,从而实现模型并行。
|
||||
|
||||
<div align='center'>
|
||||
<img src="../images/4-figures/2-2.jpg" alt="alt text" width="30%">
|
||||
<img src="https://raw.githubusercontent.com/datawhalechina/happy-llm/main/docs/images/4-figures/2-2.jpg" alt="alt text" width="30%">
|
||||
<p>图4.3 模型并行</p>
|
||||
</div>
|
||||
|
||||
@@ -297,7 +297,7 @@ RLHF,全称是 Reinforcement Learning from Human Feedback,即人类反馈强
|
||||
如图4.4所示,ChatGPT 在技术报告中将对齐分成三个阶段,后面两个阶段训练 RM 和 PPO 训练,就是 RLHF 的步骤:
|
||||
|
||||
<div align='center'>
|
||||
<img src="../images/4-figures/2-3.png" alt="alt text" width="100%">
|
||||
<img src="https://raw.githubusercontent.com/datawhalechina/happy-llm/main/docs/images/4-figures/2-3.png" alt="alt text" width="100%">
|
||||
<p>图4.4 ChatGPT 训练三个的阶段</p>
|
||||
</div>
|
||||
|
||||
@@ -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 初始化的。
|
||||
|
||||
<div align='center'>
|
||||
<img src="../images/4-figures/2-4.jpg" alt="alt text" width="100%">
|
||||
<img src="https://raw.githubusercontent.com/datawhalechina/happy-llm/main/docs/images/4-figures/2-4.jpg" alt="alt text" width="100%">
|
||||
<p>图4.5 PPO 训练流程</p>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ Meta(原Facebook)于2023年2月发布第一款基于Transformer结构的大
|
||||
LLaMA2 模型结构如下图5.0所示:
|
||||
|
||||
<div align='center'>
|
||||
<img src="../images/5-images/LLama2.png" alt="alt text" width="100%">
|
||||
<img src="https://raw.githubusercontent.com/datawhalechina/happy-llm/main/docs/images/5-images/LLama2.png" alt="alt text" width="100%">
|
||||
<p>图 5.0 LLaMA2结构</p>
|
||||
</div>
|
||||
|
||||
@@ -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` 主要是用来标记哪些位置需要计算损失,哪些位置不需要计算损失。
|
||||
|
||||
<div align='center'>
|
||||
<img src="../images/5-images/pretrain_dataset.png" alt="alt text" width="100%">
|
||||
<img src="https://raw.githubusercontent.com/datawhalechina/happy-llm/main/docs/images/5-images/pretrain_dataset.png" alt="alt text" width="100%">
|
||||
<p>图5.1 预训练损失函数计算</p>
|
||||
</div>
|
||||
|
||||
@@ -1420,7 +1420,7 @@ class SFTDataset(Dataset):
|
||||
在 SFT 阶段,这里使用的是多轮对话数据集,所以就需要区分哪些位置需要计算损失,哪些位置不需要计算损失。在上面的代码中,我使用了一个 `generate_loss_mask` 函数来生成 `loss_mask`。这个函数主要是用来生成 `loss_mask`,其中 `loss_mask` 的生成规则是:当遇到 `|<im_start|>assistant\n` 时,就开始计算损失,直到遇到 `|<im_end|>` 为止。这样就可以保证我们的模型在 SFT 阶段只计算当前轮的对话内容,如图5.2所示。
|
||||
|
||||
<div align='center'>
|
||||
<img src="../images/5-images/sftdataset.png" alt="alt text" width="90%">
|
||||
<img src="https://raw.githubusercontent.com/datawhalechina/happy-llm/main/docs/images/5-images/sftdataset.png" alt="alt text" width="90%">
|
||||
<p>图5.2 SFT 损失函数计算</p>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
Transformers 是由 Hugging Face 开发的 NLP 框架,通过模块化设计实现了对 BERT、GPT、LLaMA、T5、ViT 等上百种主流模型架构的统一支持。通过使用 Transformers,开发者无需重复实现基础网络结构,通过 AutoModel 类即可一键加载任意预训练,图6.1 为 Hugging Face Transformers 课程首页:
|
||||
|
||||
<div align='center'>
|
||||
<img src="../images/6-images/1-1.png" alt="alt text" width="90%">
|
||||
<img src="https://raw.githubusercontent.com/datawhalechina/happy-llm/main/docs/images/6-images/1-1.png" alt="alt text" width="90%">
|
||||
<p>图6.1 Hugging Face Transformers</p>
|
||||
</div>
|
||||
|
||||
@@ -24,7 +24,7 @@ Transformers 是由 Hugging Face 开发的 NLP 框架,通过模块化设计实
|
||||
对 LLM 时代的 NLP 研究者更为重要的是,HuggingFace 基于 Transformers 框架搭建了其庞大的 AI 社区,开放了数亿个预训练模型参数、25万+不同类型数据集,通过 Transformers、Dataset、Evaluate 等多个框架实现对预训练模型、数据集及评估函数的集成,从而帮助开发者可以便捷地使用任一预训练模型,在开源模型及数据集的基础上便捷地实现个人模型的开发与应用。
|
||||
|
||||
<div align='center'>
|
||||
<img src="../images/6-images/1-2.png" alt="alt text" width="90%">
|
||||
<img src="https://raw.githubusercontent.com/datawhalechina/happy-llm/main/docs/images/6-images/1-2.png" alt="alt text" width="90%">
|
||||
<p>图6.2 Hugging Face Transformers 模型社区</p>
|
||||
</div>
|
||||
|
||||
@@ -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)的模型架构为例:
|
||||
|
||||
<div align='center'>
|
||||
<img src="../images/6-images/1-3.png" alt="alt text" width="90%">
|
||||
<img src="https://raw.githubusercontent.com/datawhalechina/happy-llm/main/docs/images/6-images/1-3.png" alt="alt text" width="90%">
|
||||
<p>图6.3 Qwen-2.5-1.5B</p>
|
||||
</div>
|
||||
|
||||
该界面即为 HuggingFace 社区中的 Qwen-2.5-1.5B 模型参数,其中的 `config.json` 文件即是模型的配置信息,包括了模型的架构、隐藏层大小、模型层数等,如图6.4所示:
|
||||
|
||||
<div align='center'>
|
||||
<img src="../images/6-images/1-4.png" alt="alt text" width="90%">
|
||||
<img src="https://raw.githubusercontent.com/datawhalechina/happy-llm/main/docs/images/6-images/1-4.png" alt="alt text" width="90%">
|
||||
<p>图6.4 Qwen-2.5-1.5B config.json 文件</p>
|
||||
</div>
|
||||
|
||||
@@ -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 上的模型名即可:
|
||||
|
||||
<div align='center'>
|
||||
<img src="../images/6-images/1-5.png" alt="alt text" width="90%">
|
||||
<img src="https://raw.githubusercontent.com/datawhalechina/happy-llm/main/docs/images/6-images/1-5.png" alt="alt text" width="90%">
|
||||
<p>图6.5 模型下载标识</p>
|
||||
</div>
|
||||
|
||||
@@ -87,7 +87,7 @@ model = AutoModelForCausalLM.from_config(config,trust_remote_code=True)
|
||||
由于 LLM 一般都是 CausalLM 架构,此处使用了 AutoModelForCausalLM 类进行加载。如果是用于分类任务训练,可使用 AutoModelForSequenceClassification 类来加载。查看该 model,图6.6可以看到其架构和定义的配置文件相同:
|
||||
|
||||
<div align='center'>
|
||||
<img src="../images/6-images/1-6.png" alt="alt text" width="70%">
|
||||
<img src="https://raw.githubusercontent.com/datawhalechina/happy-llm/main/docs/images/6-images/1-6.png" alt="alt text" width="70%">
|
||||
<p>图6.6 模型结构输出结果</p>
|
||||
</div>
|
||||
|
||||
@@ -130,7 +130,7 @@ ds["train"][0]
|
||||
```
|
||||
|
||||
<div align='center'>
|
||||
<img src="../images/6-images/1-7.png" alt="alt text" width="100%">
|
||||
<img src="https://raw.githubusercontent.com/datawhalechina/happy-llm/main/docs/images/6-images/1-7.png" alt="alt text" width="100%">
|
||||
<p>图6.7 数据集展示</p>
|
||||
</div>
|
||||
|
||||
@@ -788,7 +788,7 @@ trainer.save_model()
|
||||
具体而言,其在预训练模型每层中插入用于下游任务的参数,即 Adapter 模块,在微调时冻结模型主体,仅训练特定于任务的参数,如图6.8所示。
|
||||
|
||||
<div align='center'>
|
||||
<img src="../images/6-images/3-1.png" alt="alt text" width="90%">
|
||||
<img src="https://raw.githubusercontent.com/datawhalechina/happy-llm/main/docs/images/6-images/3-1.png" alt="alt text" width="90%">
|
||||
<p>图6.8 Adapt Tuning</p>
|
||||
</div>
|
||||
|
||||
@@ -840,7 +840,7 @@ $$h = W_0 x + \Delta W x = W_0 x + B A x$$
|
||||
训练思路如图6.9所示:
|
||||
|
||||
<div align='center'>
|
||||
<img src="../images/6-images/3-2.jpg" alt="alt text" width="90%">
|
||||
<img src="https://raw.githubusercontent.com/datawhalechina/happy-llm/main/docs/images/6-images/3-2.jpg" alt="alt text" width="90%">
|
||||
<p>图6.9 LoRA</p>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
Open LLM Leaderboard 为由 Hugging Face 提供的开放式榜单,汇集了多个开源大模型的评测结果,帮助用户了解不同模型在各种任务上的表现。该榜单通过多个标准化测试集来评估模型的性能,并通过持续更新的方式反映最新的技术进展,为研究者和开发者提供了高价值的对比参考,如图7.1所示。
|
||||
|
||||
<div align='center'>
|
||||
<img src="../images/7-images/7-1-Open%20LLM%20Leaderboard.png" alt="alt text" width="90%">
|
||||
<img src="https://raw.githubusercontent.com/datawhalechina/happy-llm/main/docs/images/7-images/7-1-Open%20LLM%20Leaderboard.png" alt="alt text" width="90%">
|
||||
<p>图 7.1 Open LLM Leaderboard</p>
|
||||
</div>
|
||||
|
||||
@@ -56,7 +56,7 @@ Open LLM Leaderboard 为由 Hugging Face 提供的开放式榜单,汇集了多
|
||||
由lmsys提供的聊天机器人评测榜单,通过多维度的评估,展示各类大模型在对话任务中的能力。该榜单采用真实用户与模型交互的方式来评测对话质量,重点考察模型的自然语言生成能力、上下文理解能力以及用户满意度,是当前评估聊天机器人性能的重要工具,如图7.2所示。
|
||||
|
||||
<div align='center'>
|
||||
<img src="../images/7-images/7-1-lmsys%20Chatbot%20Arena%20Leaderboard.png" alt="alt text" width="90%">
|
||||
<img src="https://raw.githubusercontent.com/datawhalechina/happy-llm/main/docs/images/7-images/7-1-lmsys%20Chatbot%20Arena%20Leaderboard.png" alt="alt text" width="90%">
|
||||
<p>图7.2 Lmsys Chatbot Arena Leaderboard</p>
|
||||
</div>
|
||||
|
||||
@@ -65,7 +65,7 @@ Open LLM Leaderboard 为由 Hugging Face 提供的开放式榜单,汇集了多
|
||||
OpenCompass 是国内的评测榜单,针对大模型在多种语言和任务上的表现进行评估,提供了中国市场特定应用的参考。该榜单结合了中文语言理解和多语言能力的测试,以适应本地化需求,并特别关注大模型在中文语境下的准确性、鲁棒性和适应性,为国内企业和研究者选择合适的模型提供了重要参考。
|
||||
|
||||
<div align='center'>
|
||||
<img src="../images/7-images/7-1-opencompass.png" alt="alt text" width="90%">
|
||||
<img src="https://raw.githubusercontent.com/datawhalechina/happy-llm/main/docs/images/7-images/7-1-opencompass.png" alt="alt text" width="90%">
|
||||
<p>图7.3 OpenCompass</p>
|
||||
</div>
|
||||
|
||||
@@ -84,7 +84,7 @@ OpenCompass 是国内的评测榜单,针对大模型在多种语言和任务
|
||||
- 医疗榜:基于MedBench评测集,评估大语言模型在医学知识问答、安全伦理理解等方面的表现。由上海人工智能实验室提供。
|
||||
|
||||
<div align='center'>
|
||||
<img src="../images/7-images/7-1-垂直领域榜单.png" alt="alt text" width="90%">
|
||||
<img src="https://raw.githubusercontent.com/datawhalechina/happy-llm/main/docs/images/7-images/7-1-垂直领域榜单.png" alt="alt text" width="90%">
|
||||
<p>图7.4 垂直领域榜单</p>
|
||||
</div>
|
||||
|
||||
@@ -118,7 +118,7 @@ RAG的基本结构有哪些呢?
|
||||
上述也就是 TinyRAG 的所有模块内容,如图7.5所示。
|
||||
|
||||
<div align='center'>
|
||||
<img src="../images/7-images/7-2-tinyrag.png" alt="alt text" width="90%">
|
||||
<img src="https://raw.githubusercontent.com/datawhalechina/happy-llm/main/docs/images/7-images/7-2-tinyrag.png" alt="alt text" width="90%">
|
||||
<p>图7.5 TinyRAG 项目结构</p>
|
||||
</div>
|
||||
|
||||
@@ -131,7 +131,7 @@ RAG的基本结构有哪些呢?
|
||||
如下图7.6所示的流程图,图片出处 ***[Retrieval-Augmented Generation for Large Language Models: A Survey](https://arxiv.org/pdf/2312.10997.pdf)***
|
||||
|
||||
<div align='center'>
|
||||
<img src="../images/7-images/7-2-rag.png" alt="alt text" width="90%">
|
||||
<img src="https://raw.githubusercontent.com/datawhalechina/happy-llm/main/docs/images/7-images/7-2-rag.png" alt="alt text" width="90%">
|
||||
<p>图7.6 RAG 流程图</p>
|
||||
</div>
|
||||
|
||||
@@ -403,7 +403,7 @@ print(chat.chat(question, [], content))
|
||||
传统的LLM像一个知识渊博但只能纸上谈兵的图书馆员,而 LLM Agent 则更像一个全能的私人助理,不仅懂得多,还能跑腿办事,甚至能主动思考最优方案。
|
||||
|
||||
<div align='center'>
|
||||
<img src="../images/7-images/7-3-Agent工作原理.png" alt="alt text" width="90%">
|
||||
<img src="https://raw.githubusercontent.com/datawhalechina/happy-llm/main/docs/images/7-images/7-3-Agent工作原理.png" alt="alt text" width="90%">
|
||||
<p>图7.7 Agent 工作原理</p>
|
||||
</div>
|
||||
|
||||
@@ -440,7 +440,7 @@ LLM Agent 通过将大型语言模型的强大语言理解和生成能力与规
|
||||
最终的实现效果如图7.8所示:
|
||||
|
||||
<div align='center'>
|
||||
<img src="../images/7-images/7-3-tinyagent-example.png" style="width: 100%;">
|
||||
<img src="https://raw.githubusercontent.com/datawhalechina/happy-llm/main/docs/images/7-images/7-3-tinyagent-example.png" style="width: 100%;">
|
||||
<p>图7.8 效果示意图</p>
|
||||
</div>
|
||||
|
||||
@@ -633,7 +633,7 @@ Agent 的工作流程如下:
|
||||
如图7.9所示,Agent 调用工具流程:
|
||||
|
||||
<div align='center'>
|
||||
<img src="../images/7-images/7-3-Tiny_Agent.jpg" alt="alt text" width="80%">
|
||||
<img src="https://raw.githubusercontent.com/datawhalechina/happy-llm/main/docs/images/7-images/7-3-Tiny_Agent.jpg" alt="alt text" width="80%">
|
||||
<p>图7.9 Agent 工作流程</p>
|
||||
</div>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user