@Vengineerの戯言 : Twitter
SystemVerilogの世界へようこそ、すべては、SystemC v0.9公開から始まった
Cerebras SystemsのSoftware Stackについて、 O'REILLYのTensorFlow World 2019 Conferenceにて発表されたようです。
スライドは、ここ です。
Cerebras SystemsのWSEでは、モデル内の各レイヤ毎ではなく、モデル全体をチップ内にマッピングしちゃいます。そこがポイントです。そのために、Software Stackとしてどのようなことをやっているのがを このスライド にて説明しています。
TensorFlowに関しては、19頁に以下のように書いています。
Cerebras software stack heavily uses
- XLA
- tf.estimator.Estimator
- tf.data.DataSet
XLAはそうでしょう。Estimatorはユーザーからの利便性を考えるとこれに隠蔽するのが妥当でしょう。で、DataSet は何故?と思うかもしれませんが、詳しくは書きませんが、これ、非常に重要です。
16頁に流れが書いてあるのですが、以下の4ステップでチップで実行するためのデータを生成しているようです。
- Extract - Convert TF via XLA to Cerebras graph IR
- Match - Obtain graph covering of Cerebras graph with Cerebras kernels
- Place & Route - Assign kernels to WSE regions and connect them up
- Link - Create executable output
Extract というフェーズにて、TensorFlowのコードをXLA経由に、CerebrasのグラフIRの LAIR (Linear Algebra IR)に変換します。変換したLAIR を Cerebrasが用意している Kernel に割り当てるのが Match というフェーズ。Place & Route フェーズでは、Kernelをチップ内に配置&配線する(これ、FPGAの配置&配線と同じようなことをやっているんじゃないですかね。ただし、各ブロックのサイズとか機能はFPGAのそれよりもかなり大きいものだけど。最後にデータとしてまとめるのが Link フェーズ。。
Software Stackというより、ディープラーニングに特化したFPGAの開発ツールっぽい。。Xilinxでもやっているようなものですね。ただし、チップの規模が超巨大だということ。
それから26頁には、カスタムOpの書き方が載っています。
にて、作れると。。。Polyhedral出てきましたよ。。。