我在 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 或其他格式?