2017-02-04 127 views
0

我正在運行安裝了gcc的Lubuntu 16.04機器。我沒有得到gensimcython一起工作,因爲當我訓練一個doc2vec model時,它只能訓練一名工作極其緩慢的工人。如何讓cython和gensim與pyspark一起工作

正如我所說的gcc是從一開始就安裝的。然後我可能犯了錯誤,並在cython之前安裝了gensim。我通過強制重新安裝gensim通過pip糾正了這個問題。即使只有一名工人也沒有效果。

機器設置爲spark主控制器,我通過pysparkspark對接。它的工作原理是這樣的,pyspark使用jupyterjupyter使用python 3.5。這樣我就可以得到一個jupyter接口到我的集羣。現在我不知道這是爲什麼我不能得到gensimcython一起工作的原因。我不在集羣上執行任何gensim代碼,只需要啓動jupyter也可以執行gensim

+0

據我所知,從gensim頁面可以看出,它與Cython無關。你究竟在做什麼,是什麼讓你認爲Cython和gensim一起? – DavidW

+0

仔細一看,gensim確實有一些可選的用Cython編寫的更快的版本,但你不需要自己安裝Cython(生成的C文件看起來被提供,所以你只需要GCC)。如果您不具備C模塊,則無法構建C模塊並在導入時出現警告,它還會在安裝時提供警告。你有沒有得到這些警告? – DavidW

+0

我在word2vec教程中閱讀:_工人蔘數只有在您安裝了Cython時纔有效。沒有Cython,你只能使用一個核心,因爲GIL(而word2vec訓練將會非常慢)._ [here](https://rare-technologies.com/word2vec-tutorial/)並且沒有I至少當我通過pip來完成時,不會有任何構建錯誤。 – Thagor

回答

0

深入挖掘並嘗試諸如將整個語料庫加載到內存中執行gensim等不同環境等等都沒有效果。這似乎是gensim的問題,代碼只是部分並行化的。這導致工作人員無法充分利用CPU。請參閱github上的問題link

+0

我只能在1小時後做到這一點 – Thagor

0

你可能做到了這一點,但是請你檢查一下你是否使用了assert gensim.models.doc2vec.FAST_VERSION > -1的並行Cythonised版本?

gensim doc2vec代碼是並行化的,但不幸的是Gensim之外的I/O代碼不是。例如,在github issue中,鏈接的並行化確實是在語料庫加載到RAM之後實現的。doclist = [doc for doc in documents]

+0

正如我上面所陳述的那樣,我無濟於事 – Thagor