如何估算LLM推理和训练所需的GPU内存?

        在实际工作中,经常有人问,7B、14B或70B的模型需要多大的显存才能推理?如果微调他们又需要多大的显存呢?为了回答这个问题整理一份训练或推理需要显存的计算方式。如果大家对具体细节不感兴趣,可以直接参考经验法则评估推理或训练所需要的资源。更简单的方式可以通过这个工具[1]或者huggface官网计算推理/训练需要的显存工具[2]在线评估。

1.数据精度

        开始介绍之前,先说一个重要的概念——数据精度。数据精度指的是信息表示的精细程度,在计算机中是由数据类型和其位数决定的。如果想要计算显存,从“原子”层面来看,就需要知道我们的使用数据的精度,因为精度代表了数据存储的方式,决定了一个数据占多少bit。目前,精度主要有以下几种:

  • 4 Bytes: FP32 / float32 / 32-bit

  • 2 Bytes: FP16 / float16 / bfloat16 / 16-bit

  •  1 Byte: int8 / 8-bit

  • 0.5 Bytes: int4 / 4-bit

2.经验法则

  •  推理: 参数量 * 精度。

例如,假设模型都是16-bit权重发布的,也就是说一个参数消耗16-bit或2 Bytes的内存,模型的参数量为70B,基于上述经验法则,推理最低内存需要70B * 2Bytes = 140G。

  •  训练: 4 - 6 倍的推理资源。

3.推理

        在模型推理阶段,需要的资源主要有三部分:模型的权重、KV Cache和激活(在推理过程中创建的张量)。

### 实现大型语言模型 (LLM) 的推理流水线 构建高效的 LLM 推理流水线涉及多个方面,包括但不限于数据预处理、模型加载与优化以及实际的推理过程。 对于输入的数据,在进入核心推理阶段之前通常需要经过一系列预处理操作。这可能涉及到分词(tokenization),即将自然语言文本转换成适合喂给神经网络的形式;编码(encoding),把分词后的结果映射为数值表示形式以便于计算设备理解并进一步处理[^1]。 当准备就绪之后,则需考虑怎样高效地加载训练好的 LLM 权重文件,并对其进行必要的性能调优措施来加速后续查询响应速度。这里可以利用诸如 PyTorch 或 TensorFlow 这样的框架所提供的工具集来进行量化或者剪枝等技术手段降低资源消耗的同时保持较高的准确性水平[^2]。 最后便是执行具体的预测任务了。为了提高吞吐量支持并发请求的能力,往往采用异步编程模式配合批量(batching)机制一起工作——即一次性收集一定数量待解码的任务集合再统一提交至 GPU 上完成运算,从而减少单位时间内 I/O 开销占比提升整体效率[^3]。 ```python import torch from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("model_name") model = AutoModelForCausalLM.from_pretrained("model_name").to('cuda') def preprocess(text_input): inputs = tokenizer(text_input, return_tensors="pt", padding=True).to('cuda') return inputs async def infer_async(input_data_batch): with torch.no_grad(): outputs = await model.generate(**input_data_batch) return outputs ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值