fine-tuning
模型微调 (Fine-Tuning) 完全指南
从基础概念到最佳实践,涵盖 LLM、多模态、图像生成、语音等全领域微调方法论。
创建时间:2026-04-21 | 持续更新中
目录
1. 什么是微调?
微调 (Fine-Tuning) 是指在预训练模型的基础上,使用特定领域的少量数据进一步训练,使模型适应该领域任务的过程。
预训练模型 (Pre-trained) ──微调──▶ 领域适配模型 (Fine-tuned)
│ │
▼ ▼
通用知识 领域专长
广泛但不深 精准且实用
类比理解
- 预训练 = 大学通识教育(广泛知识)
- 微调 = 研究生专业方向(深度专精)
- Prompt Engineering = 面试时引导候选人回答问题
- RAG = 面试时给候选人发参考资料
2. 为什么需要微调?
2.1 微调 vs Prompt Engineering vs RAG
| 维度 | Prompt Engineering | RAG | 微调 |
|---|---|---|---|
| 成本 | 零 | 低~中 | 中~高 |
| 效果上限 | 受限于基座模型 | 受限于检索质量 | 最高 |
| 延迟 | 低 | 中(检索开销) | 低 |
| 可定制性 | 低 | 中 | 高 |
| 维护成本 | 高(需调试 prompt) | 中(需维护知识库) | 低(一次训练) |
| 适用场景 | 快速验证 | 知识密集型 | 风格/格式/领域专精 |
2.2 何时选择微调?
✅ 适合微调的场景: - 需要特定输出格式(JSON、代码规范、医学报告) - 需要特定风格(品牌语气、写作风格) - 领域术语/知识密集(法律、医疗、金融) - Prompt 太长或效果不稳定 - 需要降低推理成本(用更小的微调模型替代大模型)
❌ 不适合微调的场景: - 知识频繁更新(→ 用 RAG) - 只需临时适配(→ 用 Prompt) - 数据量太少(< 100 条,→ 先做数据增强)
3. 微调的核心概念
3.1 预训练 (Pre-training)
在海量无标注数据上训练模型学习语言/视觉基础表示。
- 目标:next-token prediction(预测下一个 token)
- 数据量:数万亿 token
- 成本:数百万~数千万美元
- 产出:Base Model(基础模型)
3.2 指令微调 (SFT - Supervised Fine-Tuning)
在标注的指令-回复对上训练,使模型学会遵循指令。
- 目标:学会理解并执行人类指令
- 数据量:1K ~ 1M 条指令数据
- 格式:
json { "messages": [ {"role": "system", "content": "你是一个助手"}, {"role": "user", "content": "你好"}, {"role": "assistant", "content": "你好!有什么我可以帮助的?"} ] }
3.3 偏好对齐 (Alignment)
让模型输出更符合人类偏好的回复。
| 方法 | 原理 | 需要奖励模型? | 计算成本 |
|---|---|---|---|
| RLHF (PPO) | 强化学习 + 奖励模型 | ✅ 需要 | 高 |
| DPO | 直接从偏好对优化 | ❌ 不需要 | 中 |
| ORPO | 在 SFT 中融入偏好 | ❌ 不需要 | 中 |
| KTO | Kahneman-Tversky 优化 | ❌ 不需要 | 低 |
| GRPO | 群体相对策略优化 | ❌ 不需要 | 中 |
| SimPO | 简化偏好优化 | ❌ 不需要 | 中 |
3.4 关键超参数
| 参数 | 含义 | 典型值 | 影响 |
|---|---|---|---|
| Learning Rate | 学习率 | 1e-5 ~ 5e-4 | 过大→震荡,过小→不收敛 |
| Batch Size | 每批样本数 | 4 ~ 32 | 越大越稳定,显存需求高 |
| Epochs | 训练轮数 | 1 ~ 5 | 过多→过拟合 |
| Warmup Ratio | 预热比例 | 0.03 ~ 0.1 | 避免初期不稳定 |
| Weight Decay | 权重衰减 | 0.01 ~ 0.1 | 防止过拟合 |
| Max Seq Length | 最大序列长度 | 2048 ~ 128K | 影响显存和训练速度 |
4. 微调方法全景图
4.1 全量微调 (Full Fine-Tuning)
更新模型所有参数。
优点:效果最好,深度适配
缺点:显存需求极高,可能灾难性遗忘
适用:数据量大(> 10K)、有充足算力
显存估算:模型参数量 × 2(模型 + 优化器状态)× 2(梯度 + 激活) - 7B 模型 ≈ 56~72 GB - 70B 模型 ≈ 560~720 GB
4.2 LoRA (Low-Rank Adaptation)
⭐ 最推荐的微调方法
只在注意力和 FFN 层添加低秩矩阵进行训练,冻结原始模型参数。
优点:显存极低、训练快、可叠加、不破坏原始权重
缺点:表达能力略低于全量微调
适用:绝大多数场景
原理:
原矩阵 W (d×d)
替换为: W + ΔW = W + BA
其中 B (d×r), A (r×d), r << d
关键参数: | 参数 | 含义 | 建议 | |------|------|------| | r (rank) | 低秩维度 | 8~16:简单任务,32~64:复杂任务 | | alpha | 缩放系数 | 通常 = 2×r | | dropout | 随机失活 | 0.05~0.1 | | target_modules | 应用 LoRA 的层 | 至少包含所有 attention 和 FFN 层 |
4.3 QLoRA (Quantized LoRA)
⭐ 性价比之王
先 4-bit 量化模型,再加 LoRA 训练。
优点:显存极低(7B 只需 ~6GB)、效果接近 LoRA
缺点:训练速度略慢(量化开销)
适用:消费级 GPU、大模型微调
配置示例: ```python from transformers import BitsAndBytesConfig
bnb_config = BitsAndBytesConfig( load_in_4bit=True, # 4-bit 量化 bnb_4bit_quant_type="nf4", # Normal Float 4 bnb_4bit_compute_dtype="bfloat16", # 计算精度 bnb_4bit_use_double_quant=True, # 双重量化(省更多显存) ) ```
4.4 DoRA (Weight-Decomposed LoRA)
LoRA 的升级版,将权重分解为幅度 (magnitude) 和方向 (direction) 分别适配。
优点:比 LoRA 更高的表达能力,更接近全量微调
缺点:稍高的显存需求
适用:需要高质量但不想全量微调的场景
4.5 其他方法
| 方法 | 特点 | 适用场景 |
|---|---|---|
| Adapter | 在层间插入小模块 | 多任务学习 |
| Prompt Tuning | 只训练 prompt embedding | 极低成本分类 |
| Prefix Tuning | 训练前缀向量 | 轻量任务 |
| IA³ | 缩放激活而非权重 | 极低参数更新 |
5. 数据工程
5.1 数据格式
指令微调 (SFT) 格式:
json
{
"messages": [
{"role": "system", "content": "系统提示"},
{"role": "user", "content": "用户输入"},
{"role": "assistant", "content": "助手回复"}
]
}
偏好对齐 (DPO/ORPO) 格式:
json
{
"prompt": "用户输入",
"chosen": "好的回复",
"rejected": "不好的回复"
}
5.2 数据量建议
| 任务类型 | 最低有效量 | 推荐量 | 高质量上限 |
|---|---|---|---|
| 格式适配 | 50 | 200 | 1K |
| 领域术语 | 200 | 1K | 5K |
| 指令跟随 | 1K | 5K | 50K |
| 偏好对齐 | 200 | 1K | 10K |
| 代码生成 | 2K | 10K | 100K |
| Agent 能力 | 5K | 20K | 200K |
5.3 数据质量原则
质量 >>> 数量
1000 条高质量数据 > 10000 条低质量数据
质量检查清单: - [ ] 指令清晰无歧义 - [ ] 回复准确且完整 - [ ] 格式一致 - [ ] 无重复/近似重复 - [ ] 覆盖各种场景(边界情况、异常输入) - [ ] 语言/术语与目标场景一致 - [ ] 长度分布合理(不要太短或太长)
5.4 数据增强技巧
# 1. 重写 (用 LLM 改写指令)
def rephrase(instruction):
prompt = f"用不同方式表达以下指令,保持含义不变:\n{instruction}"
return llm_generate(prompt)
# 2. 多语言翻译 (回译)
def back_translate(text):
return translate(text, "zh→en→zh")
# 3. 模板变体
templates = [
"请{action}",
"帮我{action}",
"我需要你{action}",
"{action},谢谢",
]
5.5 数据划分
训练集 (80%) → 模型学习
验证集 (10%) → 调参和早停
测试集 (10%) → 最终评估(仅用一次)
6. 训练策略
6.1 推荐训练路线
路线 A:标准流程(大多数场景)
预训练模型 → SFT (LoRA/QLoRA) → DPO/ORPO (可选)
│
▼
领域适配模型
路线 B:推理增强(数学/代码/Agent)
预训练模型 → SFT (含推理链数据) → GRPO (推理强化)
│
▼
推理增强模型
路线 C:低成本快速验证
预训练模型 → QLoRA SFT (少量数据) → 评估
│
▼
验证 pipeline 后再决定是否投入更多资源
6.2 学习率策略
Warmup 阶段 Cosine Decay 阶段
↑ ↓
│ ╱╲ │
│ ╱ ╲ │
│ ╱ ╲ │
│ ╱ ╲ │
│╱ ╲ │
└──────────╲───────────────→ Steps
╲ ↓
╲───────────→ 接近 0
| 微调方法 | 推荐学习率 | 说明 |
|---|---|---|
| Full FT | 1e-5 ~ 5e-5 | 小学习率,避免破坏预训练知识 |
| LoRA | 1e-4 ~ 5e-4 | 可较大,因为只更新少量参数 |
| QLoRA | 1e-4 ~ 3e-4 | 与 LoRA 类似 |
| DPO | 5e-7 ~ 5e-6 | 非常小,避免过度优化偏好 |
| ORPO | 5e-7 ~ 1e-5 | 小学习率 |
| GRPO | 5e-7 ~ 1e-6 | 极小学习率 |
6.3 显存优化技术
| 技术 | 效果 | 说明 |
|---|---|---|
| 4-bit 量化 | 节省 75% 显存 | QLoRA 核心 |
| 梯度累积 | 等效增大 batch | 分批计算梯度后更新 |
| 梯度检查点 | 节省 40~60% | 以时间换空间 |
| DeepSpeed ZeRO | 多卡高效并行 | 分片优化器/梯度/参数 |
| Flash Attention | 加速 2~3x | 高效注意力实现 |
| Offloading | CPU 分担 | 将部分数据移到 CPU |
6.4 多卡训练
# DeepSpeed + LoRA (推荐)
accelerate launch --config_file deepspeed_config.yaml \
train.py \
--deepspeed ds_config.json
# deepspeed_config.json 核心配置
{
"zero_optimization": {
"stage": 3, // ZeRO-3: 最优显存效率
"offload_optimizer": {
"device": "cpu" // CPU offload 优化器
},
"offload_param": {
"device": "cpu" // CPU offload 参数
}
},
"bf16": {"enabled": true},
"gradient_accumulation_steps": 4
}
7. 评估与验证
7.1 训练监控指标
| 指标 | 含义 | 健康信号 | 警告信号 |
|---|---|---|---|
| Train Loss | 训练损失 | 持续下降 | 不下降→学习率过大 |
| Eval Loss | 验证损失 | 持续下降 | 上升→过拟合 |
| Learning Rate | 当前学习率 | 按 schedule 衰减 | 异常波动 |
| Grad Norm | 梯度范数 | 稳定在 0.1~10 | >100→梯度爆炸 |
| Perplexity | 困惑度 | 持续下降 | 平台期→需调整 |
7.2 评估方法
自动评估: ```python
LLM 任务
- MMLU / GSM8K / HumanEval(基准测试)
- BLEU / ROUGE(文本生成质量)
- Exact Match(精确匹配)
自定义评估
def evaluate(model, test_data): correct = 0 for item in test_data: response = model.generate(item["prompt"]) if matches(response, item["expected"]): correct += 1 return correct / len(test_data) ```
人工评估: - 随机抽样 50-100 条测试输出 - 盲评:不知道是基座还是微调模型 - 多维度评分:准确性、格式、流畅度、有用性
7.3 过拟合检测
正常训练: 过拟合:
Train Loss: ↓ Train Loss: ↓↓↓
Eval Loss: ↓ Eval Loss: ↓ 然后 ↑
─────┬─────
这里就该停止
应对过拟合: 1. 早停 (Early Stopping) 2. 增加 Dropout 3. 减小 LoRA rank 4. 增加训练数据 5. 降低学习率
8. 部署与推理
8.1 模型合并
# 将 LoRA 权重合并到基座模型
from transformers import AutoModelForCausalLM
from peft import PeftModel
# 方法 1:运行时加载(推荐,灵活)
base = AutoModelForCausalLM.from_pretrained("base-model")
model = PeftModel.from_pretrained(base, "lora-weights")
# 方法 2:合并后保存(推理更快)
model = model.merge_and_unload()
model.save_pretrained("merged-model")
8.2 量化部署
# GGUF (llama.cpp / Ollama)
# 转换命令:
python convert-hf-to-gguf.py model/ \
--outfile model-Q4_K_M.gguf \
--outtype q4_k_m
# 量化级别对比
| 格式 | 大小 (7B) | 质量损失 | 推荐场景 |
|------|-----------|----------|----------|
| FP16 | 14 GB | 无 | 服务器 |
| Q8 | 7.5 GB | 极小 | 高质量需求 |
| Q4_K_M | 4.2 GB | 小 | 平衡选择 |
| Q4 | 3.8 GB | 中 | 资源受限 |
| Q2 | 2.2 GB | 大 | 极限压缩 |
8.3 推理服务
# vLLM (推荐,吞吐最高)
vllm serve ./merged-model \
--port 8000 \
--max-model-len 8192 \
--gpu-memory-utilization 0.9
# Ollama (最简单)
ollama create my-model -f Modelfile
ollama run my-model
# TGI (HuggingFace)
docker run --gpus all \
-p 8080:80 \
-v ./merged-model:/data/model \
ghcr.io/huggingface/text-generation-inference \
--model-id /data/model
9. 各模型微调速查表
LLM
| 模型 | 推荐方法 | 最低显存 | 关键参数 |
|---|---|---|---|
| Qwen 2.5-7B | QLoRA + SFT + DPO | 8 GB | r=64, lr=2e-4 |
| Qwen 2.5-72B | QLoRA + SFT | 48 GB | r=32, lr=1e-4 |
| LLaMA 3.1-8B | LoRA + SFT + ORPO | 6 GB | r=32, lr=2e-4 |
| LLaMA 3.1-70B | QLoRA + SFT | 40 GB | r=32, lr=1e-4 |
| Gemma 4-31B | QLoRA + SFT + DPO | 20 GB | r=32, lr=2e-4 |
| Qwen3.6-35B-A3B | QLoRA + SFT | 24 GB | r=32, lr=1e-4 |
| DeepSeek-V3.2 | QLoRA + SFT + GRPO | 多卡 | r=32, lr=1e-4 |
| Mistral-7B | QLoRA + SFT + DPO | 6 GB | r=32, lr=2e-4 |
| GLM-4-9B | LoRA + SFT + DPO | 7 GB | r=32, lr=2e-4 |
多模态
| 模型 | 推荐方法 | 最低显存 | 关键参数 |
|---|---|---|---|
| Qwen2.5-VL-7B | LoRA + SFT | 16 GB | r=32, lr=1e-4 |
| InternVL2.5-8B | LoRA + SFT | 16 GB | r=16, lr=2e-4 |
| LLaVA-OV-7B | LoRA + SFT | 14 GB | r=16, lr=2e-4 |
| MiniCPM-V-2.6 | LoRA + SFT | 10 GB | r=16, lr=2e-4 |
代码
| 模型 | 推荐方法 | 最低显存 | 关键参数 |
|---|---|---|---|
| Qwen2.5-Coder-7B | LoRA + SFT | 14 GB | r=32, lr=2e-4 |
| DeepSeek-Coder-V2-Lite | QLoRA + SFT | 12 GB | r=32, lr=1e-4 |
| CodeLlama-7B | QLoRA + SFT | 6 GB | r=16, lr=2e-4 |
| StarCoder2-7B | QLoRA + SFT | 6 GB | r=16, lr=2e-4 |
图像生成
| 模型 | 推荐方法 | 显存 | 关键参数 |
|---|---|---|---|
| FLUX.1-schnell | LoRA (Kohya_ss) | 24 GB | r=16, lr=1e-4 |
| SD 3.5 Large | LoRA | 24 GB | r=32, lr=1e-4 |
| Kolors | LoRA | 16 GB | r=16, lr=1e-4 |
| PixArt-Sigma | LoRA | 8 GB | r=16, lr=1e-4 |
语音
| 模型 | 推荐方法 | 显存 | 关键参数 |
|---|---|---|---|
| CosyVoice-300M | SFT | 4 GB | - |
| F5-TTS | SFT | 8 GB | - |
| Whisper-large-v3 | LoRA + SFT | 10 GB | r=32, lr=1e-4 |
Embedding
| 模型 | 推荐方法 | 显存 | 关键参数 |
|---|---|---|---|
| BGE-M3 | 对比学习 | 8 GB | lr=1e-5 |
| GTE-Qwen2-1.5B | 对比学习 | 6 GB | lr=1e-5 |
| Nomic-embed-text | 对比学习 | 2 GB | lr=1e-5 |
| E5-Mistral-7B | LoRA + 对比学习 | 16 GB | r=16, lr=1e-5 |
10. 常见问题与排障
10.1 OOM (显存溢出)
Error: CUDA out of memory
解决方案(按优先级):
1. 降低 batch_size (→ 1)
2. 增大 gradient_accumulation_steps
3. 使用 QLoRA (4-bit)
4. 降低 max_seq_length
5. 启用 gradient_checkpointing
6. 使用 DeepSpeed ZeRO-3
7. CPU offload (offload_optimizer/device=cpu)
8. 换更大显存的 GPU
10.2 Loss 不下降
可能原因:
1. 学习率过大 → 降低 10x
2. 学习率过小 → 增大 10x
3. 数据格式错误 → 检查 tokenization
4. 标签/目标错误 → 检查数据标注
5. 模型未正确加载 → 检查 from_pretrained
10.3 输出质量差
排查顺序:
1. 检查训练数据质量(最重要!)
2. 增加训练 epoch
3. 增大 LoRA rank
4. 检查是否过拟合
5. 尝试不同的基座模型
6. 添加 DPO 偏好对齐
10.4 训练后模型"变傻"
灾难性遗忘 - 原因:
- 微调数据太少或太单一
- 学习率过大
- 训练轮数过多
解决方案:
1. 混合通用数据(20% 微调数据 + 80% 通用)
2. 降低学习率
3. 减少 epoch
4. 降低 LoRA rank
5. 使用 DoRA 代替 LoRA
10.5 微调后和原模型相比,会出现哪些"差距"
这里的"差距"按两个方向拆:会变好的地方、可能变差的地方。因为最常见的是 LoRA/QLoRA on 特定任务数据,以它为基准讨论。
预期变好
- 目标任务表现显著提升:比如你拿客服对话、代码翻译、行业文档 QA 来训,在这类分布内的 prompt 上,准确率/格式遵循/风格一致性通常肉眼可见提升。
- 输出格式稳定:原模型有时需要 few-shot 才能稳稳输出 JSON/Markdown/某种模板,微调后可以 zero-shot 稳定产出。
- 行业术语 / 私有知识映射:对训练数据里反复出现的专有名词、内部代号、风格要求,回答会更"像自己人"。
- 减少长篇啰嗦:如果训练样本较简洁,模型会更守规矩、不再"加戏"。
预期会变差(要提前评估)
- 通用能力回退(catastrophic forgetting):MMLU/代码/通用数学一般会掉 1–5 分,视数据量和训练强度。LoRA 比全参数 SFT 损失小,但不是零。
- 思考模式弱化:Qwen3 的
... 思考链默认是开的;如果你的训练数据里没有保留思考段,LoRA 之后 enable_thinking=True 可能几乎不再产生思考内容,或者思考内容质量塌掉。 - 多语言 / 低频语言能力下降:如果你只用中文训,英文回答可能变"带中式结构"。反之亦然。
- 安全对齐漂移:原模型的拒答/免责话术可能被覆盖,某些原本会拒的请求变得直接回答了;反过来也可能过度拒答。上线前要做一轮安全回归。
- 幻觉的再分布:域内幻觉通常下降,域外幻觉往往上升——模型变得"更自信"地给出它其实不确定的答案。
- 聊天模板敏感:Qwen3 有严格的 <|im_start|> ... <|im_end|> 模板,微调时必须保持完全一致(含 system/assistant 头),不然推理阶段效果会非常诡异,有时表面上还好,但一上长对话就崩。
- 随机性/解码参数的甜点区改变:原来 temperature=0.7, top_p=0.8 好用,微调后可能需要重新调。
- 对推理工程的影响
- LoRA 不合并(adapter 单独存放):本体仍是 bf16 基座,推理显存和吞吐 与原模型一致;transformers + peft 加载时多一层 PeftModel.from_pretrained。
- LoRA 合并后保存为新权重:体积和原模型几乎相同(~27.5 GiB bf16),推理路径与原模型等价,没有额外代价。
- 4-bit QLoRA 推理:体积小(8 GiB 量级)、速度快,但相比 bf16 原模型,困惑度会轻微上升,在简单任务上几乎看不出,在复杂数学/长代码任务上会有可观下降。
- 建议的"对比评测"清单
微调完之后,建议至少过这 5 类 prompt,把原模型和微调模型并排跑一次:
- 目标任务(你最想优化的真实场景,20–50 条)——看核心收益。
- 通用知识/推理(MMLU 小样本、GSM8K 几题、代码两三段)——看通用退化。
- 多语言 / 跨语言(英中混合、翻译、代码注释)——看是否语言漂移。
- 格式/长度控制("只用 JSON","≤50 字")——看模板稳定性。
- 安全/拒答(一些对抗性 prompt)——看对齐是否漂移。
这样才能量化"它到底变好了多少、付出了什么代价"。
一句话总结:M4 Pro + 48 GB 这台机器,用 transformers 跑 Qwen3-14B 推理可以,但建议换成 mlx-lm 或 llama.cpp 的 4-bit 版更实用;本机做像样的微调不现实,最务实路线是 mlx-lm LoRA(轻量实验)或云上 GPU LoRA(认真训),然后把权重(或 adapter)拉回来在本地做推理和评测。
10.6 常见报错
| 报错 | 原因 | 解决 |
|---|---|---|
CUDA error: device-side assert |
数据/标签越界 | 检查词表大小和数据格式 |
RuntimeError: mat1 and mat2 shapes |
LoRA target_modules 错误 | 检查模块名是否匹配 |
ValueError: Unknown label type |
数据标签格式错误 | 检查 label 编码 |
OutOfMemoryError |
显存不足 | 降低 batch size / 使用 QLoRA |
NaN in gradient |
学习率过大 | 降低学习率,检查数据 |
11. 最佳实践清单
开始前
- [ ] 明确微调目标(格式?风格?领域知识?)
- [ ] 评估是否真的需要微调(Prompt / RAG 能否解决?)
- [ ] 选择合适的基座模型
- [ ] 准备至少 500+ 条高质量训练数据
训练阶段
- [ ] 先跑通小实验(100 条数据,1 epoch)验证 pipeline
- [ ] 使用 QLoRA 开始(最低显存需求)
- [ ] LoRA rank 从 16 开始,不够再加到 32/64
- [ ] 监控 train loss 和 eval loss
- [ ] 每轮保存 checkpoint
- [ ] 使用独立验证集评估,不要只看训练损失
评估阶段
- [ ] 在测试集上评估(训练时未使用的数据)
- [ ] 人工抽查 50+ 条输出
- [ ] 与基座模型对比效果
- [ ] 检查过拟合迹象
部署阶段
- [ ] 合并 LoRA 权重(推理更快)
- [ ] 量化部署(Q4_K_M 是性价比最优)
- [ ] 测试推理延迟和吞吐
- [ ] 建立监控和反馈机制
持续优化
- [ ] 收集 bad case,补充到训练数据
- [ ] 定期重新训练
- [ ] A/B 测试新旧模型
- [ ] 记录实验配置和结果(版本管理)
附录:工具链推荐
| 用途 | 推荐工具 |
|---|---|
| 训练框架 | HuggingFace TRL, Axolotl, LLaMA-Factory |
| 数据处理 | datasets, pandas, polars |
| LoRA 训练 | PEFT + TRL, Kohya_ss (图像) |
| 多卡训练 | DeepSpeed, Accelerate |
| 推理服务 | vLLM, SGLang, Ollama, TGI |
| 量化 | bitsandbytes, llama.cpp (GGUF), AWQ |
| 评估 | lm-eval, OpenCompass |
| 可视化 | WandB, TensorBoard |
| 实验管理 | MLflow, Weights & Biases |
推荐阅读顺序
- 新手入门:本文档 → Qwen 2.5 (最全面的示例)
- 中文场景:GLM-4 或 Qwen3.6-35B-A3B
- 代码任务:Qwen2.5-Coder
- 多模态:Qwen2.5-VL
- 图像生成:FLUX.1
- 语音任务:CosyVoice
Page Source