二、微方法全面解

2.4 Adapter Tuning(适配器微调)

原理

2LoRA低秩适配技术原理

Adapter Tuning 由 Google Research 提出,在 Transformer 层的 Feed-Forward 网络上并联小型适配器模块。适配器通常由两个线性层组成:先将特征映射到低维空间(down-project),再映射回高维空间(up-project)。

┌─────────────────────────────────────────────────────────────┐
│                   
模型微调核心原理                           │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  
预训练阶段                                                 │
│   ┌─────────────┐                                           │
│   │ 
海量通用数据 │ → 通用语言能力 + 广泛知识                    │
│   │ (Web, Books) │                                           │
│   └─────────────┘                                           │
│          ↓                                                   │
│  
微调阶段                                                   │
│   ┌─────────────┐                                           │
│   │ 
领域/业务数据│ → 领域专业能力 + 业务适配                    │
│   │ (Domain Data) │                                          │
│   └─────────────┘                                           │
│          ↓                                                   │
│   ┌─────────────┐                                           │
│   │ 
微调后模型  │ → 通用能力 + 领域专业能力                     │
│   └─────────────┘                                           │
│                                                             │
└─────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────┐

│                    Adapter 结构                              │

├─────────────────────────────────────────────────────────────┤

│                                                             │

│  Input  ──→  ┌─────────┐                                   │

│              │  Down    │  (d → r)                          │

│              │  Project │                                   │

│              └────┬─────┘                                   │

│                   ↓                                         │

│              ┌─────────┐                                   │

│              │  Non-    │                                   │

│              │  Linear  │                                   │

│              └────┬─────┘                                   │

│                   ↓                                         │

│              ┌─────────┐                                   │

│              │   Up    │  (r → d)                          │

│              │  Project │                                   │

│              └────┬─────┘                                   │

│                   ↓                                         │

│              └────┼─────┘                                   │

│                   ↓                                         │

│              Output ──→ (残差连接)                          │

│                                                             │

└─────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────┐
│                   
模型微调核心原理                           │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  
预训练阶段                                                 │
│   ┌─────────────┐                                           │
│   │ 
海量通用数据 │ → 通用语言能力 + 广泛知识                    │
│   │ (Web, Books) │                                           │
│   └─────────────┘                                           │
│          ↓                                                   │
│  
微调阶段                                                   │
│   ┌─────────────┐                                           │
│   │ 
领域/业务数据│ → 领域专业能力 + 业务适配                    │
│   │ (Domain Data) │                                          │
│   └─────────────┘                                           │
│          ↓                                                   │
│   ┌─────────────┐                                           │
│   │ 
微调后模型  │ → 通用能力 + 领域专业能力                     │
│   └─────────────┘                                           │
│                                                             │
└─────────────────────────────────────────────────────────────┘

Adapter 与 LoRA 的区别

2LoRA低秩适配技术原理

问题类型

具体表现

---------

---------

**领域知识不足**

在医疗、法律、金融等专业领域,可能给出不够准确甚至错误的答案

**企业认知缺失**

不了解特定企业的产品、服务、内部流程

**输出格式不稳定**

难以严格遵循业务要求的输出格式(如 JSON、XML)

**幻觉问题**

对不确定的问题可能编造看似合理但实际错误的答案

**推理成本高**

通用模型参数量巨大,部署和推理成本高昂

维度

提示工程

RAG

微调

------

---------

-----

------

**实现难度**

**成本**

**训练时间**

数小时到数天

**知识更新**

实时

实时

需重新训练

**任务适配**

通用任务

知识问答

复杂推理/格式

**依赖数据量**

少量示例

文档库

百条到数千条

**控制力**

**适用场景**

通用对话、格式控制

知识库问答

领域适应、行为模式

参数

说明

常用值

------

------

--------

`r`

低秩分解的秩,决定可训练参数量

4, 8, 16, 32

`lora_alpha`

缩放因子,通常设为 r 的 2 倍

8, 16, 32, 64

`lora_dropout`

LoRA 层的 dropout 概率

0.0, 0.1

`target_modules`

应用 LoRA 的模块

q_proj, v_proj, k_proj, o_proj

维度

LoRA

QLoRA

------

------

-------

**模型精度**

保持 FP16/BF16

量化到 INT4/INT8

**显存占用**

7B: ~10GB

7B: ~5GB

**推理速度**

正常

略慢(需反量化)

**微调效果**

接近全量微调

略低于 LoRA

**硬件要求**

RTX 3090+

RTX 2080+

维度

Adapter

LoRA

------

---------

------

**结构**

并联在 FFN 层

低秩分解替代

**位置**

需指定插入位置

任意位置

**参数量**

~3-5%

~0.1-1%

**推理延迟**

略高(串行计算)

无(可合并)

**多任务**

多适配器切换

多 LoRA 动态加载

维度

Prefix Tuning

Prompt Tuning

------

---------------

---------------

**提示位置**

每层

仅输入层

**参数量**

较大(k × layers)

较小(k)

**效果**

更好

略逊

**适用场景**

复杂任务

简单任务

方法

可训练参数

GPU 显存

推理延迟

效果

实现复杂度

------

-----------

---------

---------

------

-----------

Full FT

100%

≥24GB

最优

LoRA

0.1-1%

≥10GB

接近全量

QLoRA

0.1-1%

≥6GB

略高

良好

Adapter

1-5%

≥12GB

略高

良好

Prefix

0.1-3%

≥10GB

中等

P-tuning v2

0.1-3%

≥10GB

良好

数据集

说明

适用场景

--------

------

---------

**Alpaca**

