不同参数规模大语言模型在不同微调方法下所需要的显存总结
大模型的微调是当前很多人都在做的事情。微调可以让大语言模型适应特定领域的任务,识别特定的指令等。但是大模型的微调需要的显存较高,而且比较难以估计。与推理不同,微调过程微调方法的选择以及输入序列的长度、批次大小都会影响微调显存的需求。本文根据LLaMA Factory的数据总结一下大模型微调的显存要求。

在此前的文章中,我们已经解释了大模型推理和显存之间的估算方法:需要多少GPU显存才能运行预训练大语言模型?大语言模型参数规模与显存大小的关系估算方法~。即大模型推理显存约等于模型参数乘以2,而微调则只给了方法没有具体公式。
DataLearnerAI发现来自北航博士生Yaowei Zheng开源的LLaMA-Factory是一个大模型一键微调平台。主要是用可视化的方式让大家可以一键微调很多业界主流的模型。包括Baichuan、ChatGLM、Mixtral(就是Mistral 8×7B MoE)等模型。这其中还公布了一个数据,即不同参数规模的大模型在不同微调方法下所需的显存大小,十分有参考意义:
微调方法 | 模型精度 | 70亿参数模型 | 130亿参数模型 | 300亿参数模型 | 650亿参数模型 | 8x7B(MoE) |
---|---|---|---|---|---|---|
Full | 16 | 160GB | 320GB | 600GB | 1200GB | 1000GB |
Freeze | 16 | 20GB | 40GB | 120GB | 240GB | 200GB |
LoRA | 16 | 16GB | 32GB | 80GB | 160GB | 120GB |
QLoRA | 8 | 10GB | 16GB | 40GB | 80GB | 80GB |
QLoRA | 4 | 6GB | 12GB | 24GB | 48GB | 32GB |
这里的微调方法含义如下:
- Full:全参数微调(Full-Parameter Fine-Tuning),即更新模型的所有参数;
- Freeze:表示冻结部分参数进行微调
- LoRA:Low-Rank Adaptation,微软提出的高效参数微调方法,引入低秩矩阵可以在资源有效的场景下获得较好的效果。
- QLoRA:华盛顿大学提出量化+LoRA方法,资源要求更低,详情参考:华盛顿大学提出QLoRA及开源预训练模型Guanaco:将650亿参数规模的大模型微调的显存需求从780G降低到48G!单张显卡可用!
从上表中我们可以看到,全参数微调其实显存要求很高,如果推理显存如果约等于模型参数的2倍(单位是10亿,例如7B大模型最少需要14G显存才能推理),那么全参数微调几乎是参数的20倍还要多。而使用LoRA则比推理显存大小略高一点。
这里比较重要的参考是8×7B的MoE模型。这个显然就是前段时间刚刚发布的Mixtral大模型(即Mistral 8×7B MoE,详情参考:MistralAI的混合专家大模型Mistral-7B×8-MoE详细介绍,效果超过LLaMA2-70B和GPT-3.5,推理速度快6倍)。这个模型实际参数450亿,每次推理只会激活120亿的参数。这个模型在微调的时候需要的显存大小和450亿参数规模的模型相当。也就是说,MoE最大的优点应该是提升推理速度。推理现存与微调显存实际上不会有什么优势(根据实际测试,Mixtral 8×7B MoE推理最少也要90多G的显存)。如果使用QLoRA方法,那么显存大小会显著降低。不过,这也会降低一点精度。
这个表可以参考估算不同参数规模的大模型微调所需要的显存。欢迎大家收藏关注。
欢迎大家关注DataLearner官方微信,接受最新的AI技术推送
