大模型训练和推理阶段的内存消耗估计

本文详细探讨了Transformer模型在训练和推理阶段的内存消耗,包括模型自身占用、activations(注意力和MLP块)、optimizer states。以Mixtral-8x22B为例,强调了activations在内存中的重要性,并指出优化器如AdamW在微调时增加的内存需求。推理和训练时的内存消耗与序列长度、批次大小和模型参数有关。对于大规模模型,内存管理至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上一篇文章提到了llama 3 8b 全量微调需要占用 Fine-tuning内存占用128.87GB的内存,主要包括三方面,分别是:

  • loading the model
  • optimizer states
  • activations

本文以Mixtral-8x22B为例来介绍各个阶段的内存消耗以及推理和训练时的内存消耗。

各阶段内存消耗

model 自身占用内存

要想知道模型有多少个参数,直接查看模型卡片即可
在这里插入图片描述
如果想在GPU上进行快速推理,就需要将模型完全加载到GPU内存中。对于“Command-R”需要193.72 GB的GPU显存;对于Mixtral-8x22B来说需要有262.63 GB的GPU内存;对于Llama 3 70B型号,其拥有131.5 GB的GPU内存(每个参数占用16 bit,即 2 bytes)

activations的内存消耗(重点)

首先需要知道以下信息:

  • max_seq_len,记为s
  • hidden_size,记为h
  • attention head的数量,记为a
  • layer number,记为l

标准的transformer block如下:
在这里插入图片描述
At the start of the network, the input tokens are fed into a word embedding table with size
v×h

### 大模型推理训练时显存计算方法 #### 显存需求分析 在大模型训练推理过程中,显存的需求主要取决于以下几个方面: - **批处理大小**:较大的批次可以提高硬件利用率,但也增加了显存消耗。对于训练而言,每一批次都需要存储输入数据、中间激活值以及反向传播所需的梯度信息[^1]。 - **网络结构复杂度**:更深更宽的神经网络会占用更多资源来保存权重矩阵其他参数。特别是当存在残差连接或其他复杂的层间依赖关系时,这些都会增加额外开销。 - **优化器状态变量**:像Adam这样的自适应学习率优化算法会在每次迭代中维护动量项平滑平方梯度估计等辅助变量,这同样占用了宝贵的GPU内存空间。 #### 训练期间显存管理策略 为了有效控制并减少训练过程中的显存使用量,可采取如下措施: ##### 混合精度浮点数表示法 采用FP16代替传统的FP32作为默认数值类型来进行前向/后向传递运算操作。由于现代NVIDIA GPU支持Tensor Cores技术,在执行半精度乘加指令时能获得显著性能提升的同时还降低了带宽压力。不过需要注意的是,某些特定情况下可能会影响最终收敛效果,因此建议配合损失尺度机制共同应用以确保稳定性[^2]。 ```python import torch.cuda.amp as amp scaler = amp.GradScaler() with autocast(): output = model(input) loss = criterion(output, target) scaler.scale(loss).backward() sccaler.step(optimizer) ``` ##### 参数冻结与分组更新 如果部分子模块已经充分预热,则可以在后续轮次里暂时固定住其对应的权值不变;而对于那些仍然处于活跃调整期的关键组件则继续沿用常规的学习速率进行微调。此外还可以考虑按照功能划分成若干独立单元分别施加不同强度约束条件从而实现更加精细粒度上的动态平衡调节. #### 推理阶段显存节省手段 相比于训练模式下更为宽松的要求,预测任务往往只需关注正向传播路径即可完成目标输出生成工作。基于此特点,下面列举了一些有助于降低实际部署环境中所需配置规格的有效途径: - **剪枝瘦身**:移除冗余节点及其关联边构成精简版架构版本,既不影响整体表现又能大幅削减静态分配额度。 - **量化压缩**:利用低比特整型近似替代原有高维实数表达形式,进而达到缩减体积的目的。例如INT8相较于原生float32大约节约75%左右的空间成本。 - **图优化编译工具链集成**:借助ONNX Runtime/XLA之类框架所提供的高级特性自动识别潜在瓶颈环节并通过重写转换等方式进一步挖掘潜力释放潜能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值