Vengineerの戯言

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

HotChips32を振り返る:Google TPU v2/v3 の詳細

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

HotChips32を振り返る:2日目は、Google TPU v2/v3 の詳細

www.anandtech.com

Google TPU v2/v3 については、Googleから少しつづ内部構成の解説が出てきました。

今回の発表では、v1 => v2 => v3 でどのようにして改善していったかを示す感じの発表のようでした。

Production Pipeline において、Data => Training => Serving が必要で、2015年にv1が出る前は、Data Capabitilyのみ Target level になっていましたが、v1 を導入したことにより、Serving が Target level に到達できた。残りのTrainingは2017年のv2にて到達できたということ。

Production Pipelineを考えて、ちゃんとステップ毎に考えているんだ。

(当初からそうじゃなかったかもしれないが、そうなっているのが凄いです。)

 

で、Trainingでのチャレンジが次のスライドに。

  • More Computation : Backprop, transpose, derivatives
  • More Memory : Keep data around for backprop
  • Wider Operands :  Need dynamic range (more than int8)
  • More Programmability : User experimentation, optimizers
  • Harder Parallelization : Sacle-up instead of scale-out

次のスライドは、「Our Constraints」

  • Time : A development dat saved is a deployment day earned.
  • Staffing : We have a lean team.

 Leanって、どのくらいの人数なのかしら。

 

TPU v1 Recap => TPU v2 Changes => TPU v3 Changes というスライドに変わっていく。

これらスライドは凄くわかりやすいです。

v1 の Activation Storage + Activation Pipeline を v2 では Vector Memory に置き換え、Matrix Multiply Unit から Accumulators へのパスを無くし、Vector Memory 経由で Activation Pipeline に繋げると。Vector Memory中心のアーキテクチャに返信。

DDR3からHBMに変更し、HBM経由でVector Memory にデータを移動。Matrix Multiply Unitへのデータ供給は、Vector Memoryからではなく、Vector Unitからに変更。

 

次のスライドでは、HBMからVector Unitに接続しているが、Vector Memory => Vector Unitなんでしょうかね。Vector Unit から Scaler Unit、Transpose/Permute Unit、Matrix Multiply Unitに接続。HBMからは Interconnect Router にも接続、また、Vector Unitにも接続。Interconnect Router 経由で 4つのPortから外部に。。。

次のスライドで、2つのコアになって。

ここまでで、Trainin のチャレンジが実現できたのでは。

 

次のスライドでは、「TPU Core」の説明

  • VLIW Architecture
  • Linear Algebra ISA

Scale Unit、Vector Unit、Matrix Multiply Unit、のスライドもあります。

322b VLIW bundle

  • 2 scalar slots : ALU0/ALU1
  • 4 vector slots (2 for load/store)
  • 2 matrix slots (push, pop)
  • 1 misc slot
  • 6 immediates

 

この部分は、既に公開済みだったような気がする。Scala Unitの詳細は今回が初めてですね。

Scalar Unitには、

  • ALU0/ALU1
  • 32 x 32b Scalar Register File
  • 4K x32b Scalar Memory
  • DMA Interface

これですね。Scalar Memoryとのデータ移動は、DMAなんですかね。

Instrunction Bundle Memory へはDMAによって送り込むっぽい。

To Vector and Matrix Unitsへは、次の命令が実行されるっぽい。

  • 4 vector slots (2 for load/store)
  • 2 matrix slots (push, pop)
  • 1 misc slot

Vector slot へは、LoadとStoreが各2slots。1slotだと、Ping-Pong処理できないからかな。

Matrix slot へは、push と pop 。push って、Queueになっているのかな。。。

misc slot は、Transpose / Permute Unit

 

次のスライドでは、Vector Unit

Scalar UnitからのコントロールVector Controlが受ける

  • 32x 32b Vector (Lane) Memory
  • 8 x (ALU0/ALU1 + 32 x 32 Vector (Lane) Register File)
  • Register FIle 経由で to Matrix Unit / from Matrix Unit
  • DMA Interface

 

次のスライドでは、Matrix Multiply Unit

  • 128 x 128 systolic array
  • bfloa16 multiply + float32 accumulation

 

次のスライドでは、v1 の 256x256 を v2 の 128x128 にした理由

  • sweetspot for utilization without devoting more area to wiring

 

次のスライドでは、Transpose, Reduction, Permute Unit

次のスライドでは、Memory System

  • TPU Core <= Interconnect Router
  • TPU Core <=> HBM
  • HBM <=> Interconnect Router
  • HBM <=> PCIe Queues

TPU Core <=> HBM 間は太い。

 

次のスライドは、Interconnect

  • 500 Gbps per link
  • Assembled into 2D torus
  • Software view : Uses DMAs just like HBM, Restricted to push DMAs, Simply target another chip id

 

次のスライドは、FloorPlan。これは公開済み。

 

ここから、v3。発表者も変わった模様。

  • +30 % freq (TPU Core)
  • +30 % b/w (HBM)
  • 2x capacity (HBM)
  • +30 & b/w (interconnect)
  • 4x nodes (Interconnect)

クロックを700MHz => 940MHz に。。+30%。

interconnect は、500 Gbps => 650 Gpbs 以上?

4x nodes で、256チップから1024チップへ。

 

その後のスライドは、性能(ベンチマーク)

 

Q. TPU v4 は GCPで使える? 

A. roadmapにない。今は内部利用のみ。

Q. interconnectでのプロトコルは?

A. Custom but super fast

 

明日は、IBM POWER10

 

このブログでのGoogle TPU v2/v3 の記事

vengineer.hatenablog.com

その前が、これかな。

vengineer.hatenablog.com