Stanford Alpaca 团队生成

通用指令微调

**ShareGPT**

用户对话数据

对话系统

**FLAN**

谷歌指令数据集集合

指令遵循

** Dolly**

Databricks 员工生成

领域适应

**OpenAssistant**

开源对话数据

对话系统

检查项

方法

处理方式

--------

------

---------

**重复数据**

哈希比对、相似度计算

去重

**噪声数据**

关键词过滤、长度分布分析

过滤

**格式错误**

JSON 解析、schema 验证

修正或过滤

**隐私信息**

正则匹配、NER 检测

脱敏或过滤

**标注一致性**

多人标注、交叉验证

重新标注

类型

说明

------

------

ROUGE-N

N-gram 召回率(ROUGE-1, ROUGE-2)

ROUGE-L

最长公共子序列

ROUGE-S

Skip-gram 召回率

维度

评估标准

------

---------

**相关性**

回答是否切题

**准确性**

信息是否正确无误

**完整性**

是否完整回答问题

**专业性**

术语使用是否恰当

**流畅性**

表达是否通顺

方案

特点

适用场景

------

------

---------

**vLLM**

PagedAttention,吞吐量高

高并发推理

**TGI**

HuggingFace 官方,支持推理优化

通用部署

**Text Generation Inference**

Rust 实现,高效

生产环境

**Ollama**

本地部署,简单易用

本地开发

**llama.cpp**

纯 C/C++,CPU 友好

边缘部署

问题

原因

解决方案

------

------

---------

过拟合

数据量太少或训练轮次过多

增加数据、使用正则、增加 dropout

灾难性遗忘

全量微调破坏预训练知识

使用 LoRA/QLoRA 或保留预训练数据

分布偏移

微调数据与预训练数据差异大

混合预训练数据一起训练

质量不稳定

数据标注不一致

重新标注、数据清洗

问题

原因

解决方案

------

------

---------

OOM(显存溢出)

batch size 过大或序列太长

减小 batch size、启用 gradient checkpointing、使用 QLoRA

Loss 不下降

学习率不合适或模型问题

调整学习率、检查数据格式

Loss 爆炸

学习率过高或梯度问题

减小学习率、启用梯度裁剪

NaN 损失

数值不稳定

使用混合精度训练、检查数据

问题

原因

解决方案

------

------

---------

重复生成

解码策略问题

调整 temperature、启用 repetition_penalty

生成截断

最大长度限制

增加 max_new_tokens

回答格式错误

Prompt 不够清晰

优化 Prompt,添加示例

推理速度慢

模型过大或硬件不足

量化、使用更小模型

趋势

说明

------

------

**更高效的方法**

如 LoRA+、DoRA 等新方法不断涌现

**多模态微调**

图像、语音、文本联合微调

**增量微调**

高效利用新数据,不遗忘旧知识

**自动化微调**

AutoML + 微调,自动搜索最佳配置

**端侧微调**

在手机、IoT 设备上进行微调

问题类型

具体表现

---------

---------

**领域知识不足**

在医疗、法律、金融等专业领域,可能给出不够准确甚至错误的答案

**企业认知缺失**

不了解特定企业的产品、服务、内部流程

**输出格式不稳定**

难以严格遵循业务要求的输出格式(如 JSON、XML)

**幻觉问题**

对不确定的问题可能编造看似合理但实际错误的答案

**推理成本高**

通用模型参数量巨大,部署和推理成本高昂

维度

提示工程

RAG

微调

------

---------

-----

------

**实现难度**

**成本**

**训练时间**

数小时到数天

**知识更新**

实时

实时

需重新训练

**任务适配**

通用任务

知识问答

复杂推理/格式

**依赖数据量**

少量示例

文档库

百条到数千条

**控制力**

**适用场景**

通用对话、格式控制

知识库问答

领域适应、行为模式

参数

说明

常用值

------

------

--------

`r`

低秩分解的秩,决定可训练参数量

4, 8, 16, 32

`lora_alpha`

缩放因子,通常设为 r 的 2 倍

8, 16, 32, 64

`lora_dropout`

LoRA 层的 dropout 概率

0.0, 0.1

`target_modules`

应用 LoRA 的模块

q_proj, v_proj, k_proj, o_proj

维度

LoRA

QLoRA

------

------

-------

**模型精度**

保持 FP16/BF16

量化到 INT4/INT8

**显存占用**

7B: ~10GB

7B: ~5GB

**推理速度**

正常

略慢(需反量化)

**微调效果**

接近全量微调

略低于 LoRA

**硬件要求**

RTX 3090+

RTX 2080+

维度

Adapter

LoRA

------

---------

------

**结构**

并联在 FFN 层

低秩分解替代

**位置**

需指定插入位置

任意位置

**参数量**

~3-5%

~0.1-1%

**推理延迟**

略高(串行计算)

无(可合并)

**多任务**

多适配器切换

多 LoRA 动态加载

维度

Prefix Tuning

Prompt Tuning

------

---------------

---------------

**提示位置**

每层

仅输入层

**参数量**

较大(k × layers)

较小(k)

**效果**

更好

略逊

**适用场景**

复杂任务

简单任务

方法

可训练参数

GPU 显存

推理延迟

效果

实现复杂度

------

-----------

---------

---------

------

-----------

Full FT

100%

≥24GB

最优

LoRA

0.1-1%

≥10GB

接近全量

QLoRA

0.1-1%

≥6GB

略高

良好

Adapter

1-5%

≥12GB

略高

良好

Prefix

0.1-3%

≥10GB

中等

P-tuning v2

0.1-3%

≥10GB

