计算机器学习所耗内存
显存占用和GPU利用率是两个不一样的东西,显卡是由GPU计算单元和显存等组成的,显存和GPU的关系有点类似于内存和CPU的关系。
1.首先安装scalenepip install scalene
Scalene 是一个 Python 的高性能 CPU内存分析器
用于Python脚本的CPU和内存分析器,能够正确处理多线程代码,还能区分Python代码和本机代码的运行时间
在linux或Mac OS X上运行
要安装的这些自动化工具都用不了
使用代码计算参数量
# 模型显存占用监测函数
# model:输入的模型
# input:实际中需要输入的Tensor变量
# type_size 默认为 4 默认类型为 float32
# def modelsize(model, input, type_size=4):
def modelsize(model, input1, input2, type_size=4): # 若有两个输出参数
para = sum([np.prod(list(p.size())) for p in model.parameters()])
print('Model {} : params: {:4f}M'.format(model._get_name(), para * type_size / 1000 / 1000))
input1_ = input1.clone()
input2_ = input2.clone()
input1_.requires_grad_(requires_grad=False)
input2_.requires_grad_(requires_grad=False)
mods = list(model.modules())
print(mods)
out_sizes = []
for i in range(1, len(mods)):
m = mods[i]
if isinstance(m, nn.ReLU):
if m.inplace:
continue
# out = m(input_)
out = m(input1_, input2_) # 若有两个参数
out_sizes.append(np.array(out.size()))
# input_ = out
input2_ = out # 若有两个参数
total_nums = 0
for i in range(len(out_sizes)):
s = out_sizes[i]
nums = np.prod(np.array(s))
total_nums += nums
print('Model {} : intermedite variables: {:3f} M (without backward)'
.format(model._get_name(), total_nums * type_size / 1000 / 1000))
print('Model {} : intermedite variables: {:3f} M (with backward)'
.format(model._get_name(), total_nums * type_size*2 / 1000 / 1000))
modelsize(model, tensor_adjacency, tensor_x)
参考资料:
Scalene: Python 高性能 CPU 内存分析器
python工具——Scalene
Python - scalene CPU和GPU及内存分析工具
机器学习代码占多少内存?
Python使用pynvml查看GPU信息
Python 性能分析工具py-spy与Scalene
神经网络内存占用计算
【DL基础】模型训练测试过程消耗内存的计算
浅谈深度学习:如何计算模型以及中间变量的显存占用大小
如何在Pytorch中精细化利用显存
再次浅谈Pytorch中的显存利用问题(附完善显存跟踪代码)
科普帖:深度学习中GPU和显存分析
深度学习PyTorch,TensorFlow中GPU利用率较低,CPU利用率很低,且模型训练速度很慢的问题总结与分析
火焰图与JOL
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示