经过训练的机器学习模型太大

Trained Machine Learning model is too big

我们已经为一些回归任务训练了一个 Extra Tree 模型。我们的模型由 3 棵额外的树组成,每棵树有 200 棵深度为 30 的树。在这 3 棵额外的树之上,我们使用岭回归。

我们对模型进行了几个小时的训练,pickled 训练模型(整个 class 对象)供以后使用。但是,保存的训练好的模型太大了,大约140GB!

有没有办法减小保存模型的大小? pickle 中是否有任何可能有用的配置,或 pickle 的任何替代方案?

在最好的情况下(二叉树),您将有 3 * 200 * (2^30 - 1) = 644245094400 个节点或 434Gb 假设每个节点只需要 1 个字节来存储。我认为 140GB 比较合适。

您可以尝试使用 joblib 和压缩参数。

from sklearn.externals import joblib
joblib.dump(your_algo, 'pickle_file_name.pkl', compress=3)

compress - 从 0 到 9。更高的值意味着更多的压缩,但也更慢的读写时间。使用值 3 通常是一个很好的折衷方案。

您可以使用 python 标准压缩模块 zlib、gzip、bz2、lzma 和 xz。要使用它,您只需指定具有特定扩展名的格式

示例:

joblib.dump(obj, 'your_filename.pkl.z')   # zlib

更多信息,请参阅 link