支持私有化部署
AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


模型微调是啥?有哪些方法?小白也能看懂的通俗讲解

发布日期:2025-07-03 15:13:29 浏览次数: 1536
作者:卷心菜ai

微信搜一搜,关注“卷心菜ai”

推荐语

想让AI更懂你?一文读懂模型微调的三种主流方法,轻松上手不踩坑!

核心内容:
1. 三种主流微调方法对比:LoRA、Adapter和Prompt Tuning
2. LoRA技术详解:如何通过轻量矩阵实现高效微调
3. 微调成本分析及实际应用建议

杨芳贤
53AI创始人/腾讯云(TVP)最具价值专家

大模型虽然很强,但总不能什么都懂你——想让它说得更准、听得更懂,就得“调教”一下,这就是:模型微调(Fine-tuning)。

目录

  1. 三种主流微调方法全解析(LoRA / Adapter / Prompt Tuning)
  2. LoRA 是啥?不是改模型,是“偷偷加点料”
  3. Adapter 是啥?像插“外挂模块”,每层塞一点新知识
  4. Prompt Tuning 是啥?不是“写提示词”,而是“学提示向量”
  5. 微调成本(假设无 GPU 本地算力,需租云平台)
  6. 模型部署成本(云端长期上线服务)

🔧 1. 三种主流微调方法全解析(LoRA / Adapter / Prompt Tuning)

方法
本质是啥
动了模型哪儿?
优点
缺点
LoRA
加个轻量矩阵补丁
Transformer 里注意力层的 Q/V
几百 MB,快、省、效果不错
只适用于结构可控的模型
Adapter
每层插一个可训练模块
Transformer 各层之间
多任务灵活切换,可插拔
推理稍慢,结构复杂一点
Prompt Tuning
训练一段“模型专属前缀向量”
输入文本前面拼上向量,不动模型
超轻量(几十 KB),训练超快
任务越复杂越难调,精度不如 LoRA

🧠 2. LoRA 是啥?不是改模型,是“偷偷加点料”

🔍 类比:你想在不开脑的前提下偷偷给 Transformer 植入一点“记忆补丁”。

它不会去改模型原始结构,而是: 在每层注意力机制的 Query(Wq)和 Value(Wv)矩阵上,加上一个 可训练小矩阵补丁

🔩 原理图:

原始计算:
    Q = X × Wq

LoRA 改造后:
    Q = X × (Wq + B × A)
                  ↑   ↑
               可训练  可训练
  • A 是降维矩阵(r × d)
  • B 是升维矩阵(d × r)
  • 总共只训练 A 和 B,其他全冻结

💻 LoRA 代码简化示例(用 peft,选中 query/value 层):

from peft import get_peft_model, LoraConfig, TaskType
from transformers import AutoModelForSequenceClassification

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

lora_config = LoraConfig(
    r=8,                         # 降维维度
    lora_alpha=32,              # 缩放系数
    target_modules=["query""value"],  # 注意:加在哪些层要对得上模型结构
    task_type=TaskType.SEQ_CLS
)

model = get_peft_model(model, lora_config)
model.print_trainable_parameters()

📌大家别被代码劝退!我放代码是为了说明 Python 封装得很好,实际代码就这几行,非常友好 😊


🧠 3. Adapter 是啥?像插“外挂模块”,每层塞一点新知识

🔍 类比:你不改模型主板,只在中间每层插个“小外挂”,训练这些外挂就够了。

每层 Transformer 都是处理输入的“中继站”,Adapter 就是在中间偷偷插个小模块,专门拿来训练的。

整个流程大致是这样的:

  1. 先降维 + 激活 + 升维: 把输入缩小成低维(比如从 768 降到 64),再用非线性函数加工一下,然后再升回去(64 ➜ 768)。

  2. 输出加和: 把这个加工后的输出,和原来那层的输出相加起来,再一起传给下一层。

输入 →
      Linear(降维)→ 非线性 → Linear(升维) → 加回主干

💻 Adapter 代码简化示例:

