Vengineerの戯言

人生は短いけど、長いです。人生を楽しみましょう!

Mesh TensorFlow って?

@Vengineerの戯言 : Twitter
SystemVerilogの世界へようこそすべては、SystemC v0.9公開から始まった 

ディープ・ラーニングにて学習するのって、多くは Data Parallel。

Data Parallelについては、TensorFlow XLAに興味を持ち始めた頃からちょっとだけですが学びましたが、もう一つもModel Parallel。こっちはほとんど知らない。いや、全く知らないので。。。

で、Model Parallel ができるものってなの?

が見つかった。他にもあると思いますが、あったら、教えてください。

xtech.nikkei.com

ChainerMNのModel Parallelについては、このブログにいろいろと書いてありますね。

GPU間のデータ移動については、Send/Recv を入れるのね。。これ、人間がやるの?

tech.preferred.jp

論文は、これ↓

arxiv.org

Mesh TensorFlowについて呟いてみたら、、、Kazさんが教えてくれた。

 

このビデオのようだが、これ、観たよ。ただ、Mesh TensorFlow のところは記憶にないな。。。

youtu.be


Mesh TensorFlow に関しては、TensorFlow Dev Summit ’19 の方にありますね。

 

www.youtube.com

Mesh TensorFlow、デバイスが Mesh Network になっているということね。

この記事にあるように、Google TPU v2/v3 は Mesh Network ね。

www.infoq.com

論文を眺めてみたら、

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.

ともあるんだけど、うーん。