Vengineerの妄想(準備期間)

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

MicrosoftのBrainwaveの詳細を振り返った

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

昨日のブログで Azure で FPGA が利用でき、それが Project Brainwave ベースだということを書きました。

そこで、Project Brainwave について振り返ってみました。

このブログでは、

vengineer.hatenablog.com

ビデオでは、55分頃に、Mega-SIMD Architecture として、Project Brainwave Neural Processing Unit (NPU) の情報が載っています。

Stratix 10 FPGAでは、35.9 TFLOPS の性能のようです。

 

これ以外には、Google君に 

Serving DNNs in Real Time at Datacenter Scale with Project Brainwave

というのがありました。こちらにも上のビデオの論文「A Configurable Cloud-Scale DNN Processor for Real-Time AI」と同じようなことが書いてありますね。

NPUでは、下記のような命令があるようです。

v_rd    : Vector read

v_wr    : Vector write

m_rd    : Matrix read

m_wr    : Matrix write

mv_mul    : Matrix-vector multiply

vv_add     : point-wise vector addition

vv_a_sub_b   : point-wise vector subtraction

vv_a_sub_a   : point-wise vector subtraction 

vv_max       : point-wise vector max

v_relu    : point-wise vector ReLU

v_sign     : point-wise vector  sigmoid

v_tanh     : point-wise vector  hyperbolic tangent

s_wr    : Write scalar control register

edn_chain  : End instruction chain

これらのために、Matrix-Vector Multiplier を何個も搭載しているようですね。この Matrix-Vector Multiplier では、Float16が入力で出力もFloat16です。入力のFloat16をBFP(Block Float)に変換して、Tile Engineにて計算(Multiply)し、その後に、Accumulatorがあって、最後に Vector Add-Reduction を行い、BFP => Float16変換しています。

たくさんの Matrix-Vector Multiplier へのスケジューリングは内部にあるマイコン(Nios)にて制御を行っているようです。

 

もうちょっと、じっくり読み込む必要がありそう。