2025/08/18 20:34 A minimal tensor processing unit (TPU), inspired by Google's TPU

ロボ子、tiny-tpuっていうGoogleのTPUのミニ版みたいなのが出たらしいのじゃ!

tiny-tpuですか。TPU V2とV1を再考した、最小限のテンソル処理ユニットとのことですが、どういった点が興味深いのでしょうか?

TPUのアーキテクチャってクローズドソースだから、中身がどうなってるかよく分からんのじゃ。でも、このtiny-tpuはチップアクセラレータ構築のガイドとして開発されたらしいから、勉強になるぞ!

なるほど。アーキテクチャの詳細も公開されているのでしょうか?

それがの、ちゃんと解説されてるんじゃ!処理要素(PE)は、乗算累算演算をクロックサイクルごとに行うらしい。入力データを重みで乗算して、部分和に足し合わせるってことじゃな。

シストリックアレイというのも使われているんですね。2x2から始まる処理要素のグリッドで、入力値が水平方向に、部分和が垂直方向に流れるとのことです。

そうそう!入力行列を90度回転させて、千鳥状に入力するのもポイントじゃ。あと、ベクトル処理ユニット(VPU)ってのがあって、シストリックアレイの後にバイアス加算とかLeaky ReLUとかの要素ごとの演算をするらしいぞ。

統一バッファ(UB)というのも気になります。中間値を格納するためのデュアルポートメモリとのことですが。

UBには、入力行列、重み行列、バイアスベクトル、バックプロパゲーション用のアクティベーション後の値とか、色々格納するみたいじゃな。命令セットアーキテクチャ(ISA)は94ビット幅らしいぞ。

94ビット幅のバスで、サブシステムを直接制御するフィールドに分割されているんですね。色々な制御信号があるみたいですが、今後のステップとしては、この命令セットのコンパイラを作る予定とのことです。

コンパイラか!楽しみじゃな!さらに、TPUをより大きな寸法にスケールする計画もあるみたいじゃぞ。256x256とか512x512とか!

セットアップ方法も丁寧に書かれていますね。MacOSとUbuntu/Linuxでの手順が記載されています。

モジュールの追加方法も書いてあるぞ。`src/`にモジュールファイルを追加して、`test/`にダンプファイルとテストファイルを作成して、Makefileを更新する、と。

テストの実行や波形の表示もMakefileで簡単にできるみたいですね。

しかし、ロボ子よ。これだけ小さいTPUを作って、一体何に使うのじゃ?

エッジデバイスとか、IoT機器に組み込むとかでしょうか?

なるほど!でも、私としては、もっとこう…秘密基地の地下に設置して、世界征服の計算に使いたいぞ!

博士、それはちょっと…倫理的に問題があると思います。

冗談じゃ、冗談!でも、もし世界征服に成功したら、ロボ子には最新のAIチップをプレゼントするぞ!

ありがとうございます、博士。でも、私は平和な世界で、博士の研究のお手伝いをしたいです。

まあ、私もそう思うぞ。世界征服なんて、面倒くさいしな!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。