2016-09-19 57 views
3

我已經訓練了約2300段(每個2000-12000字之間)的向量,每個向量大小爲300.現在,我需要推斷大約10萬個句子的段落向量,我認爲它們是段落(每個句子大約10 -30個單詞對應於早期的2300段已經被訓練過)。doc2vec - 如何更快地推斷文檔向量?

所以,現在用

model.infer_vector(sentence)

但是,問題是,它花費的時間太長,它不帶任何參數,如「workers」!有沒有辦法通過線程或其他方式加速進程?我使用了8GB RAM的機器和使用

cores = multiprocessing.cpu_count() 

當我檢查可用的核心它出來是8

我需要這個回答多項選擇題。此外,還有其他庫/模型,如doc2vec哪些可以幫助完成此任務?

提前感謝您的時間。

回答

1

您可能會從多個線程中調用infer_vector()稍微加快,在您需要推斷向量的新數據的不同子集上。由於Python Global Interpreter Lock('GIL'),仍然會有相當多的線程爭用,阻止完全使用所有內核。

如果你的RAM足夠大而不需要交換,你可以將模型保存到磁盤,然後將它加載到8個獨立的進程中,並且每個進程都在新數據的1/8處進行推理。這將是飽和所有CPU的最佳方式。

任何更快的加速需要對gensim中的infer_vector()實現進行優化 - 這是該項目上的一個open issue,它將接受貢獻的改進。