跳到内容

进阶★★★★★11 分钟阅读

用 LoRA 在本机微调 Llama 3 70B

在 2026 年自己用本机微调 70B 模型,实际需要的硬件、数据、超参数。

登入以收藏

两年前在家里微调 70B 参数模型还是科幻情节。2026 年,有了 QLoRA、FlashAttention-3、出货 48GB VRAM 的消费级 GPU,这是个周末就做得完的项目 —— 只要你有耐心搞懂各个零件。

这篇是端到端实务。需要什么硬件、数据格式、实际能跑的超参数值,以及如果你不被警告会吃掉周末的失败模式。

目标:拿 Llama 3.3 70B Instruct,用 LoRA 适配到你的领域(法律、医疗、客服、什么都好)。最后会拿到一个小 adapter 文件(~200MB),推理时挂回 base model 上。

硬件:实际需要什么

2026 年 QLoRA 70B 的诚实最低需求:

  • GPU: 1× NVIDIA RTX 5090(32GB)或 1× RTX 6000 Pro Blackwell(96GB)。5090 只能跑 QLoRA 而且很紧。6000 Pro 是舒服选项,full LoRA 跟长序列都跑得动。
  • 内存: 系统 RAM 至少 64GB。128GB 在 data loading 时顺很多。
  • 硬盘: base model checkpoint、数据集、中间 checkpoint 加起来要 250GB 空闲,强烈建议 NVMe。
  • OS: Linux(Ubuntu 24.04 最佳)。WSL2 能用但性能掉 10-20%。Windows 原生 —— 别试。

没硬件:RunPod 租 A100 80GB 约 $1.50/hr,H100 约 $2.50/hr。70B 微调在 H100 上一般跑 4-12 小时,总成本 $10-30。

数据集:格式跟大小

第一次微调最常犯的错:数据不够,或格式错。

格式。 2026 标准是 JSONL,每行一个 messages 数组,OpenAI 风格:

{"messages": [{"role": "system", "content": "..."}, {"role": "user", "content": "..."}, {"role": "assistant", "content": "..."}]}

一行一个 example。Axolotl 跟 Unsloth 直接吃这个格式。

大小。 经验法则:

  • 100 个 example:够教模型「风格」(输出格式、语气),不够教新知识。
  • 1,000 个:够做窄任务适配(分类、抽取、结构化输出)。
  • 10,000 个:真领域专业,模型在真测试题上明显不同。
  • 100,000+ 个:边际效益对策展成本越来越差。

第一个项目,1,000-3,000 个高质量 example 永远赢 50,000 个普通的。

质量比数量重要。 1,000 个人工策展的好答案,教模型的东西远多于 50,000 个 LLM 生成、看起来都微妙地一样的 example。

2026 工具链

四个东西:

  • Unsloth(独立开发者推荐)。比 vanilla transformers 快两倍、VRAM 更低、LoRA 文档齐全。2026 年的首选食谱。
  • Axolotl(认真工作推荐)。配置更弹性、支持更多架构、适合 production 团队。
  • PEFT(HuggingFace)。底下两个用的 LoRA / QLoRA 实作都靠它。
  • bitsandbytes。QLoRA 用的 4-bit 量化。

本文用 Unsloth。

重要的超参数

70B LoRA 实际能跑的值:

  • LoRA rank(r): 窄任务用 16,广域适配用 32 或 64。越高 = 容量越大、VRAM 越多、训练越慢。从 16 开始。
  • LoRA alpha: rank 的 2 倍。r=16 就 alpha=32。控制 LoRA 更新的缩放。
  • 目标模块: q_projk_projv_projo_projgate_projup_projdown_proj(所有 linear 层)。2024 年的指南只训 attention,2025+ 研究显示 MLP 也训会明显提升。
  • Learning rate: LoRA 用 2e-4,QLoRA 用 1e-4。loss 爆掉就减半,loss 一直平就加倍试一次。
  • Batch size: 每张 GPU 1,gradient_accumulation_steps 设 8-16。等效 batch size 8-16 是甜蜜点。
  • Epochs: 1-3。小数据集跑太多 epoch = overfit。盯 eval loss,不掉了就停。
  • Max seq length: 从 2048 开始,越长 VRAM 越多。数据需要才加。
  • Warmup steps: 总步数 5-10%,避免一开始 loss 爆冲。

