LoRA 微调入门
不花几百万、不需要数据中心——在消费级显卡上把通用大模型调成你想要的"专科医生"。
全量微调为什么贵
一个 7B 参数的模型,全量微调需要在训练过程中更新所有 70 亿个数字。存储一份 7B 模型的副本、加上优化器状态、加上梯度,显存占用通常要 60 GB 到 100 GB,远超消费级显卡的 12 GB 到 24 GB。这还没算训练时间——把 7B 模型在几十万条数据上微调一遍,用 8 张 A100 也要跑两三天。整个行业的共识是:除了少数大公司,全量微调已经不是常规选项。
LoRA 的核心想法
LoRA(Low-Rank Adaptation)的观察是:模型适配新任务时,真正需要改的"方向"很少。它不在原模型的参数上动刀,而是给每一层"并联"一对很小的可训练矩阵(秩通常 8 到 64),让模型在保持原有能力的同时学会新东西。训练时只更新这对小矩阵,原模型完全冻结。结果是:可训练参数从 70 亿降到几千万,显存需求从 80 GB 降到 12 GB 一张消费级显卡就能跑,训练时间从几天压缩到几小时。
一次微调要花多少成本
工具链已经非常成熟:Hugging Face 的 transformers 加载模型,peft 库加 LoRA 适配器,trl 库跑 SFT(监督微调),bitsandbytes 库做 4-bit 量化进一步降显存。1 万到 5 万条指令数据、在一张 RTX 4090 或 A10 上微调 7B 模型通常 2 到 6 小时,电费几百到上千元。QLoRA 进一步把基座量化到 4-bit,12 GB 显存也能微调 13B 模型。数据准备的耗时通常远大于训练本身。
什么时候该微调,什么时候不必
先尝试提示词工程和 RAG:用更好的提示词或把领域资料喂给模型,往往就能解决 80% 的问题。只有当(1)模型必须严格按某种格式输出(JSON Schema、固定话术)、(2)必须学会某个小众领域的术语和惯例、(3)必须内化某种风格或语气时,才考虑微调。微调的优势是"内化",缺点是"遗忘"——模型可能在新数据上变好、在旧任务上变差。准备几百条高质量、有代表性的样本,比一万条随机抓取更有效。
虫鱼的AI万花筒