首页 > 解决方案 > sklearn-porter export() 抛出 MemoryError

问题描述

我正在尝试使用将我的RandomForestClassifier模型导出到 Java 中sklearn-porter,但内存不足。我怎样才能解决这个问题?Linux 进程增长到大约 10+G,然后失败 - 机器有 24G 可用。

训练集有大约 250 万个元素,并且随着我们针对更多类进行分类,其规模可能会增加。该模型有 20 个特征(可能会减少)。目前我们已经让树木尽可能地长得更深。我不想限制树的深度以使其导出到 Java。

相关文章:Darius Morawiec将 python sklearn 模型导出到生产环境 (java/c++)中的回应

代码:

# train the forest
rfcf.fit(x_train, y_train)

# export
porter = Porter(rfcf, language='java')
output = porter.export(embed_data=True)
print(output)

顺便说一句,我现在将机器内存增加到 52GB 后重试。

更新:运行约 30 分钟后,它再次因 MemoryError 而失败。

顺便说一句,我还应该补充一点,在具有 24G RAM 的机器上,通过 sklean2pmml 以详细的 PMML 格式成功导出了相同的模型。也可以在合理的时间内(约 30 分钟)完成模型的酸洗,但这些文件非常大(2-6 GB。)

标签: out-of-memory

解决方案


推荐阅读