模型微调知识


Freeze 冻结

对原始模型的大部分参数进行冻结,仅训练少部分参数

Prefix-Tuning 前缀微调

轻量级的参数高效微调(PEFT, Parameter Efficient Fine-Tuning)方法,主要用于大规模预训练语言模型(PLM)的任务适配,尤其适用于 GPT、ChatGLM、T5 等自回归生成模型。

相比于全参数微调(Fine-Tuning),Prefix-Tuning 只优化少量的前缀参数,而保持预训练模型的权重不变,从而大幅减少计算成本和存储需求,适用于算力受限的场景,如 智能客服、对话系统、低资源 NLP 任务等。

Prompt-Tuning 提示词优化

优化输入的提示文本,来更好的执行任务,但不适合复杂场景

Fine-tuning 微调(全量微调)

传统的微调范式Fine-tuning会利用预训练模型去对不同的下游任务进行微调,对每个任务都要保存一份微调后的模型权重。比如下图展示的三个不同任务的Transformer模型,分别用来做翻译、摘要和将格式转化(table-to-text)。每个任务都有自己的微调模型,这意味着模型的所有权重都在微调过程中针对特定任务进行了更新。这种方法通常需要大量的数据和计算资源,因为整个模型都在学习任务特定的知识。

P-Tuning v1 虚拟提示

是 Prompt-Tuning 的一种具体实现,它通过优化可学习的虚拟提示(嵌入向量)来引导模型,避免了传统方法中需要手工设计提示的步骤,提升了效率与灵活性。

P-Tuning v2

因为P-Tuning v1只在模型的第一层加入提示,而V2则是在每一层都加入这样一个提示

LoRA

LoRA 主要用于大规模语言模型的微调,尤其适合资源受限的场景,LoRA通过引入一个低秩矩阵来对模型的权重矩阵进行调整,而不直接对模型的全部权重进行训练。

QLoRA

QLoRA 是 LoRA 的一种扩展,结合了量化(Quantization)技术,进一步优化了 LoRA 在资源有限条件下的表现。QLoRA 通过对低秩矩阵进行量化,进一步降低了内存和计算开销。

向量数据库

机器学习中信息特征被保存为向量,向量数据库可以高效检索相似度

常见微调框架

Unsloth 大语言模型微调,量化
Hugging Face
Deepspeed
llama-factory 语言模型和视觉语言模型微调

微调数值参考
损失 (loss) :越小越好(尤其是初始值),期望接近 1.0 以下,但并非越低越好,太低容易过拟合,太高例如大于5,则要检查是否学习进去

梯度范数 (grad_norm) 应该在合理范围内,避免过大或过小,在良好的训练过程中,grad_norm 通常会在一个稳定的范围内波动,通常 0.1 到 1.0 是一个合理范围。

学习率 (learning_rate) 在合理范围内,通常 1e-5 到 1e-3 之间,当前的学习率 0.0004 是一个常见的合适值。

epoc 代表训练进度,通常需要经过多个 epoch 来确保模型学习到足够的知识,微调 通常2-5轮