2017-04-21 4 views
0

J'utilise un algorithme Bayes naïf pour prédire le sentiment de la phrase. Je crée un modèle pour une utilisation future. J'utilise cpickle pour enregistrer le modèle. Mais quand je charge et prédis la phrase, cela prend trop de temps. Cela prend trop de temps pour charger le fichier .pkl qui est d'environ 100MB. Il y a 3 modèles. J'utilise Flask micro service en python. Donc, pour chaque requête, chaque modèle (.pkl) est chargé et donne la sortie. Cela prend environ 30-45 secondes par demande.Le modèle Naive Bayes (.pkl) prend trop de temps à prédire

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

J'ai aussi essayé de charger le modèle avant la demande, mais le serveur wsgi démarre à chaque fois une nouvelle instance Flask et charger le modèle en mémoire. Cela prend donc trop de mémoire.

Ma question est
Est-il possible que je puisse enregistrer le modèle dans Redis/toute Db
Ou Comment puis-je réduire le temps de chargement du fichier cpickel. ??

Merci

Répondre

0

Il est préférable de conserver le modèle en mémoire aux demandes de service rapidement. C'est un mal nécessaire dans votre cas, car comme vous l'avez dit, la seule autre approche consiste à lire le modèle chaque fois qu'une nouvelle demande arrive, auquel cas votre serveur sera surchargé assez rapidement.

Comme vous le suggérez, ce serait une bonne idée de sauvegarder les modèles dans redis, qui est une solution en mémoire.