跳到主要内容

大模型微调与部署面经

大模型工程化

1. 微调方法对比

方法参数量显存需求效果适用场景
Full Fine-tuning全量极高(需多卡)最好资源充足
LoRA极少(0.1-1%)较好最常用
QLoRA极少极低(量化基座)接近 LoRA消费级 GPU
Prefix Tuning一般特定任务
Prompt Tuning极少极低较差资源极少

LoRA 原理

原始权重 W(冻结)
低秩矩阵 ΔW = B × A(可训练,rank << d)
实际前向:h = Wx + BAx
  • rank 通常取 4-64,越大效果越好但参数越多
  • 推理时可将 BA 合并回 W,无额外推理开销

2. 训练数据准备

数据格式(Instruction Tuning)

{
"instruction": "将以下英文翻译成中文",
"input": "Hello, world!",
"output": "你好,世界!"
}

数据质量胜过数量

  • 1000 条高质量 > 10000 条低质量
  • 去重(MinHash)、过滤(困惑度/规则)、多样性保证
  • Alpaca / ShareGPT / LIMA 格式是常见开源数据集格式

RLHF 流程

1. SFT(监督微调):在高质量数据上微调
2. Reward Model 训练:让人类对输出排序,训练奖励模型
3. PPO 强化学习:用奖励模型优化策略,对齐人类偏好

DPO(Direct Preference Optimization):绕过 RM 直接从偏好数据优化,更简单稳定

3. 模型量化

量化方式精度损失速度提升内存节省
FP16 / BF16极小2x2x
INT8(LLM.int8)1.5-2x4x
INT4(GPTQ/AWQ)2-4x8x
GGUF(llama.cpp)可选CPU 可用8-16x
  • GPTQ:后训练量化,逐层校准,精度好
  • AWQ:激活感知量化,保留重要权重精度
  • GGUF:llama.cpp 格式,支持 CPU 推理和混合量化

4. 推理优化

KV Cache

  • 缓存已计算的 Key/Value,避免重复计算历史 token
  • 内存瓶颈:长上下文时 KV Cache 可达数十 GB
  • 优化:PagedAttention(vLLM)、滑动窗口、GQA(分组查询注意力)

推理框架

框架特点
vLLMPagedAttention,高吞吐,连续批处理
TGI(HuggingFace)生产就绪,流式输出
Ollama本地部署,易用
llama.cppCPU 推理,量化支持好
TensorRT-LLMNVIDIA 优化,极致性能

5. 部署架构

用户请求

API Gateway(认证/限流)

Load Balancer

推理服务集群(vLLM / TGI

GPU 实例(A100 / H100 / L40S

+ Prompt Cache 层(Redis)
+ 模型版本管理(MLflow)
+ 监控(Prometheus + Grafana)

6. 高频面试题

  • LoRA 的 rank 怎么选? 从小到大实验,数据少 rank 小(4-8),数据多任务复杂 rank 大(32-64)
  • 微调后模型为什么会遗忘原有能力? 灾难性遗忘,解决:混合原始数据、降低学习率、使用 LoRA
  • 如何估算微调所需显存? 模型参数 × 精度(FP16=2字节)× 3(模型+梯度+优化器状态)+ 激活值
  • vLLM 为什么快? PagedAttention 消除 KV Cache 碎片化 + 连续批处理(Continuous Batching)提高 GPU 利用率
  • 如何做模型 A/B 测试? 流量分配 + 统一评估指标 + 足够样本量保证统计显著性