LLM 推理和微调所需 VRAM 估算指南

基础术语解释

  • 推理(Inference):使用预训练模型根据输入数据进行文本的过程。

  • 微调(Fine-tuning):在特定数据集上进一步训练预训练模型以使其适应特定任务的过程。

  • 内存消耗:在 LLM 推理和微调期间存储和处理数据所需的计算机内存量。

  • 优化器:一些优化算法(如带有动量的优化器)需要保存一些状态信息,以便在每次更新时进行调整。这些状态信息也会占用一定的显存。

  • 批处理大小(BatchSize) :批处理大小是指一次推理中处理的样本数量。较大的批处理大小可能会增加显存使用,因为需要同时存储多个样本的计算结果。



LLM参数量与推理和微调所需 VRAM 基本关系

推理:模型显存+推理显存

根据 EleutherAI Transformer Math 101,推理所需 VRAM 计算公式(以 GB 为单位)为:
$$
\mathrm{Memory}_{\mathrm{Inference}} \approx \mathrm{Model\ Size} \times 1.2
$$

微调:模型显存+推理显存+优化器显存

对于 LoRa 微调,假设可训练参数为 16-bit,LoRa 微调所需 VRAM 计算公式(以 GB 为单位)为:
$$
\mathrm{Memory}{\mathrm{LoRa}} \approx
\left( \mathrm{Model\ Size} + #\ \mathrm{trainable\ Params}
{\mathrm{Billions}} \times \frac{16}{8} \times 4 \right) \times 1.2
$$



通过高级工具计算模型所需 VRAM

下面我们介绍一些高级计算的工具。

1. VRAM Estimator

VRAM Estimator

https://github.com/furiousteabag/vram-calculator

这个 GitHub 开源的工具可以估计基于transformer的模型用于推理和训练的GPU VRAM使用情况。它可以允许输入各种参数,如模型名称,精度,最大序列长度,批量大小,gpu数量。提供参数、激活、输出和CUDA内核的VRAM使用情况的详细细分。


2. Hugging Face Accelerate Model Memory Calculator

Hugging Face Accelerate Model Memory Calculator

https://github.com/huggingface/accelerate

这个 Hugging Face 官方开源的工具可以计算用于推理和训练的模型的内存使用量。因为是Hugging Face的链接,所以可以输入模型名称或URL,该工具将提供内存使用情况的全面细分,包括数据类型、最大层、总大小和使用不同优化器的训练内存使用情况。


3. Can you run it? LLM version

Can you run it? LLM version

这个 Hugging Face 开源的工具允许用户测试自己设备是否有能力使用 LLM 推理或 LoRA 微调。可通过调整 LoRa 可训练参数查看不同量化下所需的 VRAM。GPU 信息来自 TechPowerUp GPU Specs,主要基于上一个工具,使用 Transformers 库。


4. LLM Inference: VRAM & Performance Calculator

LLM Inference: VRAM & Performance Calculator

这个 ApX 的工具允许用户测试自己设备是否有能力使用 LLM 推理或 LoRA 微调。支持最新的计算卡,如 H800、B100、B200 等,以及 Apple Silicon 如 M4 Max;支持调整 GPU 数量;支持设置并发用户数;提供内存分配参考和生成速度参考;提供中文翻译。