良好

数据集

说明

适用场景

--------

------

---------

**Alpaca**

Stanford Alpaca 团队生成

通用指令微调

**ShareGPT**

用户对话数据

对话系统

**FLAN**

谷歌指令数据集集合

指令遵循

** Dolly**

Databricks 员工生成

领域适应

**OpenAssistant**

开源对话数据

对话系统

检查项

方法

处理方式

--------

------

---------

**重复数据**

哈希比对、相似度计算

去重

**噪声数据**

关键词过滤、长度分布分析

过滤

**格式错误**

JSON 解析、schema 验证

修正或过滤

**隐私信息**

正则匹配、NER 检测

脱敏或过滤

**标注一致性**

多人标注、交叉验证

重新标注

类型

说明

------

------

ROUGE-N

N-gram 召回率(ROUGE-1, ROUGE-2)

ROUGE-L

最长公共子序列

ROUGE-S

Skip-gram 召回率

维度

评估标准

------

---------

**相关性**

回答是否切题

**准确性**

信息是否正确无误

**完整性**

是否完整回答问题

**专业性**

术语使用是否恰当

**流畅性**

表达是否通顺

方案

特点

适用场景

------

------

---------

**vLLM**

PagedAttention,吞吐量高

高并发推理

**TGI**

HuggingFace 官方,支持推理优化

通用部署

**Text Generation Inference**

Rust 实现,高效

生产环境

**Ollama**

本地部署,简单易用

本地开发

**llama.cpp**

纯 C/C++,CPU 友好

边缘部署

问题

原因

解决方案

------

------

---------

过拟合

数据量太少或训练轮次过多

增加数据、使用正则、增加 dropout

灾难性遗忘

全量微调破坏预训练知识

使用 LoRA/QLoRA 或保留预训练数据

分布偏移

微调数据与预训练数据差异大

混合预训练数据一起训练

质量不稳定

数据标注不一致

重新标注、数据清洗

问题

原因

解决方案

------

------

---------

OOM(显存溢出)

batch size 过大或序列太长

减小 batch size、启用 gradient checkpointing、使用 QLoRA

Loss 不下降

学习率不合适或模型问题

调整学习率、检查数据格式

Loss 爆炸

学习率过高或梯度问题

减小学习率、启用梯度裁剪

NaN 损失

数值不稳定

使用混合精度训练、检查数据

问题

原因

解决方案

------

------

---------

重复生成

解码策略问题

调整 temperature、启用 repetition_penalty

生成截断

最大长度限制

增加 max_new_tokens

回答格式错误

Prompt 不够清晰

优化 Prompt,添加示例

推理速度慢

模型过大或硬件不足

量化、使用更小模型

趋势

说明

------

------

**更高效的方法**

如 LoRA+、DoRA 等新方法不断涌现

**多模态微调**

图像、语音、文本联合微调

**增量微调**

高效利用新数据,不遗忘旧知识

**自动化微调**

AutoML + 微调,自动搜索最佳配置

**端侧微调**

在手机、IoT 设备上进行微调

问题类型

具体表现

---------

---------

**领域知识不足**

在医疗、法律、金融等专业领域,可能给出不够准确甚至错误的答案

**企业认知缺失**

不了解特定企业的产品、服务、内部流程

**输出格式不稳定**

难以严格遵循业务要求的输出格式(如 JSON、XML)

**幻觉问题**

对不确定的问题可能编造看似合理但实际错误的答案

**推理成本高**

通用模型参数量巨大,部署和推理成本高昂

维度

提示工程

RAG

微调

------

---------

-----

------

**实现难度**

**成本**

**训练时间**

数小时到数天

**知识更新**

实时

实时

需重新训练

**任务适配**

通用任务

知识问答

复杂推理/格式

**依赖数据量**

少量示例

文档库

百条到数千条

**控制力**

**适用场景**

通用对话、格式控制

知识库问答

领域适应、行为模式

参数

说明

常用值

------

------

--------

`r`

低秩分解的秩,决定可训练参数量

4, 8, 16, 32

`lora_alpha`

缩放因子,通常设为 r 的 2 倍

8, 16, 32, 64

`lora_dropout`

LoRA 层的 dropout 概率

0.0, 0.1

`target_modules`

应用 LoRA 的模块

q_proj, v_proj, k_proj, o_proj

维度

LoRA

QLoRA

------

------

-------

**模型精度**

保持 FP16/BF16

量化到 INT4/INT8

**显存占用**

7B: ~10GB

7B: ~5GB

**推理速度**

正常

略慢(需反量化)

**微调效果**

接近全量微调

略低于 LoRA

**硬件要求**

RTX 3090+

RTX 2080+

维度

Adapter

LoRA

------

---------

------

**结构**

并联在 FFN 层

低秩分解替代

**位置**

需指定插入位置

任意位置

**参数量**

~3-5%

~0.1-1%

**推理延迟**

略高(串行计算)

无(可合并)

**多任务**

多适配器切换

多 LoRA 动态加载

维度

Prefix Tuning

Prompt Tuning

------

---------------

---------------

**提示位置**

每层

仅输入层

**参数量**

较大(k × layers)

较小(k)

**效果**

更好

略逊

**适用场景**

复杂任务

简单任务

方法

可训练参数

GPU 显存

推理延迟

效果

实现复杂度

------

-----------

---------

---------

------

-----------

Full FT

100%

≥24GB

最优

LoRA

0.1-1%

≥10GB

接近全量

QLoRA

0.1-1%

≥6GB

略高

良好

Adapter

1-5%

≥12GB

略高

良好

Prefix

