Skip to content

Commit

Permalink
Merge branch '1101v1' into shb
Browse files Browse the repository at this point in the history
  • Loading branch information
sheli00 committed Nov 1, 2023
2 parents 529deb1 + 5b7ed5e commit 0b2ad2e
Show file tree
Hide file tree
Showing 143 changed files with 3,371 additions and 234 deletions.
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,13 @@

`category` 请从以下类别中选择

- `RAG`
- 语言模型(`LLM`)
- 提示技术(`Prompt`)
- 微调技术(`Finetune`)
- 评估方法(`Eval`)
- 数据集(`Dataset`)
- 推理方法(`Reasoning`)
- `Token`

[src/zh/posts/${category}](https://github.com/HUSTAI/HUSTAI.github.io/tree/main/src/zh/posts/) 目录下增加一个新的 `md` 文件,参考[配置](https://theme-hope.vuejs.press/zh/config/frontmatter/info.html)来设置 `Frontmatter`
Expand Down
Binary file modified src/.vuepress/public/assets/images/finetune/PEFT_02.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified src/.vuepress/public/assets/images/finetune/PEFT_03.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified src/.vuepress/public/assets/images/finetune/PEFT_04.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified src/.vuepress/public/assets/images/finetune/PEFT_05.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified src/.vuepress/public/assets/images/finetune/PEFT_06.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Binary file modified src/.vuepress/public/assets/images/finetune/PEFT_08.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed src/.vuepress/public/assets/images/llm/gpt_2.png
Binary file not shown.
Binary file removed src/.vuepress/public/assets/images/llm/gpt_3.png
Binary file not shown.
Binary file removed src/.vuepress/public/assets/images/llm/gpt_4.png
Binary file not shown.
Binary file removed src/.vuepress/public/assets/images/llm/gpt_5.png
Binary file not shown.
Binary file removed src/.vuepress/public/assets/images/llm/gpt_6.png
Diff not rendered.
Binary file added src/.vuepress/public/assets/images/llm/lsr_1.png
Binary file added src/.vuepress/public/assets/images/llm/lsr_2.png
Binary file added src/.vuepress/public/assets/images/llm/moe_1.jpg
Binary file added src/.vuepress/public/assets/images/llm/moe_2.png
Binary file added src/.vuepress/public/assets/images/llm/moe_3.png
Binary file added src/.vuepress/public/assets/images/prompt/PS3.png
Binary file added src/.vuepress/public/assets/images/prompt/PS4.png
Binary file added src/.vuepress/public/assets/images/prompt/PS5.png
2 changes: 2 additions & 0 deletions src/.vuepress/sidebar/zh.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,13 @@ export const zhSidebar = sidebar({
icon: "lightbulb",
prefix: "posts/",
children: [
"rag/",
"llm/",
"prompt/",
"finetune/",
"eval/",
"dataset/",
"reasoning/",
"token/"
]
// activeMatch: "^/zh/posts/",
Expand Down
10 changes: 9 additions & 1 deletion src/zh/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,10 @@ tagline: 分享知识-分享快乐
article: false

projects:
- icon: circle-question
name: 检索增强生成RAG
link: /zh/category/rag/

- icon: circle-question
name: 语言模型
link: /zh/category/语言模型/
Expand All @@ -32,7 +36,11 @@ projects:
link: /zh/category/数据集/

- icon: puzzle-piece
name: Token
name: 大模型推理
link: /zh/category/大模型推理/

- icon: puzzle-piece
name: Token、分词
link: /zh/category/token/

footer: 分享知识-分享快乐
Expand Down
2 changes: 2 additions & 0 deletions src/zh/posts/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,11 @@ article: false

本页面包含一些论文分享的分类:

- [RAG](./rag/)
- [语言模型](./llm/)
- [提示技术](./prompt/)
- [微调技术](./finetune/)
- [评估方法](./eval/)
- [数据集](./dataset/)
- [大模型推理](./reasoning/)
- [Token](./token/)
125 changes: 62 additions & 63 deletions src/zh/posts/eval/M3KE.md → src/zh/posts/dataset/M3KE.md
Original file line number Diff line number Diff line change
@@ -1,63 +1,62 @@
---
author: shb
icon: palette
category:
- 评估方法
date: 2023-07-08
tag:
- 语言模型
- 评估
shortTitle: M3KE数据集分享
---


# M3KE评估数据集分享

M3KE数据集是一种针对大语言模型的多层次、多主题的知识评估数据集,旨在衡量中文大型语言模型在零样本和少样本设置中获取知识的能力。

<!-- more -->

::: tip

项目地址:https://github.com/tjunlp-lab/M3KE

项目贡献者/机构:天津大学与华为诺亚方实验室

:::


## 1 数据集数据
M3KE 收集了 20,477 个真人标准化考试题目(包含 4 个候选答案),覆盖 71 个任务,包括小学、初中、高中、大学、研究生入学考试题目,涉及人文、历史、政治、法律、教育、心理学、科学、工程技术、艺术等学科。

![图1.1 M3KE数据集中任务分布](/assets/images/eval/M3KE_1.png "图1.1 M3KE数据集中任务分布" =430x400)

## 2 数据集优势
(1) 契合中国教育体系,覆盖多教育阶段
研究人员模仿中国学生的教育经历,即小学、初中、高中、大学等主要教育阶段,旨在评估中文大模型在不同教育阶段下的表现。由于每个教育阶段需要掌握的知识点不同(例如,在语文学科中,小学和初中的知识或考点存在明显的差异),因此,M3KE 在不同教育阶段会包含相同的学科。为了提高数据集中学科知识点的覆盖范围,研究人员选择了中国升学考试中的统考试题,包括小升初、中考、高考,研究生入学考试和中国公务员考试等真题题目。
(2) 覆盖多学科领域
为提高数据集的学科覆盖率,研究人员基于人文艺术、社会科学和自然科学三大类进行构建,包括:文学、理学,历史、政治、法学、教育学、心理学、科学、工程技术、艺术等学科。为进一步拓展数据集的丰富度,研究人员补充了中医、宗教以及计算机等级考试等任务。

![图2.1 M3KE数据集中任务领域和难度的分布](/assets/images/eval/M3KE_2.png "图2.1 M3KE数据集中任务领域和难度的分布" )



![图2.2 M3KE数据与其他评估数据集对比](/assets/images/eval/M3KE_3.png "图2.2 M3KE数据与其他评估数据集对比")

## 3 评估结果
<!-- ### 3.1 Zero-shot/Few-shot 零样本/少样本评估 -->
在零样本设置条件下,模型要求直接回答问题;在少样本设置条件下,会预先给定模型同任务的若干示例,引导模型进行情景学习(In-Context Learning)。在 M3KE 中,所有题目均使用准确率计算得分。
(1) 不同学科类别下的模型零样本/少样本评估结果

![评估结果](/assets/images/eval/M3KE_4.png "图3.1 四个学科分类下各模型的零样本和少样本平均准确率")

(2) 不同教育阶段下的模型零样本/少样本评估结果

![评估结果](/assets/images/eval/M3KE_5.png "图3.2 五个教育水平下各模型的零样本和少样本平均准确率")

## 4 评估结果分析

(1)在零样本评估中(Table 4&6),所有参数小于 10B 的预训练语言模型(未经过微调)准确率都低于随机结果(25%),少样本的设置(Table 5&7)有助于模型性能的提升。但是,GLM130B 在零样本评估的结果好于少样本评估结果,原因可能是 GLM130B 在预训练阶段已经使用了部分指令数据,使其已经具备较好的零样本学习能力。

(2)大部分经过微调后的中文大模型仅达到随机结果(25%)水平,即使在小学阶段的测试中(Table 6&7)。这说明较低教育阶段中的知识仍然是当前中文大模型的短板之一。

(3)在零样本评估中,BELLE-7B-2M 取得了中文大模型中最好的成绩,但仍然与 GPT-3.5-turbo 有 14.8% 的差距。此外,有监督微调指令的数量也是一个重要的因素,经过两百万指令微调的 BELLE-7B-2M 好于经过二十万指令微调的 BELLE-7B-0.2M(Table 4)。
---
author: shb
icon: palette
category:
- 评估方法
tag:
- 语言模型
- 评估
shortTitle: M3KE数据集分享
---


# M3KE评估数据集分享

M3KE数据集是一种针对大语言模型的多层次、多主题的知识评估数据集,旨在衡量中文大型语言模型在零样本和少样本设置中获取知识的能力。

<!-- more -->

::: tip

项目地址:https://github.com/tjunlp-lab/M3KE

项目贡献者/机构:天津大学与华为诺亚方实验室

:::


## 1 数据集数据
M3KE 收集了 20,477 个真人标准化考试题目(包含 4 个候选答案),覆盖 71 个任务,包括小学、初中、高中、大学、研究生入学考试题目,涉及人文、历史、政治、法律、教育、心理学、科学、工程技术、艺术等学科。

![图1.1 M3KE数据集中任务分布](/assets/images/eval/M3KE_1.png "图1.1 M3KE数据集中任务分布" =430x400)

## 2 数据集优势
(1) 契合中国教育体系,覆盖多教育阶段
研究人员模仿中国学生的教育经历,即小学、初中、高中、大学等主要教育阶段,旨在评估中文大模型在不同教育阶段下的表现。由于每个教育阶段需要掌握的知识点不同(例如,在语文学科中,小学和初中的知识或考点存在明显的差异),因此,M3KE 在不同教育阶段会包含相同的学科。为了提高数据集中学科知识点的覆盖范围,研究人员选择了中国升学考试中的统考试题,包括小升初、中考、高考,研究生入学考试和中国公务员考试等真题题目。
(2) 覆盖多学科领域
为提高数据集的学科覆盖率,研究人员基于人文艺术、社会科学和自然科学三大类进行构建,包括:文学、理学,历史、政治、法学、教育学、心理学、科学、工程技术、艺术等学科。为进一步拓展数据集的丰富度,研究人员补充了中医、宗教以及计算机等级考试等任务。

![图2.1 M3KE数据集中任务领域和难度的分布](/assets/images/eval/M3KE_2.png "图2.1 M3KE数据集中任务领域和难度的分布" )



![图2.2 M3KE数据与其他评估数据集对比](/assets/images/eval/M3KE_3.png "图2.2 M3KE数据与其他评估数据集对比")

## 3 评估结果
<!-- ### 3.1 Zero-shot/Few-shot 零样本/少样本评估 -->
在零样本设置条件下,模型要求直接回答问题;在少样本设置条件下,会预先给定模型同任务的若干示例,引导模型进行情景学习(In-Context Learning)。在 M3KE 中,所有题目均使用准确率计算得分。
(1) 不同学科类别下的模型零样本/少样本评估结果

![评估结果](/assets/images/eval/M3KE_4.png "图3.1 四个学科分类下各模型的零样本和少样本平均准确率")

(2) 不同教育阶段下的模型零样本/少样本评估结果

![评估结果](/assets/images/eval/M3KE_5.png "图3.2 五个教育水平下各模型的零样本和少样本平均准确率")

## 4 评估结果分析

(1)在零样本评估中(Table 4&6),所有参数小于 10B 的预训练语言模型(未经过微调)准确率都低于随机结果(25%),少样本的设置(Table 5&7)有助于模型性能的提升。但是,GLM130B 在零样本评估的结果好于少样本评估结果,原因可能是 GLM130B 在预训练阶段已经使用了部分指令数据,使其已经具备较好的零样本学习能力。

(2)大部分经过微调后的中文大模型仅达到随机结果(25%)水平,即使在小学阶段的测试中(Table 6&7)。这说明较低教育阶段中的知识仍然是当前中文大模型的短板之一。

(3)在零样本评估中,BELLE-7B-2M 取得了中文大模型中最好的成绩,但仍然与 GPT-3.5-turbo 有 14.8% 的差距。此外,有监督微调指令的数量也是一个重要的因素,经过两百万指令微调的 BELLE-7B-2M 好于经过二十万指令微调的 BELLE-7B-0.2M(Table 4)。
2 changes: 1 addition & 1 deletion src/zh/posts/dataset/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,5 @@ category:
tag:
- Dataset
dir:
order: 5
order: 6
---
2 changes: 1 addition & 1 deletion src/zh/posts/eval/ceval.md → src/zh/posts/eval/CEval.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ tag:
# sticky: 10
---

# C-EVAL
# C-EVAL:中文大模型评估榜单

C-Eval是一个针对基础模型的综合中文评估套件。它由 13948 道多项选择题组成,涵盖 52 个不同学科和四个难度级别,如下所示。请访问我们的网站或查看我们的论文以了解更多详细信息。

Expand Down
2 changes: 1 addition & 1 deletion src/zh/posts/eval/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,5 @@ category:
tag:
- Eval
dir:
order: 4
order: 5
---
26 changes: 12 additions & 14 deletions src/zh/posts/finetune/PEFT.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ LoRA,英文全称Low-Rank Adaptation of Large Language Models,直译为大

LoRA的做法是,冻结预训练好的模型权重参数,然后在每个Transformer块里注入可训练的层,由于不需要对模型的权重参数重新计算梯度,所以,大大减少了需要训练的计算量。

![](/assets/images/finetune/PEFT_01.png)
![图2.1 LoRA原理示意图](/assets/images/finetune/PEFT_01.png "图2.1 LoRA原理示意图" =386x350)

结合上图,可以直观地理解LoRA的实现原理。LoRA冻结预训练模型权重,并将可训练的秩分解矩阵注入到Transformer层的每个权重中,大大减少了下游任务的可训练参数数量。直白的来说,实际上是增加了右侧的“旁支”,也就是先用一个Linear层A,将数据从 d维降到r,再用第二个Linear层B,将数据从r变回d维。最后再将左右两部分的结果相加融合,得到输出的hidden_state。

Expand Down Expand Up @@ -104,7 +104,7 @@ AdaLoRA,即自适应预算分配以实现参数有效的微调,是微软与
**关键的增量矩阵被分配了高秩**,这样它们可以捕获更细粒度和特定于任务的信息。
**不太重要的增量矩阵被修剪为具有较低的秩**,以防止过度拟合并节省计算预算。

![](/assets/images/finetune/PEFT_04.png)
![图2.2 AdaLoRA原理示意图](/assets/images/finetune/PEFT_02.png "图2.2 AdaLoRA原理示意图")

AdaLoRA包含两个重要组成部分:

Expand Down Expand Up @@ -137,7 +137,7 @@ AdaLoRA根据重要性评分自适应地分配参数预算,通过**对权重
**具有低重要性分数的三元组被授予低优先级**,因此奇异值被清零。
**具有高度重要性的三元组会被保留**,并进行微调。

![](/assets/images/finetune/PEFT_05.png)
![图2.3 AdaLoRA伪代码示意图](/assets/images/finetune/PEFT_03.png "图2.3 AdaLoRA伪代码示意图")

### 2.3 prompt分类

Expand All @@ -161,7 +161,7 @@ Prefix-Tuning与Full-finetuning更新所有参数的方式不同,该方法是

Prefix-Tuning将一系列**连续的task-specific向量**添加到input前面,称之为前缀,如下图中的红色块所示。

![](/assets/images/finetune/PEFT_06.png)
![图2.4 Prefix-Tuning原理示意图](/assets/images/finetune/PEFT_04.png "图2.4 Prefix-Tuning原理示意图")

Prefix-Tuning的作者提出了Prefix Tuning,该方法冻结LM参数,并且只优化Prefix(红色前缀块)。因此,只需要为每个任务存储前缀,使前缀调优模块化并节省空间。

Expand All @@ -177,7 +177,7 @@ Prefix-Tuning的作者提出了Prefix Tuning,该方法冻结LM参数,并且

Prefix-tuning是做生成任务,它根据不同的模型结构定义了不同的Prompt拼接方式,在GPT类的自回归模型上采用`[PREFIX, x, y]`,在T5类的encoder-decoder模型上采用`[PREFIX, x, PREFIX', y]`

![](/assets/images/finetune/PEFT_07.png)
![图2.5 Prefix-Tuning用于生成任务的示例](/assets/images/finetune/PEFT_05.png "图2.5 Prefix-Tuning用于生成任务的示例")

值得注意的还有三个改动:

Expand All @@ -193,35 +193,33 @@ Prompt-tuning 固定预训练参数,为每一个任务(a1、a2、b1、b2)

之后拼接 query 正常输入 LLM ,并**只训练这些 embedding** 。左图为单任务全参数微调,右图为 prompt tuning 。

![](/assets/images/finetune/PEFT_08.png)
![图2.6 Prompt Tuning原理示意图](/assets/images/finetune/PEFT_06.png "图2.6 Prompt Tuning原理示意图")

Prompt-tuning给每个任务定义了自己的**Prompt,拼接到数据上作为输入**,同时freeze预训练模型进行训练,**在没有加额外层的情况下**,可以看到随着模型体积增大效果越来越好,最终追上了精调的效果:

![](https://pic4.zhimg.com/80/v2-105188e34a31c728a473011260f266e7_720w.webp)
![图2.7 Prompt Tuning模型参数对SuperGLUE分数的影响示意图](/assets/images/finetune/PEFT_07.webp "图2.7 Prompt Tuning模型参数对SuperGLUE分数的影响示意图")

同时,Prompt-tuning还提出了Prompt-ensembling,也就是在一个batch里同时训练同一个任务的不同prompt,这样相当于训练了不同「模型」,比模型集成的成本小多了。

### 2.6 P-Tuning

Prompting最初由人工设计Prompt,自然语言提示本身十分脆弱(如下图所示,选择不同的Prompt对下游任务的性能影响较大),而且从优化角度无法达到最优。

为消除这一影响,P Tuning技术应用而生:P-Tuning v1将自然语言提示的**token,替换为可训练的嵌入**,同时利用LSTM进行Reparamerization加速训练,并引入少量自然语言提示的锚字符(Anchor,例如Britain)进一步提升效果,如下图b所示:
为消除这一影响,P Tuning技术应用而生:P-Tuning v1将自然语言提示的**token,替换为可训练的嵌入**,同时利用LSTM进行Reparamerization加速训练,并引入少量自然语言提示的锚字符(Anchor,例如Britain)进一步提升效果,如图2.8所示。

![](/assets/images/finetune/PEFT_09.png)
![图2.8 P-Tuning原理示意图](/assets/images/finetune/PEFT_08.png "图2.8 P-Tuning原理示意图")

P-Tuning v1,对于BERT类双向语言模型采用模版`(P1, x, P2, [MASK], P3)`,对于单向语言模型采用`(P1, x, P2, [MASK])`

P-Tuning v2提升小模型上的Prompt Tuning,最关键的就是引入**Prefix-tuning**技术。

![](https://pic1.zhimg.com/80/v2-13f2923394517b2eae7b673ef56b38ec_720w.webp)
![图2.9 P-Tuning v2引入的Prefix-tuning原理示意图](/assets/images/finetune/PEFT_09.webp "图2.9 P-Tuning v2引入的Prefix-tuning原理示意图")

Prefix-tuning(前缀微调)最开始应用在NLG任务上,由[Prefix, x, y]三部分构成,如上图所示:Prefix为前缀,x为输入,y为输出。Prefix-tuning将预训练参数固定,Prefix参数进行微调:不仅只在embedding上进行微调,也在TransFormer上的embedding输入每一层进行微调。

P-Tuning v2将Prefix-tuning应用于在NLU任务,如下图所示:

![](/assets/images/finetune/PEFT_10.png)

![](/assets/images/finetune/PEFT_11.png)
![图2.10 P-Tuning v2用于NLU任务的示意图](/assets/images/finetune/PEFT_11.png "图2.10 P-Tuning v2用于NLU任务的示意图")

p tuning v2简单来说其实是soft prompt的一种改进。

Expand Down Expand Up @@ -254,7 +252,7 @@ soft prompt比较依靠模型参数量,在参数量超过10B的模型上,效

## 3 实验结果

![](/assets/images/finetune/PEFT_12.png)
![图2.11 使用不同PEFT方法与全参数微调的结果对比图](/assets/images/finetune/PEFT_12.png "图2.11 使用不同PEFT方法与全参数微调的结果对比图")

根据[结果](https://zhuanlan.zhihu.com/p/623866920)可以看出,在只训练1个epoch的情况下,只有LoRA与AdaLoRA的效果接近全参数微调,并且LoRA与全参数微调的差距不超过0.1%

Expand Down
Loading

0 comments on commit 0b2ad2e

Please sign in to comment.