Fine-tunning

1 hard || soft fine-tuneing

hard:Hard Prompt通常指的是一种明确的、固定的提示方式,通常以文本的形式直接输入给模型。
soft:向模型中添加参数,控制向量(例如之前的扩散中的embedding层)等方式实现的。<Soft Prompt通过调整模型的内部参数(即Prompt向量)来引导生成过程,而不是直接给出文本提示。这使得生成过程更加灵活和可学习。>

2 prompt-tuning (soft)

多任务 soft

Pasted image 20240229164806.png
多子任务

3 p-tuning

Pasted image 20240229164701.png

Pasted image 20240229164936.png|500

离散化
相比prefix-tuning,这里加了可微的virtual token,但是仅限于输入,没有在每层加;
另外virtual token的位置也不一定是前缀,插入的位置是可选的。
用一个LSTM+MLP去编码这些virtual token以后,再输入到模型

4 prefix-tuning

Pasted image 20250926232200.png
前缀调整的想法是向每个变换器块添加可训练的 MLP,而不是像在软提示调整中那样仅向输入嵌入添加。上图说明了常规转换器块和使用前缀修改的转换器块之间的区别。

伪代码如图所示。
Pasted image 20250926232245.png

Pasted image 20240229162858.png|500

Pasted image 20240229163515.png

Pasted image 20240229163410.png

前缀微调的特点:

4.1 嵌入之后,attention 的计算不受影响

Q: (b, n, d)
K:(b, n 1, d)
V:(b, n 1, d)
QKV:(b, n, n 1) * (b, n 1, d) = (b, n, d)

4.2 核心代码实现

Pasted image 20240229163903.png
来自于
Pasted image 20240229163934.png
*2 就是因为他要在 K、V 中实现两个嵌入。

4.3 问题

  1. 为什么不代替 Q, 只代替 K、V

答:Q 的 n 是 1,每一次只输入一个字符,同时 k、v 更新,这样输出的也是一个字符,完成自回归。

  1. 这里的 past_key_value 指的是什么
    答:指的是嵌入的一种方式,和 decoder 的加速解码不是一回事。

  2. 是否是因为 attention_mask 导致 k、v 可以进行存储

答:不是,attention_mask 没有也不会影响之前 k、V 的存储,但是会影响 decode 的过程,所以还是需要 attention_mask,来保证 look-ahead attention.

4.4 效果关注点

可以降低参数
根据论文实验结果,对于**任务比较有效
不添加额外的模型层,但是 prefix_encoder 可能会带来推理延迟

4.5 参考资料

【手把手带你实战HuggingFace Transformers-高效微调篇】Prefix-Tuning 原理与实战 - YouTube
Continuous Optimization:从Prefix-tuning到更强大的P-Tuning V2 - 知乎
Transformers 官方 bloom 库(past_key_value)
Pasted image 20240229164532.png

5 Lora tunning

基本思想:大模型的参数量是冗余的,支持矩阵分解
Code LoRA from Scratch - a Lightning Studio by sebastian
矩阵分解论文分享20240613_哔哩哔哩_bilibili