Python是否超出了内存限制?

2024-10-01 13:42:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着分析文本,但是我的Mac的RAM只有8gig,而且ridgergressor在一段时间后就停止了Killed: 9。我发现这是因为它需要更多的记忆。你知道吗

有没有办法禁用堆栈大小限制器以便算法可以使用某种交换内存?你知道吗


Tags: 记忆内存文本算法堆栈macram限制器
1条回答
网友
1楼 · 发布于 2024-10-01 13:42:01

你需要手动操作。你知道吗

这里可能有两个不同的核心问题:

  • A:拿着你的训练数据
  • B:训练回归者

例如,您可以尝试numpy的memmap,它将交换抽象化。 作为替代方案,考虑将数据准备到HDF5或某个DB。对于HDF5,可以使用h5pypytables,两者都允许类似numpy的用法。你知道吗

对于B:使用一些核心外的算法是个好主意。在scikit中,这些是支持partial_fit的。你知道吗

请记住,此培训过程至少分解为两个新元素:

  • 在记忆方面有效率的存在
    • 交换是很慢的;在学习过程中,你不想使用有N^2辅助内存的东西
  • 有效收敛

上面链接中的那些算法应该对这两个都适用。你知道吗

SGDRegressor可以参数化以类似于RidgeRegression。你知道吗

另外:可能需要手动使用partial_fit,遵守算法的规则(通常是收敛性证明所需的某种随机顺序)。把交换抽象出来的问题是:如果你的回归器在每个时代做一个排列,而不知道它的代价有多大,你可能会有麻烦!你知道吗

因为这个问题本身很难解决,所以有一些专门的库是为此而构建的,而sklearn需要更多的手工工作。最极端的一个(很多疯狂的把戏)可能是vowpal_wabbit(IO通常是瓶颈!)。当然还有其他流行的lib,比如pyspark,它们的用途稍有不同(分布式计算)。你知道吗

相关问题 更多 >