word2vecモデルをサイズ400MBのトークン化ファイルに訓練したいと思います。私はこのPythonコードを実行しようとしている: Gensim Word2Vecが多すぎるメモリを使用しています
私は私のファイルにこの関数を呼び出すと、私はこれを取得:
2017-10-23 17:57:00,211 : INFO : collecting all words and their counts
2017-10-23 17:57:04,071 : INFO : PROGRESS: at sentence #0, processed 0 words, keeping 0 word types
2017-10-23 17:57:16,116 : INFO : collected 4735816 word types from a corpus of 47054017 raw words and 1 sentences
2017-10-23 17:57:16,781 : INFO : Loading a fresh vocabulary
2017-10-23 17:57:18,873 : INFO : min_count=5 retains 290537 unique words (6% of original 4735816, drops 4445279)
2017-10-23 17:57:18,873 : INFO : min_count=5 leaves 42158450 word corpus (89% of original 47054017, drops 4895567)
2017-10-23 17:57:19,563 : INFO : deleting the raw counts dictionary of 4735816 items
2017-10-23 17:57:20,217 : INFO : sample=0.001 downsamples 34 most-common words
2017-10-23 17:57:20,217 : INFO : downsampling leaves estimated 35587188 word corpus (84.4% of prior 42158450)
2017-10-23 17:57:20,218 : INFO : estimated required memory for 290537 words and 200 dimensions: 610127700 bytes
2017-10-23 17:57:21,182 : INFO : resetting layer weights
2017-10-23 17:57:24,493 : INFO : training model with 3 workers on 290537 vocabulary and 200 features, using sg=0 hs=0 sample=0.001 negative=5 window=5
2017-10-23 17:57:28,216 : INFO : PROGRESS: at 0.00% examples, 0 words/s, in_qsize 0, out_qsize 0
2017-10-23 17:57:32,107 : INFO : PROGRESS: at 20.00% examples, 1314 words/s, in_qsize 0, out_qsize 0
2017-10-23 17:57:36,071 : INFO : PROGRESS: at 40.00% examples, 1728 words/s, in_qsize 0, out_qsize 0
2017-10-23 17:57:41,059 : INFO : PROGRESS: at 60.00% examples, 1811 words/s, in_qsize 0, out_qsize 0
Killed
私はword2vecはたくさんのを必要としていることを知っています私はまだそこに問題があると思っています。ご覧のとおり、このモデルの推定メモリは600MBで、コンピュータのRAMは16GBです。しかし、コード実行中にプロセスを監視すると、すべてのメモリを占有してから殺されます。
他の投稿が助言するように、私はmin_countを増やしてサイズを小さくしようとしました。しかし、ばかげた値(min_count = 50、size = 10)でも、プロセスは60%で停止します。
私はまた、プロセスが終了しないように、PythonをOOMの例外にしようとしました。私がそうするとき、私は殺害の代わりにMemoryErrorを持っています。
何が起こっていますか?
(私はUbuntuの17.04、16ギガバイトのRAMとNVIDIAのGTX 960Mとの最近のラップトップを使用しています。私はアナコンダからのpython 3.6を実行して、3.0をgensimが、それはgensim 2.3とのより良い行うdoes'nt)
これは間違いなく問題でした。私のトークン化スクリプトのバグは、私が望むところに改行を入れませんでした。どうもありがとう ! –
'特にgensimのWord2Vecの最適化されたcythonコードは、それらを切り捨てる前に10,000ワードの文章しか扱えない(そして残りを破棄する)' - >これはdoc2vecでも当てはまりますか?そしてもしそうなら、dm = 0(単語algoのバッグ)とdm = 1(dist memory algo)の両方に対応していますか?それは、代表性の観点から、10000のマークでそれらを任意に切り捨てることを正確に感じるわけではありません。 – user1712447
はい、それは 'Doc2Vec'にも当てはまります。あなたのドキュメントをそれぞれ<= 10000トークン以下のサイズのサブドキュメントに分割し、それぞれのサブドキュメントに同じ 'tags 'を使用すると、長いドキュメントで発生したと思われるトレーニングに非常に近似します。 – gojomo