0.1-3%

≥10GB

中等

P-tuning v2

0.1-3%

≥10GB

良好

数据集

说明

适用场景

--------

------

---------

**Alpaca**

Stanford Alpaca 团队生成

通用指令微调

**ShareGPT**

用户对话数据

对话系统

**FLAN**

谷歌指令数据集集合

指令遵循

** Dolly**

Databricks 员工生成

领域适应

**OpenAssistant**

开源对话数据

对话系统

检查项

方法

处理方式

--------

------

---------

**重复数据**

哈希比对、相似度计算

去重

**噪声数据**

关键词过滤、长度分布分析

过滤

**格式错误**

JSON 解析、schema 验证

修正或过滤

**隐私信息**

正则匹配、NER 检测

脱敏或过滤

**标注一致性**

多人标注、交叉验证

重新标注

类型

说明

------

------

ROUGE-N

N-gram 召回率(ROUGE-1, ROUGE-2)

ROUGE-L

最长公共子序列

ROUGE-S

Skip-gram 召回率

维度

评估标准

------

---------

**相关性**

回答是否切题

**准确性**

信息是否正确无误

**完整性**

是否完整回答问题

**专业性**

术语使用是否恰当

**流畅性**

表达是否通顺

方案

特点

适用场景

------

------

---------

**vLLM**

PagedAttention,吞吐量高

高并发推理

**TGI**

HuggingFace 官方,支持推理优化

通用部署

**Text Generation Inference**

Rust 实现,高效

生产环境

**Ollama**

本地部署,简单易用

本地开发

**llama.cpp**

纯 C/C++,CPU 友好

边缘部署

问题

原因

解决方案

------

------

---------

过拟合

数据量太少或训练轮次过多

增加数据、使用正则、增加 dropout

灾难性遗忘

全量微调破坏预训练知识

使用 LoRA/QLoRA 或保留预训练数据

分布偏移

微调数据与预训练数据差异大

混合预训练数据一起训练

质量不稳定

数据标注不一致

重新标注、数据清洗

问题

原因

解决方案

------

------

---------

OOM(显存溢出)

batch size 过大或序列太长

减小 batch size、启用 gradient checkpointing、使用 QLoRA

Loss 不下降

学习率不合适或模型问题

调整学习率、检查数据格式

Loss 爆炸

学习率过高或梯度问题

减小学习率、启用梯度裁剪

NaN 损失

数值不稳定

使用混合精度训练、检查数据

问题

原因

解决方案

------

------

---------

重复生成

解码策略问题

调整 temperature、启用 repetition_penalty

生成截断

最大长度限制

增加 max_new_tokens

回答格式错误

Prompt 不够清晰

优化 Prompt,添加示例

推理速度慢

模型过大或硬件不足

量化、使用更小模型

趋势

说明

------

------

**更高效的方法**

如 LoRA+、DoRA 等新方法不断涌现

**多模态微调**

图像、语音、文本联合微调

**增量微调**

高效利用新数据,不遗忘旧知识

**自动化微调**

AutoML + 微调,自动搜索最佳配置

**端侧微调**

在手机、IoT 设备上进行微调

问题类型

具体表现

---------

---------

**领域知识不足**

在医疗、法律、金融等专业领域,可能给出不够准确甚至错误的答案

**企业认知缺失**

不了解特定企业的产品、服务、内部流程

**输出格式不稳定**

难以严格遵循业务要求的输出格式(如 JSON、XML)

**幻觉问题**

对不确定的问题可能编造看似合理但实际错误的答案

**推理成本高**

通用模型参数量巨大,部署和推理成本高昂

维度

提示工程

RAG

微调

------

---------

-----

------

**实现难度**

**成本**

**训练时间**

数小时到数天

**知识更新**

实时

实时

需重新训练

**任务适配**

通用任务

知识问答

复杂推理/格式

**依赖数据量**

少量示例

文档库

百条到数千条

**控制力**

**适用场景**

通用对话、格式控制

知识库问答

领域适应、行为模式

参数

说明

常用值

------

------

--------

`r`

低秩分解的秩,决定可训练参数量

4, 8, 16, 32

`lora_alpha`

缩放因子,通常设为 r 的 2 倍

8, 16, 32, 64

`lora_dropout`

LoRA 层的 dropout 概率

0.0, 0.1

`target_modules`

应用 LoRA 的模块

q_proj, v_proj, k_proj, o_proj

维度

LoRA

QLoRA

------

------

-------

**模型精度**

保持 FP16/BF16

量化到 INT4/INT8

**显存占用**

7B: ~10GB

7B: ~5GB

**推理速度**

正常

略慢(需反量化)

**微调效果**

接近全量微调

略低于 LoRA

**硬件要求**

RTX 3090+

RTX 2080+

维度

Adapter

LoRA

------

---------

------

**结构**

并联在 FFN 层

低秩分解替代

**位置**

需指定插入位置

任意位置

**参数量**

~3-5%

~0.1-1%

**推理延迟**

略高(串行计算)

无(可合并)

**多任务**

多适配器切换

多 LoRA 动态加载

维度

Prefix Tuning

Prompt Tuning

------

---------------

---------------

**提示位置**

每层

仅输入层

**参数量**

较大(k × layers)

较小(k)

**效果**

更好

略逊

**适用场景**

复杂任务

简单任务

方法

可训练参数

GPU 显存

推理延迟

效果

实现复杂度

------

-----------

---------

---------

------

-----------

Full FT

100%

≥24GB

最优

LoRA

0.1-1%

≥10GB

接近全量

QLoRA

0.1-1%

≥6GB

