2017-05-30 7 views

答えて

1

GensimのDoc2Vecは、複数のマシンでトレーニングを配布するようには設計されていません。最初の一括訓練を適応させるための重要かつ複雑なプロジェクトです。

データセットと目標にこのような配信が必要なのは確実ですか?多くのコアを持つ1台のマシンで多くの作業を行うことができます& 128GB + RAM。

Doc2Vecモデルをより小さい代表データセットでトレーニングしてから、凍結モデルで.infer_vector()メソッドを使用して、任意の数の追加テキストのドキュメントベクトルを計算することもできます。これらのフリーズされたモデルは、複数のマシン上でスピンアップすることができ、ドキュメントベクトルの任意の分散計算が可能です。 (初期トレーニングを配布するよりはるかに簡単です)

+0

どうすればいいですか?私は '.infer_vector'を使用することができると理解しています。データが非常に大きく、新しいデータがシステムに入力されるたびにdoc2vecを訓練するのは実用的ではないので、おそらくこれを行う必要があります。問題は、私のデータがpyspark.sql.dataframe.DataFrameとして来て、推論を許可するために、.infer_vector()を使うためにTaggedDocumentフォーマットが必要なことです。このような大きなデータセットで 'df.select(" text ")。rdd.flatMap(lambda r:r).collect()'を使うと、私は長い間立ち往生しています。どのように効果的にそれを行うことができ、任意に分散した計算を許可する方法。 – Regina

+0

上記のように、gensimのDoc2Vecはマルチ・マシンまたはマルチ・プロセス・トレーニング用に設計されていないため、Sparkを中止し、シングル・プロセス・トレーニング用に使用するすべてのドキュメントをスクラッチ・ファイルに書き込み、 Sparkの外でトレーニングを行い、後でSparkのステップで(凍結した、読み取り専用の)訓練されたモデルを利用できるようにします。 – gojomo

関連する問題