找出是啥让我在 torch7 中记忆犹新

Posted

技术标签:

【中文标题】找出是啥让我在 torch7 中记忆犹新【英文标题】:Find out what is taking my memory in torch7找出是什么让我在 torch7 中记忆犹新 【发布时间】:2017-08-23 12:02:34 【问题描述】:

我编写了一个相当复杂的 Torch 应用程序,它运行良好,即如果它没有耗尽内存。现在我试图看看什么样的输入或情况会导致它似乎随机耗尽内存,但到目前为止我几乎没有成功。所以现在我正在寻找一种方法来检查哪些变量占用了多少(v)ram。

我可以通过一个简单的语句切换在 caffe:cuda 或 caffe:cl 上运行我的代码,这会改变我的程序在 RAM 或 GPU 上运行的任何内容,我想这样的切换将使验证我的内存使用容易得多。

我已经尝试使用print(collectgarbage("count")*1024) 来检查在给定时间点使用了多少内存,但这并不能清楚地告诉我内存在哪里使用,可能是因为程序相对复杂(尽管有是一些我怀疑会占用大量内存、神经网络、大型矩阵等的变量。

我已经知道,一旦我确定了谁在占用我的内存,我就可以给它分配一个 nill 值并调用垃圾收集器来释放它。

简而言之,是否有一个程序或工具可以让我运行一个 Torch 程序,然后列出每个变量及其内存使用情况?

【问题讨论】:

【参考方案1】:

我不知道你是否尝试过 google :) 但是你在这里:

Torch7-profiling Neural Model profiler script "How to Profile a Lua Script using Pepperfish" Easy Lua Profiling

tbo,我从来没有遇到过 Torch7 的内存问题,因此可能是您的实现不是最佳的。它可能是一个没有 collectgarbage 在它应该在的地方调用的循环,例如在训练循环中或时期之间。

【讨论】:

前两个链接似乎专注于分析现有网络而不是内存使用情况,对吗?第三个链接允许我检查一个函数被调用的频率以及它在那里花费了多少时间,同样不是内存,第四个链接只通过使用 collectgarbage("count") 语句来处理内存。还是我错过了什么? 正确。如果您正在 Lua 的世界中寻找复杂的分析工具,那么您就不走运了。

以上是关于找出是啥让我在 torch7 中记忆犹新的主要内容,如果未能解决你的问题,请参考以下文章

Torch7,如何计算一个convNet中的参数个数

是啥让我的模型在笔记本电脑和 colab 上运行时预测错误值?

安装torch7问题总结

torch7学习——Tensor

没有填充或边距:是啥让我的表格无法获得 100% 的宽度? & 为啥当鼠标悬停在可滚动的 el 上时滚动条不随滚轮滚动?

馈送图像时torch7尺寸不匹配