略高

良好

Adapter

1-5%

≥12GB

略高

良好

Prefix

0.1-3%

≥10GB

中等

P-tuning v2

0.1-3%

≥10GB

良好

数据集

说明

适用场景

--------

------

---------

**Alpaca**

Stanford Alpaca 团队生成

通用指令微调

**ShareGPT**

用户对话数据

对话系统

**FLAN**

谷歌指令数据集集合

指令遵循

** Dolly**

Databricks 员工生成

领域适应

**OpenAssistant**

开源对话数据

对话系统

检查项

方法

处理方式

--------

------

---------

**重复数据**

哈希比对、相似度计算

去重

**噪声数据**

关键词过滤、长度分布分析

过滤

**格式错误**

JSON 解析、schema 验证

修正或过滤

**隐私信息**

正则匹配、NER 检测

脱敏或过滤

**标注一致性**

多人标注、交叉验证

重新标注

类型

说明

------

------

ROUGE-N

N-gram 召回率(ROUGE-1, ROUGE-2)

ROUGE-L

最长公共子序列

ROUGE-S

Skip-gram 召回率

维度

评估标准

------

---------

**相关性**

回答是否切题

**准确性**

信息是否正确无误

**完整性**

是否完整回答问题

**专业性**

术语使用是否恰当

**流畅性**

表达是否通顺

方案

特点

适用场景

------

------

---------

**vLLM**

PagedAttention,吞吐量高

高并发推理

**TGI**

HuggingFace 官方,支持推理优化

通用部署

**Text Generation Inference**

Rust 实现,高效

生产环境

**Ollama**

本地部署,简单易用

本地开发

**llama.cpp**

纯 C/C++,CPU 友好

边缘部署

问题

原因

解决方案

------

------

---------

过拟合

数据量太少或训练轮次过多

增加数据、使用正则、增加 dropout

灾难性遗忘

全量微调破坏预训练知识

使用 LoRA/QLoRA 或保留预训练数据

分布偏移

微调数据与预训练数据差异大

混合预训练数据一起训练

质量不稳定

数据标注不一致

重新标注、数据清洗

问题

原因

解决方案

------

------

---------

OOM(显存溢出)

batch size 过大或序列太长

减小 batch size、启用 gradient checkpointing、使用 QLoRA

Loss 不下降

学习率不合适或模型问题

调整学习率、检查数据格式

Loss 爆炸

学习率过高或梯度问题

减小学习率、启用梯度裁剪

NaN 损失

数值不稳定

使用混合精度训练、检查数据

问题

原因

解决方案

------

------

---------

重复生成

解码策略问题

调整 temperature、启用 repetition_penalty

生成截断

最大长度限制

增加 max_new_tokens

回答格式错误

Prompt 不够清晰

优化 Prompt,添加示例

推理速度慢

模型过大或硬件不足

量化、使用更小模型

趋势

说明

------

------

**更高效的方法**

如 LoRA+、DoRA 等新方法不断涌现

**多模态微调**

图像、语音、文本联合微调

**增量微调**

高效利用新数据,不遗忘旧知识

**自动化微调**

AutoML + 微调,自动搜索最佳配置

**端侧微调**

在手机、IoT 设备上进行微调

问题类型

具体表现

---------

---------

**领域知识不足**

在医疗、法律、金融等专业领域,可能给出不够准确甚至错误的答案

**企业认知缺失**

不了解特定企业的产品、服务、内部流程

**输出格式不稳定**

难以严格遵循业务要求的输出格式(如 JSON、XML)

**幻觉问题**

对不确定的问题可能编造看似合理但实际错误的答案

**推理成本高**

通用模型参数量巨大,部署和推理成本高昂

维度

提示工程

RAG

微调

------

---------

-----

------

**实现难度**

**成本**

**训练时间**

数小时到数天

**知识更新**

实时

实时

需重新训练

**任务适配**

通用任务

知识问答

复杂推理/格式

**依赖数据量**

少量示例

文档库

百条到数千条

**控制力**

**适用场景**

通用对话、格式控制

知识库问答

领域适应、行为模式

参数

说明

常用值

------

------

--------

`r`

低秩分解的秩,决定可训练参数量

4, 8, 16, 32

`lora_alpha`

缩放因子,通常设为 r 的 2 倍

8, 16, 32, 64

`lora_dropout`

LoRA 层的 dropout 概率

0.0, 0.1

`target_modules`

应用 LoRA 的模块

q_proj, v_proj, k_proj, o_proj

维度

LoRA

QLoRA

------

------

-------

**模型精度**

保持 FP16/BF16

量化到 INT4/INT8

**显存占用**

7B: ~10GB

7B: ~5GB

**推理速度**

正常

略慢(需反量化)

**微调效果**

接近全量微调

略低于 LoRA

**硬件要求**

RTX 3090+

RTX 2080+

维度

Adapter

LoRA

------

---------

------

**结构**

并联在 FFN 层

低秩分解替代

**位置**

需指定插入位置

任意位置

**参数量**

~3-5%

~0.1-1%

**推理延迟**

略高(串行计算)

无(可合并)

**多任务**

多适配器切换

多 LoRA 动态加载

维度

Prefix Tuning

Prompt Tuning

------

---------------

---------------

**提示位置**

每层

仅输入层

**参数量**

较大(k × layers)

较小(k)

**效果**

更好

略逊

**适用场景**

复杂任务

简单任务

方法

可训练参数

GPU 显存

推理延迟

效果

实现复杂度

------

-----------

---------

---------

------

-----------

Full FT

100%

≥24GB

最优

LoRA

0.1-1%

