大量的机器学习模型 - 保存和加载

时间:2017-01-23 13:12:13

标签: machine-learning scikit-learn out-of-memory persistence

目前,在训练我们的ML模型(通过sci-kit)在运行时使用它们之后,我将它们保存为' .pkl'在服务器启动时将文件加载到内存中。我的问题有两个方面:

  1. 还有更好的方法吗?使用最高压缩后,一个.pkl文件大小达到500MB。我能以其他更好的格式保存我的模型吗?

  2. 我该如何缩放?我有很多这样的.pkl文件(例如,20个模型用于一个任务的不同语言,同样我有5个这样的任务,即~5 * 20个模型)。如果我同时加载所有这样的.pkl文件,服务将进入OOM。如果我根据请求加载/卸载每个.pkl文件,API会变慢,这是不可接受的。我如何扩大规模或选择性地加载唯一可能的解决方案?

  3. 谢谢!

1 个答案:

答案 0 :(得分:0)

有几种类型的模型可以在不损害性能的情况下减小尺寸,例如修剪随机森林。除此之外,如果不改变模型本身(即降低其复杂性),你可以对内存模型的大小做很多事情(即降低其复杂性)。

我建议尝试使用joblib库而不是pickle库,在那里你可以使用“compress”参数来控制压缩的强度(需要更长时间才能加载)。

另请注意,鉴于您使用的模型类型,我们可能会为您提供更好,更具体的建议。

相关问题