@Vengineerの戯言 : Twitter
SystemVerilogの世界へようこそ、すべては、SystemC v0.9公開から始まった
HotChips32を振り返る:2日目は、Google TPU v2/v3 の詳細
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 の記事
その前が、これかな。