Python-超越了RAM极限



我正在尝试分析文本,但是我的Mac的RAM只有8个演出,而RidGereGressor仅在Killed: 9之后停止。我侦察这是因为它需要更多的内存。

有没有办法禁用堆栈尺寸限制器,以便算法可以使用某种交换内存?

您需要手动进行。

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

  • A:举行训练数据
  • b:训练回归器

对于a,您可以尝试使用Numpy的Memmap,以抽象交换。作为替代方案,请考虑将数据准备为HDF5或一些DB。对于HDF5,您可以使用H5PY或PYTABLES,都允许使用Numpy的用法。

对于B:使用一些核心外算法是一个好主意。在Scikit-Learn中,这些是支持partial_fit的人。

请记住,这种训练过程将至少两个新元素分解为

  • 在记忆方面有效
    • 交换很慢;您不想在学习过程中使用n^2 aux-memory的东西
  • 有效收敛

上面链接中的那些算法都应该可以。

sgdregressor可以被参数化以类似于山脊。

另外:可能需要手动使用partial_fit,遵守算法的规则(通常是防止收敛所需的某种随机订购)。抽象交换的问题是:如果您的回归器在每个时期都在置换,而又不知道那是多么昂贵,那么您可能会遇到麻烦!

由于问题本身非常困难,因此为此建立了一些特殊的库,而Sklearn则需要一些手动工作。最极端的方法之一(很多疯狂的技巧)可能是vowpal_wabbit(其中IO通常是瓶颈!)。当然还有其他流行的液井,例如Pyspark,服务略有不同(分布式计算)。

相关内容

  • 没有找到相关文章

最新更新