跑起来长什么样

2,000 个 example 的 Llama 3.3 70B QLoRA 微调,单张 H100:

  • VRAM 峰值:约 62GB。
  • 每 epoch 时间:约 80 分钟。
  • 总墙钟时间(3 epoch + checkpoint):约 5 小时。
  • 最终 adapter 大小:250MB。
  • Train loss 起点 1.4,终点 0.6;Eval loss 终点 0.7。

Loss 数字是参考 —— 真正重要的是模型在你真实测试 prompt 上的行为有没有变。

怎么知道真的有用

不要相信 loss 曲线。准备一份 30-50 个没拿去训练的 hold-out 测试集,把 base model 跟微调后的模型输出并排比较。如果在你的真实领域上微调版本没有「肉眼可见」变好,问题就是数据集,不是训练。

要看的东西:

  • 有没有一致地照你的输出格式?
  • 有没有正确使用你领域的词汇?
  • 有没有忘了怎么做别的事(catastrophic forgetting)?如果连基本数学都不会了,代表数据太窄。
  • 跑通用 benchmark(HellaSwag、MMLU 抽样 200 题)before / after 比一下,抓 regression。

Catastrophic forgetting 跟怎么避免

LoRA 部分缓解了这个 —— base 权重没被动 —— 但推理时 adapter 合并后,跟你微调集差异大的任务还是可能 regression。

缓解:

  • 混入通用数据。 训练数据 10-20% 应该是通用 instruction-following 数据(Tulu、OpenAssistant 抽样),保留广域能力。
  • 降低 rank。 rank 越高 = 适配越激进 = forgetting 风险越大。窄任务 r=16 比 r=64 安全。
  • 不要过训。 盯 eval loss,不掉了就停。

什么时候不该微调

大部分「我应该微调这个」的直觉都是错的。先试这些:

  • 更好的 prompt。 大部分窄任务的提升来自 system prompt 里的 few-shot example,通常免费。
  • RAG。 如果问题是「模型不知道我的数据」,95% 的时候 RAG 才是答案。微调不可靠地教事实,它教行为。
  • 更大的前沿模型。 如果 Claude 4.7 Opus 或 GPT-5 已经能做你要的事,成本效益通常赢自架微调 70B。

微调时机:(a) 你需要 prompt 强制不了的一致输出格式,(b) 隐私 / 合规理由要把权重留在本地,(c) prompt 在你特定任务上撞质量天花板而且你有数据能突破。

上线部署

adapter 训好之后两条路:

  • 把 adapter 合并进 base 权重。 单一合并模型,部署最简单。失去切换 adapter 的能力。
  • adapter 分开放,推理时载入。 vLLM 跟 TGI 等框架支持这个,可以放一个 base model,每次请求换 adapter。

2026 年要 serving,vLLM + 合并模型是 production 级选择。Self-host vLLM 有专文。

下一步

  • Unsloth GitHub 范例目录。
  • QLoRA: Efficient Finetuning of Quantized LLMs(Dettmers et al, 2023)。
  • DoRA: Weight-Decomposed Low-Rank Adaptation —— 2024 LoRA 后继,质量略好。
  • 查这些词:catastrophic forgetting、parameter-efficient fine-tuning、LoRA vs DoRA、axolotl config 范例。

最后更新: 2026-04-29

We use cookies

Anonymous analytics help us improve the site. You can opt out anytime. Learn more

用 LoRA 在本机微调 Llama 3 70B · BuilderWorld