2016-09-19 8 views
3

私は約2300の段落(それぞれ2000-12000語の間)のベクトルサイズを300に訓練しました。今、私は段落とみなした約10万センチの段落ベクトルを推論する必要があります(各センテンスは約10ですすでに訓練された2300の段落に対応する-30語)。doc2vec - 文書のベクトルをより速く推論する方法

ので、

model.infer_vector(sentence)

を使用しています。しかし、問題は、それは時間がかかりすぎるし、これは、そのような「workers」などの任意の引数を取りません。!私はスレッドやその他の方法でプロセスをスピードアップできる方法はありますか?私は8GBのRAMを搭載したマシンを使用して、私は利用可能なコアをチェックすると、それは8

私は、これは複数の選択肢の質問に答えるために必要なことが出てくる

cores = multiprocessing.cpu_count() 

を使用しています。また、この作業に役立つdoc2vecのような他のライブラリ/モデルはありますか?

お時間をいただきありがとうございます。

答えて

1

infer_vector()を呼び出すと、ベクトルを推論する必要のある新しいデータの異なるサブセット上で、複数のスレッドからわずかなスピードアップを得ることがあります。 Python Global Interpreter Lock( 'GIL')のおかげで、かなりのスレッド競合が発生し、すべてのコアを完全に使用できなくなります。

スワッピングせずにRAMを十分に使用できる大きさにすると、モデルをディスクに保存してから8つの別々のプロセスにロードし、それぞれの新しいデータの1/8を推論することができます。それはすべてのCPUを飽和させる最善の方法でしょう。

さらに高速化するには、infer_vector()の実装をgensimで最適化する必要があります。これは、改善された改善を受け入れるプロジェクトのopen issueです。

関連する問題