首页 > 解决方案 > 模型使用 350+ GB 的 RAM,但我很困惑为什么会发生这种情况以及我应该如何减少这个数字?

问题描述

我实际上不确定这是否是要发布的合适的 SE 社区,但我走了。

我目前正在训练模型并在每个时期后进行评估。我使用的数据相当大(训练 JSON 文件约为 5.1G),因此我将训练和开发文件拆分为每个大约 900M 的文件。

我注意到我所在的服务器在执行评估时经常面临内存错误(服务器中大约有 370+G 的 RAM,但我的程序使用了它)。我目前执行评估的方式是,我有一个列表,其中包含整个 for 循环之外的预测样本,并且对于每个文件的每个样本,我都将输出附加到列表中。顺便说一下,这个输出通过output.detach().cpu().

我尝试使用检查每个输出样本的大小,sys.getsizeof一个样本大约为 640 字节。从这个角度来看,我使用的模型大约是 48 个字节。

每个开发文件包含大约 60,000 个样本,总共有 10 个文件。希望我的计算是正确的,这意味着整个列表将是 10 * 60,000 * 640 = 384,000,000 字节,或 384M。

这对我来说似乎根本没有那么大,我想知道为什么要使用 370G 的 RAM。我记得以前甚至使用过整个 Wikipedia 转储,即便如此,也只使用了大约 100G 的 RAM。我是否可能误解或过度简化了某些事情?

我想出的解决方案是简单地对每个文件执行评估计算(即获得真正的正数),而不是将所有内容保存在更高级别的列表中;这样我以后可以简单地计算分数。

标签: pythonmemoryram

解决方案


推荐阅读