训练GPT-3需要多少钱?答案是:一家创业公司烧不起,一个博士生玩不起。1750亿参数,全量微调每一步都要更新全部权重,多块A100显卡才能塞下模型,几个epoch跑下来就是几千美元。
但微调后的模型确实更强。问题很现实:性能提升是真的,成本门槛也是真的。
![]()
LoRA(低秩适配)解决了这个矛盾。它不再碰那1750亿参数,而是往特定权重矩阵里塞小型可训练适配器,其余全部冻结。适配器小到只有总参数的0.1%,训练成本直接砍掉四个零——1万倍。一块消费级显卡就能跑,效果却逼近全量微调。
![]()
为什么非得微调?预训练模型懂语法、事实、推理、编程、翻译、摘要,这些是从万亿token里学来的。但它不懂你们公司的写作风格,不懂你们领域的专业术语,不懂你想要的输出格式,不懂你们特有的提示模式。微调的本质是:通用知识保留,特定行为适配。
常见微调方式有几种。全量微调更新所有参数,效果最好,成本最高。指令微调用(指令,回复)对训练,教模型听话。LoRA冻结99%参数,最实用。QLoRA是LoRA加4位量化,单卡可跑。前缀微调学习软提示拼在输入前,不改权重。适配器层插入小型瓶颈层,和LoRA思路相近但更早。
LoRA的数学很简洁。现有权重矩阵W,加上低秩矩阵B和A的乘积再缩放:W' = W + (B @ A) × scaling。只训A和B,W完全不动。秩通常设8,alpha设16,初始化A用kaiming_uniform,B置零。
代码层面,用Hugging Face的PEFT库几行就能搞定。定义LoraConfig,指定任务类型、秩、alpha、目标模块,get_peft_model包装原模型,之后训练和常规流程没区别。保存时只存适配器权重,几百MB;加载时原模型加适配器合并,推理速度和原模型一样。
QLoRA更进一步,把模型量化到4位,用双量化压缩优化器状态,分页优化器处理显存峰值。效果呢?70B模型能在单张24GB显卡上微调,达到全量微调16位训练的99.3%表现。
![]()
实际选什么?数据少、任务简单,提示工程就够了。数据几千条、任务特定,LoRA是甜点。要榨干最后一点性能,数据又够多,才考虑全量微调。QLoRA是LoRA的默认加强版,除非显卡特别大。
微调不是万能药。它教的是格式和风格,不是新事实——知识截止后的事它依然不知道。它也可能过拟合,在训练数据上表现好,泛化差。最危险的是对齐税:微调特定任务可能损害通用能力,模型变"偏科生"。
评估要盯紧几个指标。训练损失下降是基本,验证损失不上升才算没过拟合。下游任务指标最关键, Rouge分、准确率、F1,看具体任务要什么。人工看输出质量,往往比数字更准。
未来方向已经显现。DoRA把权重分解为幅度和方向,只微调方向,更稳定。LoRA-FA冻结A只训B,减少显存。MoE-LoRA给专家混合模型每层配多个LoRA,路由动态选。这些变体在特定场景各有优势,但核心思路一致:大模型不动,小模块适配。
从1750亿参数全部更新,到0.1%参数增量训练,微调技术的演进路线很清晰:用更聪明的参数效率,降低门槛,保留性能。这不是妥协,是工程上的重新设计。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.