summary:
主にTensorFlow,PyTorch,MXNetなどのディープラーニングフレームワークと統合され,MPI[Message Passing Interface]とNCCL[NVIDIA Collective Communications Library]を活用することにより,高速かつスケーラブルな分散学習を可能とした.
Horovodは,踊り手達が手をつないで円を作り協調して踊る,ロシアやウクライナの伝統的な円形の集団舞踊хоровод[ホロヴォド]に由来.
Horovodライブラリの名前は,この集団舞踊のように,複数のGPUやノードが連携して協調的に動作する分散深層学習の概念を表現している.データ並列処理において,各プロセスが連携して効率的にモデルを学習させる様子を,手をつないで円を描く踊り手達に準えたものである.
2015年頃から,ディープラーニングの大規模化に伴い,複数のGPUや複数のノード[マルチマシン]を活用した分散学習が求められるようになった.しかし,当時の分散学習には様々な課題があった.TensorFlowの標準分散学習[tf.distribute.Strategy]は複雑で扱いにくく,早期のtf.distribute APIは設定が難しくスケーラビリティが低い状況であった.また,データ通信のオーバーヘッドが大きく,GPU間で勾配を同期するための通信[AllReduce]がボトルネックとなり,スケールアウト[GPUを増やした際の性能向上]が十分に得られなかった.さらに,HPC[High-Performance Computing]との統合が弱く,当時のディープラーニングフレームワークは,MPIのようなHPC向けの通信技術を活用できていなかった.
こうした課題を解決するため,Uberのエンジニアリングチームが2017年にHorovodを開発・公開した.Horovodは,HPC[高性能計算]分野で広く使われていたMPIを活用し,多くの利点を実現した.シンプルなAPIにより,Horovod.init(),Horovod.DistributedOptimizer()など,最小限の変更で分散学習を実装できるようになった.また,高いスケーラビリティをNCCLを活用したAllReduceにより実現し,勾配同期の効率が向上した.Uberの社内テストでは,256 GPU以上の大規模学習でも高いスケーリング効率を達成している.さらに,マルチフレームワーク対応により,TensorFlow,PyTorch,MXNetなど複数のディープラーニングフレームワークをサポートしている.
Mathematics is the language with which God has written the universe.