朴素贝叶斯模型(.pkl)需要太多时间来预测

时间:2017-04-21 06:48:15

标签: python flask pickle wsgi naivebayes

我正在使用朴素贝叶斯算法来预测句子的情绪。我正在创建一个模型供将来使用。我正在使用cpickle来保存模型。但是当我加载并预测句子时,需要花费太多时间。加载大约100MB的.pkl文件需要花费太多时间。有3个型号。我在python中使用Flask微服务。因此,对于每个请求,每个模型(.pkl)都会加载并提供输出。每次请求大约需要30-45秒。

def predict(sentence):
  test = cPickle.load(open('model.pkl'))
  print test.predict([sentence])[0]
  print max(test.predict_proba([sentence])[0])

我还尝试在请求之前加载模型,但每次新的Flask实例都会启动wsgi服务器并将模型加载到内存中。所以它需要太多的记忆。

我的问题是 有什么办法可以在Redis /任何Db中保存模型 或者我如何减少cpickel文件的加载时间。??

由于

1 个答案:

答案 0 :(得分:0)

最好将模型保留在内存中以快速处理请求。

在你的情况下,这是一个必要的邪恶,因为就像你说的那样,唯一的另一种方法是每次新的请求到来时读取模型,在这种情况下你的服务器将很快超载。

就像你建议的那样,将模型保存在redis中是一个好主意,redis是一种内存解决方案。