Tenstorrentについて
Tenstorrentはアメリカ合衆国カリフォルニア州サンタクララに本社を置くAIアクセラレータを作っている会社です。
AIアクセラレータというとnvidiaやAMD(SIMD)、Qualcomm(VLIW)なども作っていますが、同社の製品はそれとは違ったアーキテクチャ(MIMDライク)を特徴としています。若干語弊がありますが、Xeon Phiに似たアプローチ、と言ってみるとわかりやすいでしょうか(ありましたね、そんなの!)。
ただし、AI向け製品を標榜するだけあり低精度演算に特化しています。
今回はセットアップ回なので、詳細なプログラミングについては解説していません。それらは別の記事にする予定です。
Tenstorrent製アクセラレータのアーキテクチャ
Tenstorrent製アクセラレータは計算ユニットとNoC(Network On Chip)ルーターの組が集まって構成されています。これをTensix Coreと呼びます。
Tensixコアには5つのRISC-V CPU(Baby RISC-Vと呼ばれる)が搭載されていて、うち2つがNoCルーターを制御し、3つは計算ユニットにデータを流し込み、計算ユニットを実際に操作し、計算されたデータを取り出して格納する、という役割を果たします。
注意点として、計算対象のデータは基本的にBaby RISC-V上では計算されないということです。ふだんはあくまでデータの流れを制御するだけです。この点はデータフローアーキテクチャ的な部分があります。
(実はBaby RISC-Vは計算できないわけではない)
流し込むデータとその制御のカラクリについては、TT-Metaliumについて解説する回で説明しようと思います。
Blackholeについて
Blackholeは、Tenstorrentが製造する第3世代のAIアクセラレータです。
前代となるWormholeからは核心となるTensixコアの構造は変わりませんが、クロックは最大1.35GHzにまで引き上げられ、FP8で最大664TFLOPSを実現しています。
スペック
Blackhole世代には現状大きく分けてP100とP150の2種類があります。
P100とP150の一番大きな違いとして、QSFPによる拡張に対応しているか、というのがあります。
チップ間はEthernetで拡張することができるようになっていて、大規模なクラスタを構築できます。
P150aとP150bの違いは空冷ファンが付いているか否かです。
この記事ではP100aを扱います。
ハードウェアの取り付け
準備
ホスト側ハードウェアに必要な要件として公式ドキュメントからは以下が挙げられています。
| パーツ | 要件 |
|---|---|
| CPU | x86_64アーキテクチャ |
| マザーボード | PCIe 5.0 2スロット幅 Gen 5より低速でも動作可能ではある |
| メモリ | 64GB |
| ストレージ | 100GB↑(2TB以上推奨) |
| 電源コネクタ | 12VHPWR |
| TBW | 最大300W |
| 電源ユニット | ATX 3.1↑ |
| OS | Ubuntu 22.04 |
| インターネット接続 | ドライバインストールに必要 |
12VHPWRの変換ケーブルはsenseピンの都合からか使えないものがあるので、直接生えている電源ユニットを推奨します。
これはPCIeカード全般そうかもしれませんが...
取り付け
この環境に取り付けました。
[自分の環境]
PCIe カードの形をしているので、グラボのように取り付けるだけです。

(安物のスマホで撮ったらノイズがヤバすぎる。至急買い替えを検討)
またカバーが総金属製で重いので、グラボステイを利用することを推奨します(自分の環境ではステイ的なのがPCケースについていたので、それを使いました)。
コンピューターの電源を入れ、上に写っているとおり、ボード上の赤と緑のLEDが点灯したら正常に取り付けできています。
スペックシート上ではPCIe 5.0接続と記述されていますが、筆者の環境ではGen 5ではリンクアップできず、BIOSからマザーボード側のPCIeスロットの速度をGen 4に落として動かしました。
確認
起動後にターミナルでlspciを実行して01:00.0 Processing accelerators: Tenstorrent Inc Blackholeのように認識されるか確認してください。
ハマったところ
ここまでツラツラと書き連ねてきましたが、最初電源ユニットが原因で立ち上がらなくてだいぶ困りました。
メインPC(12VHPWRなし)に取り付けたところ、緑のLEDが点灯せずまたtt-smiで認識せず、知人に連絡してパーツを東京都某所に持ち合って検証したところ動いたのでArkとツクモでパーツを知人の手伝いで調達して急きょマシンを新規に建造(別の電源を流用←!)したものの動かねえじゃねえかと。
「これ電源では?」となって、電源も調達しなおすという無茶苦茶をやらかしました。
素直にATX 3対応の電源か、動作報告のある変換ケーブルを買ってください。
ソフトウェアのインストール
準備
aptのリポジトリを更新しておきます。
sudo apt update
Tenstorrentのドライバーと各種ソフトウェアインストール用のスクリプトが公式から提供されています。
インストール用スクリプトはcurlとjqを必要とするのでインストールしておきます。
sudo apt install curl jq
インストール
以下のスクリプトを使うと、必要なコンポーネントをインストールできます。
https://github.com/tenstorrent/tt-installer/releases/latest/download/install.sh
ヘッドレスインストールをしたり、ドライババージョンを指定したいなどでなければそのまま実行して問題ないでしょう(ただし、常に不明なスクリプトの実行には気をつけてください。欲を言えばドライバもaptから入れられるようになってほしい。)。
URLからcurlして直接実行するか、ファイルに保存して実行すると、以下のような出力が期待できます。
__ __ __
/ /____ ____ _____/ /_____ _____________ ____ / /_
/ __/ _ \/ __ \/ ___/ __/ __ \/ ___/ ___/ _ \/ __ \/ __/
/ /_/ __/ / / (__ ) /_/ /_/ / / / / / __/ / / / /_
\__/\___/_/ /_/____/\__/\____/_/ /_/ \___/_/ /_/\__/
[INFO] Welcome to tenstorrent!
[INFO] This is tt-installer version 1.6.0
[INFO] Log is at /tmp/tenstorrent_install_l2ULbx/install.log
[INFO] Using software versions:
[INFO] TT-KMD: 2.3.0
[INFO] Firmware: 18.7.0
[INFO] System Tools: 1.3.1
[INFO] tt-smi: 3.0.27
[INFO] tt-flash: 3.4.2
[INFO] This script will install drivers and tooling and properly configure your tenstorrent hardware.
OK to continue? [Y/n]
カーネルモードドライバ、ファームウェア、tt-smi(テレメトリ確認ツール)、ファームウェア書き換えツールなどがインストールされます。
インストールを開始する場合はyを入力してEnterキーを押します。
途中でsudo権限のためのパスワードが要求されるので入力します。
インストールの終盤でファームウェアアップデートが自動で行われるので、フラッシュ中は中止したり電源を切らないでください。
確認
ホームディレクトリ直下に.tenstorrent-venvというPython仮想環境が作成されています。
source .tenstorrent-venv/bin/activateしたあとにtt-smiでボードの状態を確認します。
正常にインストールされていれば、以下のようになります。

この記事で説明することはここまでです。次はTT-Metaliumを使った開発環境の構築を取り上げていきます。


