2017-02-04 10 views
0

私はgccをインストールしたLubuntu 16.04マシンを実行しています。私はdoc2vec modelを訓練するときに恐ろしく遅い1人の熟練者しか訓練していないので、gensimcythonと一緒に働かせることはできません。cythonとgensimをpysparkで動作させる方法

私が言ったように、gccは最初からインストールされていました。私は間違いを犯してgensimcythonの前にインストールしました。私はpip経由でgensimの再インストールを強制して修正しました。まだ効果がないのはただ1人の労働者だけです。

マシンはsparkマスターとして設定され、Iインターフェイスはsparkからpysparkに設定されます。このように動作し、pysparkjupyterを使用し、jupyterはpython 3.5を使用します。このようにして、私はクラスタにjupyterインターフェースを取得します。今私はこれがなぜgensimcythonと働かせないのかわからない。私はクラスタ上でgensimコードを実行しないで、gensimにもjupyterを起動するほうがずっと便利です。

+0

私がgensimのページからわかる限り、それはCythonとは関係ありません。正確に何をやっているのですか、そしてCythonとgensimが一緒に行くと思いますか? – DavidW

+0

gensimにはCythonで書かれたいくつかのオプションのより高速なバージョンがありますが、Cythonをインストールする必要はありません(生成されたCファイルはGCCだけが必要となるように用意されています)。また、Cモジュールをビルドできない場合はインストール時の警告を表示し、Cモジュールがない場合はインポート時の警告を表示します。あなたはこれらの警告を受け取りますか? – DavidW

+0

私はword2vecのチュートリアルを読んでいます:_あなたがCythonをインストールしている場合、ワーカーのパラメータは効果があります。 Cythonがなければ、あなたはGILのために1つのコアしか使用できません(そして、word2vecのトレーニングは非常に遅くなります)。_ [here](https://rare-technologies.com/word2vec-tutorial/)私がpipを使って行ったときには、少なくともビルドエラーは発生しません。 – Thagor

答えて

0

深く掘り下げて、コーパス全体をメモリに読み込んで、さまざまな環境でgensimを実行するようなものを試した後、すべて効果がありません。コードが部分的にしか並列化されていないことはgensimの問題です。この結果、ワーカーはCPUを完全に利用できなくなります。 github linkの問題を参照してください。

+0

私は上記のように1時間後にのみ行うことができます – Thagor

0

あなたはおそらくこれを実行しましたが、並列Cythonisedバージョンをassert gensim.models.doc2vec.FAST_VERSION > -1で使用していることを確認してください。

gensim doc2vecコードは並列化されていますが、残念ながらGensimの外部にあるI/Oコードは並列化されていません。たとえば、github issueでは、並列化は実際にコーパスがRAMにロードされた後に実現されますdoclist = [doc for doc in documents]

+0

私はこのすべての役に立たなかった – Thagor

関連する問題