2016-09-19 4 views
3

J'ai formé des vecteurs de paragraphe pour environ 2300 paragraphes (entre 2000 et 12000 mots chacun) avec une taille de vecteur de 300. Maintenant, je dois déduire des vecteurs de paragraphe d'environ 100.000 phrases que j'ai considérées comme des paragraphes. -30 mots correspondant chacun aux 2300 paragraphes précédents déjà formés).doc2vec - Comment inférer des vecteurs de documents plus rapidement?

Alors, je utilise

model.infer_vector(sentence)

Mais, le problème est qu'il prend trop de temps, et il ne prend pas d'arguments tels que « workers ».! Y a-t-il un moyen d'accélérer le processus en enfilant ou d'une autre manière? J'utilise une machine avec ram 8gb et quand j'ai vérifié les noyaux disponibles en utilisant

cores = multiprocessing.cpu_count() 

il sort d'être 8.

Je en ai besoin pour répondre à des questions à choix multiples. En outre, existe-t-il d'autres bibliothèques/modèles tels que doc2vec qui peuvent aider dans cette tâche?

Merci d'avance pour votre temps.

Répondre

1

Vous pouvez obtenir une légère accélération de l'appel infer_vector() à partir de plusieurs threads, sur différents sous-ensembles de nouvelles données sur lesquelles vous devez inférer des vecteurs. Il y aurait toujours un peu de conflit de threads, empêchant l'utilisation complète de tous les cœurs, en raison du verrouillage d'interpréteur global Python ('GIL'). Si votre RAM est assez grande pour le faire sans permutation, vous pouvez sauvegarder le modèle sur disque, puis le charger en 8 processus distincts, et faire chacun une inférence sur 1/8ème des nouvelles données. Ce serait le meilleur moyen de saturer tous les processeurs. Toutes les accélérations plus rapides nécessiteraient des optimisations à l'implémentation infer_vector() dans le champ "gensim", ce qui correspond au open issue sur le projet qui accepterait les améliorations apportées.