ほとんどアーキテクチャについて理解せずに Claude 任せで実装できました。
ただ流石に Claude の主人たる私がアーキを理解していないのは、指示を出すうえでも不利だと思うので、アーキテクチャぐらいは理解しておこうと思います。
アーキテクチャ概略
Tenstorrent のハードウェア仕様はこのリポジトリで公開されています。
従来の GPU とは異なる頭の使い方が必要です。データの置き方、演算の分割、メモリ転送、カーネルの粒度、プロファイリングの読み方など、独特の勘所があります。特に GPU と違って、同時に異なるコアで異なる演算を実行できる点がおもしろいです。「IF文が書けるCuda」だと思ってます。
物理レイアウト
Blackhole のチップには多様なコアがグリッド状に配置されています。
- Tensix Core : 行列演算の主役
- DRAM : GDDR6 DRAM へのアクセスを制御するコア
- CPU : SiFive x280 Big RISC-V
- PCIe : ホストデバイス間 PCIe 通信
- ETH : チップ間イーサネット通信
- ARC : 管理用のコア
- SEC : セキュリティコア
コアレイアウト
tt-metal ではコアを仮想的に次のようなレイアウトとして扱います。
- Dispatch Core : 命令を発行するコア
- Compute Core : 計算を実行するコア
Fusing
このようなマルチコア構成は歩留まり対策に有効です。半導体製造後の検査で欠陥のあるコアは無効化します。この時にヒューズを焼き切ることから fusing などと呼ばれます。Intel の Core i9 -> i7 -> i5 -> i3 もコア数が異なる設計をしているのではなく、全てi9の設計で製造して、生き残ったコア数に応じてグレードを分けて販売しているにすぎません。
Harvesting
ファームウェア v19.5.0 でコア数が 140 から 120 に削減されました。これは歩留まり対策の一環なのですが、本来 140 コア正常に動くはずのデバイスも一律で無効化されてしまいました。このツールを使うことで復活することができます。
まとめ
AI アクセラレータのアーキテクチャというと複雑で難しい技術がたくさんあるかのように思われるかもしれません。しかしその実は非常に単純で 演算器を並べて NOC で繋げた 物体です。
実は NoC が nvidia に対抗する肝であり、また罠でもあります。NoCを使えばデータ移動ボトルネックを緩和できますが、プログラミングが非常に難しくなります。
次回の記事では NoC について深掘りしてみます。