Skip to main content
QUICK REVIEW

[論文レビュー] Parallelizing Word2Vec in Multi-Core and Many-Core Architectures

Shihao Ji, Nadathur Satish|arXiv (Cornell University)|Nov 18, 2016
Topic Modeling参考文献 7被引用数 8
ひとこと要約

この論文では、Hogwildにおけるベクトル-ベクトル演算をミニバッチ化とネガティブサンプル共有を介して行列-行列乗算(GEMM)に置き換えることで、高度に最適化されたword2vec実装であるHogBatchを提案する。これにより、マルチコアおよびマニーコアシステムでニアーライナー近似のスケーリングが可能となり、Intel Broadwellで580万語/秒、Knights Landingで890万語/秒の、これまでに報告された中で最も高速な性能を達成した。

ABSTRACT

Word2vec is a widely used algorithm for extracting low-dimensional vector representations of words. State-of-the-art algorithms including those by Mikolov et al. have been parallelized for multi-core CPU architectures, but are based on vector-vector operations with "Hogwild" updates that are memory-bandwidth intensive and do not efficiently use computational resources. In this paper, we propose "HogBatch" by improving reuse of various data structures in the algorithm through the use of minibatching and negative sample sharing, hence allowing us to express the problem using matrix multiply operations. We also explore different techniques to distribute word2vec computation across nodes in a compute cluster, and demonstrate good strong scalability up to 32 nodes. The new algorithm is particularly suitable for modern multi-core/many-core architectures, especially Intel's latest Knights Landing processors, and allows us to scale up the computation near linearly across cores and nodes, and process hundreds of millions of words per second, which is the fastest word2vec implementation to the best of our knowledge.

研究の動機と目的

  • メモリ帯域幅の制限と計算リソースの低利用率が原因で、現代のマルチコアおよびマニーコアシステムにおけるHogwildベースword2vecのスケーラビリティが著しく低い問題に対処すること。
  • 複数のコンテキストワードと共有されたネガティブサンプルをバッチ処理することで、word2vecの更新におけるデータ局所性を活用し、レベル3 BLAS操作を可能にすること。
  • 最小限の精度損失で、クラスタ内の複数ノードにわたるデータ並列性を用いて強スケーリングを実現すること。
  • 特にKnights Landingを含むIntel最新アーキテクチャにおいて、ニアーライナーのパフォーマンススケーリングを達成すること。既存のCPUおよびGPUベース実装を上回ること。

提案手法

  • 入力コンテキストワードをミニバッチ化して、複数のword2vec更新を1つの行列演算に統合する。
  • ネガティブサンプル共有を実装し、同じセットのネガティブサンプルをバッチ内の複数の入力ワードで再利用することで、GEMMベースの計算を可能にする。
  • 元のベクトル-ベクトル内積演算を行列-行列乗算(GEMM)に変換し、メモリ帯域幅の圧力を軽減するとともに、計算リソースの利用効率を向上させる。
  • 同じモデルエントリへの更新をコalescingすることで、CPUコア間のキャッシュラインのピングポングを低減し、共有メモリ並列処理を実現する。
  • 定期的なモデル同期を用いて、クラスタ内のノード間でデータ並列性を活用し、分散メモリシステムへの拡張を図る。収束性を維持する。
  • 広いベクタユニットと高いパッケージ内メモリ帯域幅を活用するように、IntelのKnights Landingアーキテクチャに最適化する。

実験結果

リサーチクエスチョン

  • RQ1GEMMベースのバッチ処理により、メモリ帯域幅の圧力を軽減することで、現代のマルチコアCPUにおけるword2vecのパフォーマンスが著しく向上するか?
  • RQ2ネガティブサンプル共有により、モデルの精度を損なわず、効率的な行列-行列乗算がword2vecで実現可能か?
  • RQ3提案されたHogBatchアルゴリズムは、36コアのCPUおよびクラスタ内最大32ノードにわたってニアーライナーのスケーリングを達成できるか?
  • RQ4Throughputおよび精度の観点から、HogBatchのパフォーマンスは、CPUおよびGPUベースの最先端実装と比較して優れているか?

主な発見

  • HogBatchは36コアのIntel Broadwell CPUで580万語/秒を達成し、元のHogwild実装と比較して3.6倍の高速化を実現した。
  • IntelのKnights Landingプロセッサでは、890万語/秒を達成し、CPU上で報告されたword2vecの最高スループットとなった。
  • Broadwell CPUの全36スレッドにわたって、HogBatchはほぼ線形にスケーリングするが、元のHogwild実装は8スレッドを超えると著しく性能が低下する。
  • 分散モードでは、最大16台のBroadwellノードまたは8台のKnights Landingノードにわたって、HogBatchはニアーライナーにスケーリングし、1億語/秒を超えるスループットを達成したが、精度は1%の損失にとどまった。
  • 4台のKnights Landingノードでのパフォーマンスは2940万語/秒に達し、4台のTitan-X GPUを用いた最良のGPUベース実装(2000万語/秒)を上回った。
  • GEMM演算の使用により、キャッシュラインの競合とスレッド間通信が低減され、計算リソースの効率的利用が可能となり、スケーラビリティが向上した。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。