≥10GB

接近全量

QLoRA

0.1-1%

≥6GB

略高

良好

Adapter

1-5%

≥12GB

略高

良好

Prefix

0.1-3%

≥10GB

中等

P-tuning v2

0.1-3%

≥10GB

良好

数据集

说明

适用场景

--------

------

---------

**Alpaca**

Stanford Alpaca 团队生成

通用指令微调

**ShareGPT**

用户对话数据

对话系统

**FLAN**

谷歌指令数据集集合

指令遵循

** Dolly**

Databricks 员工生成

领域适应

**OpenAssistant**

开源对话数据

对话系统

检查项

方法

处理方式

--------

------

---------

**重复数据**

哈希比对、相似度计算

去重

**噪声数据**

关键词过滤、长度分布分析

过滤

**格式错误**

JSON 解析、schema 验证

修正或过滤

**隐私信息**

正则匹配、NER 检测

脱敏或过滤

**标注一致性**

多人标注、交叉验证

重新标注

类型

说明

------

------

ROUGE-N

N-gram 召回率(ROUGE-1, ROUGE-2)

ROUGE-L

最长公共子序列

ROUGE-S

Skip-gram 召回率

维度

评估标准

------

---------

**相关性**

回答是否切题

**准确性**

信息是否正确无误

**完整性**

是否完整回答问题

**专业性**

术语使用是否恰当

**流畅性**

表达是否通顺

方案

特点

适用场景

------

------

---------

**vLLM**

PagedAttention,吞吐量高

高并发推理

**TGI**

HuggingFace 官方,支持推理优化

通用部署

**Text Generation Inference**

Rust 实现,高效

生产环境

**Ollama**

本地部署,简单易用

本地开发

**llama.cpp**

纯 C/C++,CPU 友好

边缘部署

问题

原因

解决方案

------

------

---------

过拟合

数据量太少或训练轮次过多

增加数据、使用正则、增加 dropout

灾难性遗忘

全量微调破坏预训练知识

使用 LoRA/QLoRA 或保留预训练数据

分布偏移

微调数据与预训练数据差异大

混合预训练数据一起训练

质量不稳定

数据标注不一致

重新标注、数据清洗

问题

原因

解决方案

------

------

---------

OOM(显存溢出)

batch size 过大或序列太长

减小 batch size、启用 gradient checkpointing、使用 QLoRA

Loss 不下降

学习率不合适或模型问题

调整学习率、检查数据格式

Loss 爆炸

学习率过高或梯度问题

减小学习率、启用梯度裁剪

NaN 损失

数值不稳定

使用混合精度训练、检查数据

问题

原因

解决方案

------

------

---------

重复生成

解码策略问题

调整 temperature、启用 repetition_penalty

生成截断

最大长度限制

增加 max_new_tokens

回答格式错误

Prompt 不够清晰

优化 Prompt,添加示例

推理速度慢

模型过大或硬件不足

量化、使用更小模型

趋势

说明

------

------

**更高效的方法**

如 LoRA+、DoRA 等新方法不断涌现

**多模态微调**

图像、语音、文本联合微调

**增量微调**

高效利用新数据,不遗忘旧知识

**自动化微调**

AutoML + 微调,自动搜索最佳配置

**端侧微调**

在手机、IoT 设备上进行微调

问题类型

具体表现

---------

---------

**领域知识不足**

在医疗、法律、金融等专业领域,可能给出不够准确甚至错误的答案

**企业认知缺失**

不了解特定企业的产品、服务、内部流程

**输出格式不稳定**

难以严格遵循业务要求的输出格式(如 JSON、XML)

**幻觉问题**

对不确定的问题可能编造看似合理但实际错误的答案

**推理成本高**

通用模型参数量巨大,部署和推理成本高昂

维度

提示工程

RAG

微调

------

---------

-----

------

**实现难度**

**成本**

**训练时间**

数小时到数天

**知识更新**

实时

实时

需重新训练

**任务适配**

通用任务

知识问答

复杂推理/格式

**依赖数据量**

少量示例

文档库

百条到数千条

**控制力**

**适用场景**

通用对话、格式控制

知识库问答

领域适应、行为模式

参数

说明

常用值

------

------

--------

`r`

低秩分解的秩,决定可训练参数量

4, 8, 16, 32

`lora_alpha`

缩放因子,通常设为 r 的 2 倍

8, 16, 32, 64

`lora_dropout`

LoRA 层的 dropout 概率

0.0, 0.1

`target_modules`

应用 LoRA 的模块

q_proj, v_proj, k_proj, o_proj

维度

LoRA

QLoRA

------

------

-------

**模型精度**

保持 FP16/BF16

量化到 INT4/INT8

**显存占用**

7B: ~10GB

7B: ~5GB

**推理速度**

正常

略慢(需反量化)

**微调效果**

接近全量微调

略低于 LoRA

**硬件要求**

RTX 3090+

RTX 2080+

维度

Adapter

LoRA

------

---------

------

**结构**

并联在 FFN 层

低秩分解替代

**位置**

需指定插入位置

任意位置

**参数量**

~3-5%

~0.1-1%

**推理延迟**

略高(串行计算)

无(可合并)

**多任务**

多适配器切换

多 LoRA 动态加载

维度

Prefix Tuning

Prompt Tuning

------

---------------

---------------

**提示位置**

每层

仅输入层

**参数量**

较大(k × layers)

较小(k)

**效果**

更好

略逊

**适用场景**

复杂任务

简单任务

方法

可训练参数

GPU 显存

推理延迟

效果

实现复杂度

------

-----------

---------

