@Vengineerの戯言 : Twitter
SystemVerilogの世界へようこそ、すべては、SystemC v0.9公開から始まった
ディープ・ラーニングにて学習するのって、多くは Data Parallel。
Data Parallelについては、TensorFlow XLAに興味を持ち始めた頃からちょっとだけですが学びましたが、もう一つもModel Parallel。こっちはほとんど知らない。いや、全く知らないので。。。
で、Model Parallel ができるものってなの?
- Mesh TensorFlow
- ChainerMN
- PyTorch v1.4 : GETTING STARTED WITH DISTRIBUTED RPC FRAMEWORK
- NVIDIA Megatron-LM 論文
が見つかった。他にもあると思いますが、あったら、教えてください。
ChainerMNのModel Parallelについては、このブログにいろいろと書いてありますね。
GPU間のデータ移動については、Send/Recv を入れるのね。。これ、人間がやるの?
論文は、これ↓
Mesh TensorFlowについて呟いてみたら、、、Kazさんが教えてくれた。
Graphcoreのドキュメントを眺めていますが、Data Parallelだけでなく、Model Parallelができるのはある意味新しいアクセラレータ。。
— Vengineer@アマゾンプライムで映画三昧 (@Vengineer) 2020年3月27日
Google TPUもModel Parallelを試みているけど、まだ公式にはサポートはしていないのだろうか?と思って調べてみたら、Mesh TensorFlow ではサポートされているっぽい
このビデオのようだが、これ、観たよ。ただ、Mesh TensorFlow のところは記憶にないな。。。
Mesh TensorFlow に関しては、TensorFlow Dev Summit ’19 の方にありますね。
Mesh TensorFlow、デバイスが Mesh Network になっているということね。
この記事にあるように、Google TPU v2/v3 は Mesh Network ね。
論文を眺めてみたら、
Mesh TensorFlowでは、
- Data-Parallel Layout
- Model-Parallel Layout
- Data-Parallel, Model-Parallel Layouts
ができるんだって。
- As of the writing of this paper, implementations exist for generating SPMD TensorFlow code for TPUs,or MIMD code (using device placement) for multi-CPU/GPU configurations.
CPU/GPUは MIMD コードなんだね。using device placement とあるので、各デバイス毎のプログラムになるんだろうね。
TPUは、SPMD TensorFlow code とあるんだけど、どうなっているんだろうか?
Future Workには、
- Implementation of SPMD programming on CPU/GPU clusters.
ともあるんだけど、うーん。