在训练或者推理模型的时候,经常会报内存溢出out of memory。
很多小伙伴第一时间会想到增加GPU,增加机器配置。没错,这是最简单直接的解决方案,但是。。。。。这个会花费很多的money。
那么,为什么会爆内存溢出呢,GPU都被哪些资源占用了呢,今天我们就简单梳理一下。
这也是面试中经常会问到的问题。
1.训练阶段
1)模型权重
2)输入数据
3)激活值(存在内存中加速计算效率)
4)梯度(模型参数的grad属性中)
5)优化器(动量、自适应学习率、均方根梯度)
2.推理阶段
1)模型权重
2)kv cache(中间量)
3) 其他(输入数据,缓冲区)