---------

------

-----------

Full FT

100%

≥24GB

最优

LoRA

0.1-1%

≥10GB

接近全量

QLoRA

0.1-1%

≥6GB

略高

良好

Adapter

1-5%

≥12GB

略高

良好

Prefix

0.1-3%

≥10GB

中等

P-tuning v2

0.1-3%

≥10GB

良好

数据集

说明

适用场景

--------

------

---------

**Alpaca**

Stanford Alpaca 团队生成

通用指令微调

**ShareGPT**

用户对话数据

对话系统

**FLAN**

谷歌指令数据集集合

指令遵循

** Dolly**

Databricks 员工生成

领域适应

**OpenAssistant**

开源对话数据

对话系统

检查项

方法

处理方式

--------

------

---------

**重复数据**

哈希比对、相似度计算

去重

**噪声数据**

关键词过滤、长度分布分析

过滤

**格式错误**

JSON 解析、schema 验证

修正或过滤

**隐私信息**

正则匹配、NER 检测

脱敏或过滤

**标注一致性**

多人标注、交叉验证

重新标注

类型

说明

------

------

ROUGE-N

N-gram 召回率(ROUGE-1, ROUGE-2)

ROUGE-L

最长公共子序列

ROUGE-S

Skip-gram 召回率

维度

评估标准

------

---------

**相关性**

回答是否切题

**准确性**

信息是否正确无误

**完整性**

是否完整回答问题

**专业性**

术语使用是否恰当

**流畅性**

表达是否通顺

方案

特点

适用场景

------

------

---------

**vLLM**

PagedAttention,吞吐量高

高并发推理

**TGI**

HuggingFace 官方,支持推理优化

通用部署

**Text Generation Inference**

Rust 实现,高效

生产环境

**Ollama**

本地部署,简单易用

本地开发

**llama.cpp**

纯 C/C++,CPU 友好

边缘部署

问题

原因

解决方案

------

------

---------

过拟合

数据量太少或训练轮次过多

增加数据、使用正则、增加 dropout

灾难性遗忘

全量微调破坏预训练知识

使用 LoRA/QLoRA 或保留预训练数据

分布偏移

微调数据与预训练数据差异大

混合预训练数据一起训练

质量不稳定

数据标注不一致

重新标注、数据清洗

问题

原因

解决方案

------

------

---------

OOM(显存溢出)

batch size 过大或序列太长

减小 batch size、启用 gradient checkpointing、使用 QLoRA

Loss 不下降

学习率不合适或模型问题

调整学习率、检查数据格式

Loss 爆炸

学习率过高或梯度问题

减小学习率、启用梯度裁剪

NaN 损失

数值不稳定

使用混合精度训练、检查数据

问题

原因

解决方案

------

------

---------

重复生成

解码策略问题

调整 temperature、启用 repetition_penalty

生成截断

最大长度限制

增加 max_new_tokens

回答格式错误

Prompt 不够清晰

优化 Prompt,添加示例

推理速度慢

模型过大或硬件不足

量化、使用更小模型

趋势

说明

------

------

**更高效的方法**

如 LoRA+、DoRA 等新方法不断涌现

**多模态微调**

图像、语音、文本联合微调

**增量微调**

高效利用新数据,不遗忘旧知识

**自动化微调**

AutoML + 微调,自动搜索最佳配置

**端侧微调**

在手机、IoT 设备上进行微调

问题类型

具体表现

---------

---------

**领域知识不足**

在医疗、法律、金融等专业领域,可能给出不够准确甚至错误的答案

**企业认知缺失**

不了解特定企业的产品、服务、内部流程

**输出格式不稳定**

难以严格遵循业务要求的输出格式(如 JSON、XML)

**幻觉问题**

对不确定的问题可能编造看似合理但实际错误的答案

**推理成本高**

通用模型参数量巨大,部署和推理成本高昂

维度

提示工程

RAG

微调

------

---------

-----

------

**实现难度**

**成本**

**训练时间**

数小时到数天

**知识更新**

实时

实时

需重新训练

**任务适配**

通用任务

知识问答

复杂推理/格式

**依赖数据量**

少量示例

文档库

百条到数千条

**控制力**

**适用场景**

通用对话、格式控制

知识库问答

领域适应、行为模式

参数

说明

常用值

------

------

--------

`r`

低秩分解的秩,决定可训练参数量

4, 8, 16, 32

`lora_alpha`

缩放因子,通常设为 r 的 2 倍

8, 16, 32, 64

`lora_dropout`

LoRA 层的 dropout 概率

0.0, 0.1

`target_modules`

应用 LoRA 的模块

q_proj, v_proj, k_proj, o_proj

维度

LoRA

QLoRA

------

------

-------

**模型精度**

保持 FP16/BF16

量化到 INT4/INT8

**显存占用**

7B: ~10GB

7B: ~5GB

**推理速度**

正常

略慢(需反量化)

**微调效果**

接近全量微调

略低于 LoRA

**硬件要求**

RTX 3090+

RTX 2080+

维度

Adapter

LoRA

------

---------

------

**结构**

并联在 FFN 层

低秩分解替代

**位置**

需指定插入位置

任意位置

**参数量**

~3-5%

~0.1-1%

**推理延迟**

略高(串行计算)

无(可合并)

**多任务**

多适配器切换

多 LoRA 动态加载

维度

Prefix Tuning

Prompt Tuning

------

---------------

---------------

**提示位置**

每层

仅输入层

**参数量**

较大(k × layers)

较小(k)

**效果**

更好

略逊

**适用场景**

复杂任务

简单任务

方法

可训练参数

