Baiduの「Ring Allreduce」ライブラリは、多くのGPUノードで機械学習の効率を高める

BaiduのSilicon Valley AI Lab(SVAIL)は、深い学習コミュニティのためのリングオールリダクションアルゴリズムの実装を発表しました。これにより、GPUモデル間でニューラルネットワークを大幅に高速にトレーニングできます。

f:id:miyamotok0105:20170222044225j:plain

効率的な並列トレーニングの必要性

ニューラルネットワークが数億、さらには10億を超えるパラメータを含むようになったため、トレーニングに必要なGPUノードの数も増加しました。しかし、ノードの数が増えるほど、各ノードによってどれだけの計算量が行われるかという点でシステムの効率が低下します。したがって、高度に並列なシステム全体でパフォーマンスを最大化するアルゴリズムの必要性も増しています。 すべてのGPUノードをより効率的に使用することは、ニューラルネットワークのトレーニングがより迅速に行えることを意味し、ニューラルネットワークを訓練する会社は、ハードウェアを十分に活用する必要はありません。 Baiduは、高性能コンピューティング(HPC)の世界から「リング・オールレデュース」と呼ばれるアルゴリズムを採用し、GPUノードの効率を高めるために深い知識を習得しました。リングオールリダクションアルゴリズムは、1つのGPUを使用するのと比較して、40個のGPUに亘って、例示的なニューラルネットワークのトレーニングを31倍高速化することができます。

Ring Allreduceアルゴリズム

GPUでのトレーニングの方法は、複数のGPUから単一の「レデューサー」GPUにデータが送信されるため、トレーニングの速さにボトルネックが生じます。 より多くのデータを訓練する必要があるほど、この帯域幅ボトルネックが問題になります。

f:id:miyamotok0105:20170222044316j:plain

リングオールリダクションアルゴリズムでは、データを送信するのに費やされる時間が少なくなり、各GPU上でローカルにそのデータを計算するのに多く費やされます。 GPUは、上記の最初の図に示されているように、「論理リング」でデータを相互に送信します。これは、計算をより効率的に行うための構造です。

Baiduの研究者であるAndrew Gibianskyは次のように述べています。「リングの全収縮により、多くのデバイスや多くのノードでニューラルネットワークの勾配を効率的に平均化できます。 「この帯域幅最適化アルゴリズムをトレーニング中に使用することで、通信のオーバーヘッドを大幅に削減し、より多くのデバイスにスケールアップでき、同時に確率的勾配降下の確定性と予測可能なコンバージェンス特性が維持されます。

HPC /機械学習合併の別の例 最近では東京工業大学Nvidiaとの提携によりAI計算による日本最速のスーパーコンピュータを強化してきたように、HPCと機械学習の世界は急速に融合しているようです。

Baiduの新しいリングオールリデュースライブラリが示すように、ハードウェアはますます両方のために開発されており、今もソフトウェアです。 2つの世界の相乗効果は、機械学習人工知能の進化をさらに加速させる可能性があります。 BaiduのSVAILは最新の音声認識モデルを訓練するためにリングオールレデュースアルゴリズムを使用しましたが、今では他の人がグループの実装を利用してさらに面白いことを行うことを期待しています。 グループは、スタンドアロンのC ++ライブラリとTensorFlow用のパッチの両方として、リングオールレダクションの実装をリリースしました。

さらに詳細はこっち Bringing HPC Techniques to Deep Learning - Baidu Research

ソースはこっち GitHub - baidu-research/baidu-allreduce

参考

Baidu's 'Ring Allreduce' Library Increases Machine Learning Efficiency Across Many GPU Nodes