【极简】如何估算大模型inference所需的内存量

1字节=8bit
16float=2字节
模型后面的xxb的单位是字节。
1b 字节≈ 0.93G,这个是以8bit运行,4bit减半,16bit(float)加倍,32bit(double)炒鸡加倍。

剩下的是小头,需要参数计算:

  • s:最大序列长度(输入中的令牌数量)
  • b:批大小
  • h:模型的隐藏维度
  • a:注意头的数量

对于整个层
总内存需求总计为11sbh + 5as²b(来自注意力块)+ 19sbh(来自MLP块)+ 4sbh(来自LN)
每层激活内存消耗= 34 sbh + 5as²b

小头一般远小于10G。

所以比如llama7b,只需要7*0.93≈9G,再加10,内存19G就可以(实际会更少,因为小头远低于10G),注意这个是以8bit运行,4bit减半,16bit(float)加倍,32bit(double)炒鸡加倍。

感谢博客:https://developer.aliyun.com/article/1496103
感谢github:

### 嵌入式设备上的大型机器学习模型部署 对于嵌入式设备而言,其内存计算能力相对有限。当考虑在此类环境中部署大型机器学习模型时,必须仔细评估并满足特定的硬件需求。 #### 内存要求分析 大型机器学习模型往往占用大量内存空间,这不仅包括存储权重参数所需的静态RAM,还包括运行期间动态分配给中间变量的空间。具体来说: - **模型大小**:预训练好的神经网络可能包含数百万甚至数十亿个参数,每个浮点数值通常占4字节(FP32精度)。因此,仅保存这些系数就需要几百MB至几GB不等的记忆体容量[^1]。 - **推理过程中的临时数据结构**:除了固定的模型参数外,在执行预测任务过程中还会创建额外的数据缓冲区用于暂存激活函数输出、梯度累积等操作。这部分开销取决于所选框架以及具体的算法实现方式。 为了适应资源受限环境下的应用开发工作流,开发者们经常采用一系列技术手段来减少整体消耗,比如通过剪枝(pruning)去除冗余连接;利用量化(quantization)降低表示位宽从而节省带宽与功耗;或是借助专门设计的小型化架构如MobileNetV2或EfficientNet-Lite系列替代原有复杂拓扑结构。 ```python import tensorflow as tf # 加载预训练模型 model = tf.keras.models.load_model('path_to_large_model') # 获取模型概要信息 model.summary() ``` 上述代码片段展示了如何加载一个预先训练完成的大规模深度学习模型,并打印出有关该模型内部各层配置及其对应参数量的信息摘要表单。这对于初步估算目标平台能否承载指定AI解决方案至关重要。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值