GPU 显存

推理延迟

效果

实现复杂度

------

-----------

---------

---------

------

-----------

Full FT

100%

≥24GB

最优

LoRA

0.1-1%

≥10GB

接近全量

QLoRA

0.1-1%

≥6GB

略高

良好

Adapter

1-5%

≥12GB

略高

良好

Prefix

0.1-3%

≥10GB

中等

P-tuning v2

0.1-3%

≥10GB

良好

数据集

说明

适用场景

--------

------

---------

**Alpaca**

Stanford Alpaca 团队生成

通用指令微调

**ShareGPT**

用户对话数据

对话系统

**FLAN**

谷歌指令数据集集合

指令遵循

** Dolly**

Databricks 员工生成

领域适应

**OpenAssistant**

开源对话数据

对话系统

检查项

方法

处理方式

--------

------

---------

**重复数据**

哈希比对、相似度计算

去重

**噪声数据**

关键词过滤、长度分布分析

过滤

**格式错误**

JSON 解析、schema 验证

修正或过滤

**隐私信息**

正则匹配、NER 检测

脱敏或过滤

**标注一致性**

多人标注、交叉验证

重新标注

类型

说明

------

------

ROUGE-N

N-gram 召回率(ROUGE-1, ROUGE-2)

ROUGE-L

最长公共子序列

ROUGE-S

Skip-gram 召回率

维度

评估标准

------

---------

**相关性**

回答是否切题

**准确性**

信息是否正确无误

**完整性**

是否完整回答问题

**专业性**

术语使用是否恰当

**流畅性**

表达是否通顺

方案

特点

适用场景

------

------

---------

**vLLM**

PagedAttention,吞吐量高

高并发推理

**TGI**

HuggingFace 官方,支持推理优化

通用部署

**Text Generation Inference**

Rust 实现,高效

生产环境

**Ollama**

本地部署,简单易用

本地开发

**llama.cpp**

纯 C/C++,CPU 友好

边缘部署

问题

原因

解决方案

------

------

---------

过拟合

数据量太少或训练轮次过多

增加数据、使用正则、增加 dropout

灾难性遗忘

全量微调破坏预训练知识

使用 LoRA/QLoRA 或保留预训练数据

分布偏移

微调数据与预训练数据差异大

混合预训练数据一起训练

质量不稳定

数据标注不一致

重新标注、数据清洗

问题

原因

解决方案

------

------

---------

OOM(显存溢出)

batch size 过大或序列太长

减小 batch size、启用 gradient checkpointing、使用 QLoRA

Loss 不下降

学习率不合适或模型问题

调整学习率、检查数据格式

Loss 爆炸

学习率过高或梯度问题

减小学习率、启用梯度裁剪

NaN 损失

数值不稳定

使用混合精度训练、检查数据

问题

原因

解决方案

------

------

---------

重复生成

解码策略问题

调整 temperature、启用 repetition_penalty

生成截断

最大长度限制

增加 max_new_tokens

回答格式错误

Prompt 不够清晰

优化 Prompt,添加示例

推理速度慢

模型过大或硬件不足

量化、使用更小模型

趋势

说明

------

------

**更高效的方法**

如 LoRA+、DoRA 等新方法不断涌现

**多模态微调**

图像、语音、文本联合微调

**增量微调**

高效利用新数据,不遗忘旧知识

**自动化微调**

AutoML + 微调,自动搜索最佳配置

**端侧微调**

在手机、IoT 设备上进行微调

代码示例

from transformers import AutoModelForCausalLM, AutoTokenizer, TrainingArguments, Trainer
from datasets import load_dataset

#
加载预训练模型
model_name = "meta-llama/Llama-2-7b-hf"
model = AutoModelForCausalLM.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)

#
准备数据集
dataset = load_dataset("json", data_files="domain_data.jsonl")
dataset = dataset.map(lambda x: tokenizer(x["text"]), batched=True)

#
全量微调配置
training_args = TrainingArguments(
    output_dir="./full_ft_model",
    num_train_epochs=3,
    per_device_train_batch_size=4,
    gradient_accumulation_steps=8,
    learning_rate=2e-5,
    fp16=True,
    logging_steps=10,
    save_steps=500,
)

trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=dataset["train"],
)

trainer.train()

from adapters import AdapterConfig, AdapterType

from transformers import AutoModel

model = AutoModel.from_pretrained("bert-base-uncased")

添加 Adapter

adapter_config = AdapterConfig(

    hidden_size=768,

    adapter_size=64,

    adapter_activation="relu",

    adapter_reduction_factor=16,

)

model.add_adapter("domain_task", config=adapter_config)

激活适配器

model.train_adapter("domain_task")

推理时切换适配器

model.set_active_adapters("domain_task")

┌─────────────────────────────────────────────────────────────┐
│                   
模型微调核心原理                           │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  
预训练阶段                                                 │
│   ┌─────────────┐                                           │
│   │ 
海量通用数据 │ → 通用语言能力 + 广泛知识                    │
│   │ (Web, Books) │                                           │
│   └─────────────┘                                           │
│          ↓                                                   │
│  
微调阶段                                                   │
│   ┌─────────────┐                                           │
│   │ 
领域/业务数据│ → 领域专业能力 + 业务适配                    │
│   │ (Domain Data) │                                          │
│   └─────────────┘                                           │
│          ↓                                                   │
│   ┌─────────────┐                                           │
│   │ 
微调后模型  │ → 通用能力 + 领域专业能力                     │
│   └─────────────┘                                           │
│                                                             │
└─────────────────────────────────────────────────────────────┘

更多推荐