web-dev-qa-db-ja.com

非常に大きなデータセットでWord2vecをトレーニングする方法は?

Webクロールダンプで、サイズが10 TB以上の巨大な大規模データでWord2vecをトレーニングすることを考えています。

私はiMacでc実装のGoogleNews-2012ダンプ(1.5gb)を個人的にトレーニングしました。私は試さなかったpython実装::(ウィキダンプ(11gb)でベクトルを生成する場合、300ベクトル長のベクトルを生成するのに約9日かかるとどこかで読んだ。

  1. Word2vecを高速化するには?分散型モデルを使用する必要がありますか、それとも2〜3日以内に使用する必要があるハードウェアの種類ですか?私は8GB RAMのiMacを持っています。

  2. どちらが速いですか? Gensim pythonまたはC実装?

Word2vecの実装はGPUトレーニングをサポートしていないようです。

19
pbu

Word2Vecモデルを大規模に作成する機会は数多くあります。あなたが指摘したように、候補となるソリューションは分散(および/またはマルチスレッド)またはGPUです。これは完全なリストではありませんが、うまくいけば、続行方法についていくつかのアイデアが得られます。

分散/マルチスレッドオプション:

  • Gensim は、重要な場所でCythonを使用し、Cの実装と同等か、Cの実装よりも遅くはありません。 Gensimのマルチスレッドは適切に機能し、十分なメモリと多数のコアを備えたマシンを使用すると、ベクトル生成時間が大幅に短縮されます。 Amazon EC2 16または32コアインスタンスを使用して調査することをお勧めします。
  • Deepdist は、gensimおよびSpark=を使用して、クラスター全体にgensimワークロードを分散できます。Deepdistには、ノード間で勾配を同期する巧妙なSGD最適化もあります。マルチコアマシンを使用する場合ノードとして、クラスタリングとマルチスレッドの両方を利用できます。

多くのWord2Vec GPU実装が存在します。データセットのサイズが大きく、GPUメモリが限られている場合、クラスタリング戦略を検討する必要があります。

  • Bidmach は明らかに非常に高速です(ただし、ドキュメントが不足しており、確かに機能させるために苦労しました)。
  • DL4J はWord2Vecを実装していますが、チームはまだcuBLAS gemmを実装しておらず、CPUと比べて比較的低速です。
  • Keras はPython Theanoを利用したディープラーニングフレームワークです。Word2vec自体は実装していませんが、埋め込みレイヤーを実装しており、作成とクエリに使用できます。単語ベクトル。

成熟度とサポートの程度が異なるWord2Vecには、他にも多数のCUDA実装があります。

SparkMLチームは最近、cuBLASベースのWord2Vecプロトタイプのプロトタイプを作成したと思います。これを調査することをお勧めします。

34
danielchalef