【发布时间】:2021-04-26 07:14:36
【问题描述】:
我在 19GB 的训练数据上训练了一个 Sklearn RandomForestRegressor 模型。我想将它保存到磁盘以便以后使用它进行推理。正如在另一个 stackoverflow 问题中所推荐的那样,我尝试了以下方法:
- 泡菜
pickle.dump(model, open(filename, 'wb'))
模型已成功保存。它在磁盘上的大小是 1.9 GB。
loaded_model = pickle.load(open(filename, 'rb'))
加载模型导致 MemorError(尽管有 16 GB RAM)
- cPickle - 结果与 Pickle 相同
- 作业库
joblib.dump(est, 'random_forest.joblib' compress=3)
在加载文件时也会以 MemoryError 结束。
- 盗贼
d = klepto.archives.dir_archive('sklearn_models', cached=True, serialized=True) d['sklearn_random_forest'] = est d.dump()
Arhcive 已创建,但当我想使用以下代码加载它时,我得到 KeyError: 'sklearn_random_forest'
d = klepto.archives.dir_archive('sklearn_models', cached=True, serialized=True) d.load(model_params) est = d[model_params]
我尝试使用相同的代码保存字典对象,它有效,所以代码是正确的。显然 Klepto 不能持久化 sklearn 模型。我玩过缓存和序列化的参数,但没有帮助。
任何有关如何处理此问题的提示将不胜感激。是否可以将模型保存为 JSON、XML、HDFS 或其他格式?
【问题讨论】:
标签: machine-learning scikit-learn pickle klepto