from transformers import AutoModelForSequenceClassification
import transformers.adapters  # 要安装 adapters 扩展包

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

# 添加 Adapter 模块
model.add_adapter("my_adapter")
model.train_adapter("my_adapter")  # 冻结主干,只训练 adapter

model.save_adapter("./adapter_model""my_adapter")  # 导出只需几十MB

💡 你可以为不同任务分别训练 Adapter 模块,就像“插卡带”一样部署时灵活切换,特别适合一个模型跑多个任务的场景。

比如:你可以在一个大模型里,为不同的任务各自训练一个 Adapter 模块

任务名
对应 Adapter 名称
情感分类任务
adapter_sentiment
法律文本总结
adapter_law
医疗问答系统
adapter_medical

这些 Adapter 是独立的小模块,平时你只训练和保存 Adapter 的参数,不动大模型。

那部署的时候呢?

你只需要加载你当前任务需要的那个 Adapter,比如做法律问答时:

model.load_adapter("adapter_law")

这样模型就像“插上专用外挂”,立刻切换成懂法律的角色。


🧠 4. Prompt Tuning 是啥?不是“写提示词”,而是“学提示向量”

🔍 类比:不是告诉模型你要干嘛,而是训练一段“潜意识引导前缀”。

和写 “你是一个助理,请…” 这种文字提示不同,Prompt Tuning 是:

✅ 训练一段 embedding 向量(不可读、不代表词),直接拼在输入文本前面。


🔩 输入结构图:

输入 = [虚拟 Prompt 向量 1~8] + [真实文本 Token]

这 8 个向量是你训练出来的参数,主干模型完全不动

💻 Prompt Tuning 简化代码(用 peft 框架):

from transformers import AutoModelForSequenceClassification, AutoTokenizer
from peft import PromptTuningConfig, get_peft_model, TaskType

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

peft_config = PromptTuningConfig(
    task_type=TaskType.SEQ_CLS,
    num_virtual_tokens=8,                  # 虚拟向量个数
    tokenizer_name_or_path="bert-base-uncased"
)

model = get_peft_model(model, peft_config)
model.print_trainable_parameters()

💡 最终生成的“Prompt”不是汉字,不是词,是 8 个模型学出来的向量,你看不懂但模型很懂。


🧠 5. 微调成本(假设无 GPU 本地算力,需租云平台)

以下是以阿里云弹性 GPU 实例 + 本地调试平台(如 Colab)为估算基础,按“租用+上传数据+训练+导出模型”流程估算:

模型
参数规模
推荐训练方式
推荐云平台配置
训练时长(估算)
成本估算(元)
ChatGLM3-6B
6B
LoRA / QLoRA
阿里云 ECS + A10 (24G)
2~3 小时
¥80~¥150
Qwen-7B
7B
QLoRA
阿里云 P100 实例
3~4 小时
¥120~¥200
BGE-Large-zh
300M
全量 / LoRA
阿里云 3090 / T4
<1 小时
¥20~¥40
Mistral-7B
7B
QLoRA
阿里云 A100 (40G)
2~3 小时
¥180~¥300
MiniCPM-2B
2B
LoRA
阿里云 T4 / A10
40 分钟~1 小时
¥15~¥30

6. 模型部署成本(云端长期上线服务)

以阿里云为代表的国内主流平台,常见 GPU 部署成本如下(按弹性GPU服务器 + 推理框架搭建估算):

显卡类型
适合模型
推理能力
实例价格(¥/小时)
估算月成本(24小时/天)
T4(16GB)
2B~3B 模型(如 MiniCPM)
中等,适合轻量对话/分类任务
~3~5 元/小时
¥2200~¥3600
A10(24GB)
6B~7B 模型(ChatGLM3/Qwen)
强,支持中大型模型服务
~8~12 元/小时
¥6000~¥9000
A100(40GB)
13B+ / 多任务多并发
极强,适合大模型微调+推理
~25~40 元/小时
¥18000+
CPU(16核/32G)
小模型 ONNX
推理慢,延迟高
~0.5~1 元/小时
¥400~¥700

53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询