diff --git a/Image/chapter7/figure7.1.png b/Image/chapter7/figure7.1.png new file mode 100644 index 0000000..9774ef3 Binary files /dev/null and b/Image/chapter7/figure7.1.png differ diff --git a/Image/chapter7/figure7.2.png b/Image/chapter7/figure7.2.png new file mode 100644 index 0000000..24b781d Binary files /dev/null and b/Image/chapter7/figure7.2.png differ diff --git a/Image/chapter7/figure7.3.png b/Image/chapter7/figure7.3.png new file mode 100644 index 0000000..cce4e52 Binary files /dev/null and b/Image/chapter7/figure7.3.png differ diff --git a/Image/image6.18.png b/Image/image6.18.png deleted file mode 100644 index 0e6ac3d..0000000 Binary files a/Image/image6.18.png and /dev/null differ diff --git a/Image/image7.3.png b/Image/image7.3.png new file mode 100644 index 0000000..a45bc60 Binary files /dev/null and b/Image/image7.3.png differ diff --git a/cn-Book/5.在无标记数据集上进行预训练.md b/cn-Book/5.在无标记数据集上进行预训练.md index 10834f2..b1e9d95 100644 --- a/cn-Book/5.在无标记数据集上进行预训练.md +++ b/cn-Book/5.在无标记数据集上进行预训练.md @@ -276,13 +276,13 @@ tensor([ -9.5042, -10.3796, -11.3677, -11.4798, -9.7764, -12.2561]) > > 假设我们有三个概率值,分别为0.2、0.1和0.05。如果我们计算这些值的乘积,结果是: > -> $$ 0.2×0.1×0.05=0.001 $$ +> $$0.2×0.1×0.05=0.001$$ > > 这个值非常小,尤其在深度学习或概率模型中,我们通常会有成千上万个概率需要相乘,这样会导致最终的乘积接近0甚至为0,造成数值计算的不稳定性。 > > 如果我们对这些概率值取对数,然后相加,而不是直接相乘,我们可以避免这个问题。例如,对这三个值取自然对数(logarithm)后再相加: > -> $$ ln(0.2)+ln(0.1)+ln(0.05)≈−1.6094+(−2.3026)+(−2.9957)=−6.9077 $$ +> $$ln(0.2)+ln(0.1)+ln(0.05)≈−1.6094+(−2.3026)+(−2.9957)=−6.9077$$ > > 虽然这个和也是负数,但它不会像直接相乘的结果那样接近于0,避免了数值下溢的问题。**对数的累加性质**允许我们将原本的累乘操作转换为累加,使得计算更加稳定和高效。 > diff --git a/cn-Book/7.指令遵循微调.md b/cn-Book/7.指令遵循微调.md new file mode 100644 index 0000000..218a3dc --- /dev/null +++ b/cn-Book/7.指令遵循微调.md @@ -0,0 +1,40 @@ +本章涵盖以下内容: + ++ LLM 指令微调过程概述 ++ 为监督式指令微调准备数据集 ++ 批量组织指令数据 ++ 评估 LLM 通过指令遵循生成的内容质量 ++ 评估一个经过指令微调的 LLM + + + + + +在之前的章节中,我们实现了 LLM 架构,完成了预训练,并将外部的预训练权重导入模型。然后,在上一章中,我们专注于对 LLM 进行特定分类任务的微调,即区分出正常短信和垃圾短信短信。在本章中,我们将介绍如何微调 LLM 以遵循人类指令(见图 7.1),这是开发用于聊天机器人、个人助理和其他对话任务的 LLM 的主要技术之一。 + + + +图 7.1 展示了微调大型语言模型的两种主要方式:用于分类任务的微调(步骤 8)和用于指令遵循的微调(步骤 9)。上一章中我们已实现了步骤 8,本章将重点讲解如何使用指令数据集微调 LLM,具体过程将在下一节进一步说明。 + + + +## 7.1 指令遵循微调简介 + +在第 5 章中,我们看到,对 LLM 的预训练是一种逐词生成的学习过程。预训练后,LLM 具备根据输入片段补全文本的能力,可以完成句子或生成段落。 + +然而,预训练的 LLM 在处理特定指令时往往表现不佳,例如,“修正该文本的语法”或“将该文本转换为被动语态”。我们将在第 7.5 节中详细讨论一个具体示例,演示如何加载预训练模型并基于其进行指令微调。 + +本章将专注于提升 LLM 遵循指令并生成理想回答的能力,如图 7.2 所示。 + + + +在本章的剩余部分,我们将逐步实现指令微调过程,首先从数据集准备开始,如图 7.3 所示。 + + + +数据集准备是指令微调中的关键环节,本章的大部分内容都将围绕这一过程展开。下一节将开始实现下载和格式化数据集的代码,如图 7.3 所示,这是数据集准备过程的第一步。 + + + + +