2017-04-21 170 views
0

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

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

我也试图请求之前加载模式,但WSGI服务器每次启动一个新瓶实例,并在模型加载到内存中。所以它需要太多的内存。

我的问题是
有什么办法,我可以节省的Redis /模型的任何一个分贝
或者我怎样才能减少cpickel文件的加载时间。??

谢谢

回答

0

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

这是你的情况下,必要的邪恶,因为像你说的,唯一的另一种方法,否则是读模式,每次新的请求到来时,在这种情况下,您的服务器将很快过载。

就像你所提出的建议,它实际上是一个好主意,以保存模型redis的,这是一个内存解决方案。