你没看错,消费级卡也能微调出可商用的行业垂直模型了,且在行业测试数据集上,效果能超过满血版DeepSeek-R1 671B模型,花费只需20元人民币。这是我们最近在4090训推平台上,支持一个医疗行业创业客户取得的成果。是真实且正在商用的案例。
这是微调接近最终版之前的一个打分对比记录:
为什么要用 RTX 4090 来做模型微调呢,主要当然是成本的原因。4090可比训练常用的A800、H100等大卡便宜太多了。中小创业公司,不太可能直接购买大卡,那会是一笔巨大的支出。而租用的话,大卡一般要包月租用,对于中小公司来说,费用还是太高了。关键是想用的时候未必就能租的到。即使租到了,微调过程算力往往是用用停停,不可能那么顺利一口气跑完就结束了。中间会有大量的测试验证和调整,算力也就有大量的闲置,白白浪费资源不划算。即使能按量付费来租,中间的闲置时间,你是退呢还是不退呢?退了可能就再租不到了,且数据倒腾起来也麻烦;不退吧,还不如包月划算。还有在刚进入大模型这个领域的时候,微调训练到底能不能提升模型在本专业领域的能力,还是个未知数。值不值得投入大卡去训练,去摸索,要打个很大的问号。但是用4090,就不会有这些成本焦虑了,尽管用就好了。况且在还没有摸索出清晰路径的情况下,难道不是应该用最小的成本去试错吗?
其次在推理方面,4090仍然是目前小尺寸模型性价比最高的选择。要控制推理成本,最好是能把模型做小到能在4090上跑起来。这样才能有大规模承接线上流量的可能性。那么如果在 4090 上同时也能跑通微调,这样在同一个环境下就能完成微调到推理的闭环了。不需要来回折腾数据和模型文件,能大大加快试错迭代的步骤,简直完美。
所以我们最终选择就在 4090 上来探索这个事情。这也是贝联云封装的4090推理训练一体化平台的目标。当在4090上完成探索,取得确定性的微调路径后,可以再考虑用更大的卡,更高的精度来训练。这就避免了在摸索阶段就去投入巨大且不确定的成本。这不失为一种更稳妥可靠的策略,可以最低成本来探索垂直模型的可行性。
那为什么选择32B的基础模型呢? 因为从 DeepSeek-R1 的论文,以及大家后面的使用体感来看,32B尺寸的模型,是性价比最高的。所以很多复现 R1 的项目,比如李飞飞的S1,字节和清华合作的 DAPO 等,都是优先选择的 32B 尺寸。而且32B尺寸也是4090上能跑起来,包括能训练起来的最大尺寸的模型了。
为了能在 4090 上微调32B的模型,我们采取了如下组合:
- 用了 unsloth 训练引擎。unsloth 很好的结合了动态量化、Triton 优化内核与 LoRA 集成,并提供了方便的 SDK 封装。
- 训练时用 4bit 加载基础模型。通过非对称 4bit 量化将原始 FP32/FP16 权重压缩至 4bit 存储,结合分块量化和动态反量化机制,可以节约 75% 显存且能保持很小的误差。
- 开启 lora 微调, lora rank为32; 通过 lora 技术冻结原始模型参数,仅训练秩分解矩阵,大大节约了算力和显存占用量。
以上组合能大大节省训练中的显存开销,使得对32B基础模型的监督微调,能在24G显存的4090卡上稳定运行。
具体方法在这篇 单卡4090微调DeepSeek-R1-32B 中有描述。这篇发布后,很多人评价微调没有什么用,尤其是用量化微调效果难以保证。也确实自己测试的微调结果,很难去评估变好了还是变坏了。但是这次在客户的真实商用场景下,客户组织医疗专家进行了人工评估,那就很有说服力了。训练出来的模型 大小仍然保持 32B, 并且做了INT8量化,推理效果在同样的医疗测试集下,超越了DeepSeek-R1满血版 6.5个百分点。
之所以能取得这样的效果,主要原因在于专业数据的精准标注。通过R1蒸馏,在蒸馏基础上组织医科专家对推理过程和诊断结果进行了精准修订,产生了6个类别近2000条均衡覆盖各个病例的高质量数据,用这份数据在单卡4090上做SFT微调和INT8量化后,得到 了现在的 豆蔻大模型。并且已经在2卡4090上提供推理服务,接入了客户线上的应用流量。
这个过程当然并没有描述的这么顺利,期间的数据精校和积累,微调的反复测试迭代等,远不止5个小时。但是得到最终模型的这最后一次训练确实只花了不到5个小时。因为贝联云平台 https://cloud.lccomputing.com 提供了简洁的训练推理闭环, 在单卡4090上就能完成训练和评估,每次训练的时间较短,能很快看到结果,所以迭代很快,能很快发现数据、参数等的问题并及时作出调整,直到最终取得满意的结果。
具体细节可以参见媒体的报道: https://www.tmtpost.com/7551609.html
这个结果也 证明了专业数据+小模型微调,效果好于满血版模型,是一件有确定性的事情。
