Vengineerの戯言

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

Cerebras SystemsのSoftware Stack

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

Cerebras SystemsのSoftware Stackについて、 O'REILLYのTensorFlow World 2019 Conferenceにて発表されたようです。

 

www.cerebras.net

スライドは、ここ です。

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 compiler
  • Bare-metal compiler (LLVM based C++ compiler)

にて、作れると。。。Polyhedral出てきましたよ。。。