はじめに
Tenstorrnet 社の 画像や生成AIに特化したアクセラレータカード Wormhole™ N300 を動かしてみました。
既存の GPU カードと比較してワットあたりのパフォーマンスやコストパフォーマンスが優れた製品となっておりますので、興味がある方はご覧ください。
様々なネットワークモデルに対応しておりますが、今回は Llama 3.2 11B を使用しました。
<今回使用した弊社取り扱い製品>
対応モデル
AI アクセラレータカード Wormhole™ N300 でサポートしているネットワークモデルの一覧はこちらになります。
(2025年3月13日 時点)
LLM | CNN | NLP |
Llama 3.1 8B | ResNet-50 | BERT-Large |
Llama 3.1 70B | ResNet-50 | |
Llama 3.2 1B | ViT | |
Llama 3.2 3B | Stable Diffusion 1.4 | |
Llama 3.2 11B Vision | YOLOv4 | |
Qwen 2.5 7B | SegFormer Semantic Segmentation | |
Qwen 2.5 72B | Stable Diffusion 3.5 medium | |
Mistral 7B | ||
Mixtral 8x7B | ||
Mamba 2.8B | ||
Falcon 7B | ||
Falcon 40B | ||
QwQ 32B | ||
DeepSeek R1 Distill Llama 3.3 70B |
最新情報はこちら:https://github.com/tenstorrent/tt-metal
また、Wormhole™ n300 PCIe ボード x 1 構成 (もしくは n150 x1 ) をサポートしているモデルの性能は次のとおりです。
(2025年3月13日 時点)
Model | Batch | Device | ttft (ms) | t/s/u |
Target t/s/u |
t/s |
Llama 3.2 11B Vision (TP=2) | 16 | n300 | 2550 | 15.8 | 17 | 252.8 |
Qwen 2.5 7B (TP=2) | 32 | n300 | 126 | 32.5 | 38 | 1040 |
Llama 3.1 8B | 32 | n150 | 141 | 24.6 | 23 | 787.2 |
Llama 3.2 1B | 32 | n150 | 50 | 67.6 | 160 | 2163.2 |
Llama 3.2 3B | 32 | n150 | 78 | 43.5 | 60 | 1392 |
Mamba 2.8B | 32 | n150 | 48 | 12.3 | 42 | 393.6 |
Mistral 7B | 32 | n150 | 9.9 | 25 | 316.8 |
最新情報はこちら:https://github.com/tenstorrent/tt-metal
事前準備
必須ではありませんが、今回SMCのサーバーで仮想マシンを構築して動かしました。
使用したCPU、メモリ、ストレージ、OS 情報は以下のとおりです。
CPU:x86_64 architecture x 32 コア
メモリ:512 GB
ストレージ:700GB (2TB 以上推奨)
OS:Ubuntu 20.04.6 LTS
python 3.8.10 を使用します。下記の手順では miniconda の python 3.8.10 の環境を使用しました。
本記事で使用したソフトウェア・ツールのバージョンは下記のとおりです。
また、インストール時にバージョン指定した方が良いものに関しては、バージョンを指定したコマンドを使用しています。
Device | OS | Python |
Driver (TT-KMD) |
Firmware (TT-Flash) |
TT-SMI | TT-Topology | TT-Metalium |
n300 x4 | Ubuntu 20.04.6 LTS | 3.8.10 | v1.29 | fw_pack-80.15.0.0 (v80.15.0.0) | v3.0.10 |
不要 |
v0.54.0-rc20 |
また、Meta のサイトから Llama3.2 11B Vison Instruct のモデルを入手しておきます。
参考:
環境構築手順
大まかな流れは次の通りです。
Step1.ドライバやファームウェアなどのインストール
Step2.Hugepage 設定
Step3.TT-metalium のインストール
Step4.Llama 3.2 のデモの実施
Step1.ドライバやファームウェアなどのインストール
Step1-1.システム依存関係等のインストール
wget https://raw.githubusercontent.com/tenstorrent/tt-metal/refs/heads/main/install_dependencies.sh
chmod a+x install_dependencies.sh
sudo ./install_dependencies.sh
システムのリブート
sudo reboot
Step1-2.TT-KMD / カーネルモードドライバーのインストール
TT-KMD のインストール
cd ~
sudo apt install dkms
git clone https://github.com/tenstorrent/tt-kmd.git
cd tt-kmd
git checkout -b ttkmd-1.29 ttkmd-1.29
sudo dkms add .
sudo dkms install tenstorrent/1.29
sudo modprobe tenstorrent
sudo lsmod | grep tenstorrent
cd ..
下記のようなメッセージ表示されればインストールは成功
Step1-3.TT-Flash / ファームウェア書き込みツール
TT-Flash のインストール
git clone https://github.com/tenstorrent/tt-flash.git
cd tt-flash
pip install .
TT-Flash のバージョンの確認
tt-flash --version
下記のようなメッセージ表示されれば tt-flash のインストールは成功
TT-Flash ファームウェア のインストール
wget https://github.com/tenstorrent/tt-firmware/raw/main/fw_pack-80.15.0.0.fwbundle
tt-flash --fw-tar fw_pack-80.15.0.0.fwbundle
下記のようなメッセージ表示されれば TT-Flash ファームウェアのインストールは成功
Step1-4.TT-SMI / 診断ツール
TT-SMI のインストール
cd ~
git clone https://github.com/tenstorrent/tt-smi.git
cd tt-smi
pip install .
リセット
tt-smi -r 0
イニシャライズ後、Detected Chips: 2 と表示されれば成功
デバイスが認識されるかどうかを確認
tt-smi
下記のような画面が表示されれば成功
キーボードの q を押下し、画面を抜ける
Step2.Hugepage 設定
deb のインストール
cd ~
wget https://github.com/tenstorrent/tt-system-tools/releases/download/upstream%2F1.1/tenstorrent-tools_1.1-5_all.deb
sudo dpkg -i tenstorrent-tools_1.1-5_all.deb
サービスのスタート
sudo systemctl enable --now tenstorrent-hugepages.service
sudo systemctl enable --now 'dev-hugepages\x2d1G.mount'
システムのリブート
sudo reboot
Step3.TT-metalium のインストール
tt-metal のインストールはいくつか手順ありますが、今回はソースをビルドする手順を使用
事前準備
sudo apt-get install git-lfs
git lfs install
TT-Metalium は Llama 3.2 11B で実績があるブランチ v0.54.0-rc20 を指定してインストール
ブランチがいくつもあるので、branch v0.54.0-rc20 用のワーキングディクトリを作成して、そこで実行
cd ~
mkdir work_v54_rc20
cd work_v54_rc20
git clone --branch v0.54.0-rc20 --single-branch https://github.com/tenstorrent/tt-metal.git --recurse-submodules
cd tt-metal
git submodule foreach 'git lfs fetch --all && git lfs pull'
export ARCH_NAME=wormhole_b0
export TT_METAL_HOME=$(pwd)
export PYTHONPATH=$(pwd)
./build_metal.sh
./create_venv.sh
Step4.Llama 3.2 のデモの実行
tt-metal の仮想環境を有効化
cd ~/work_v54_rc20/tt-metal
source python_env/bin/activate
環境セットアップ
export ARCH_NAME=wormhole_b0
export TT_METAL_HOME=$(pwd)
export PYTHONPATH=$(pwd)
export WH_ARCH_YAML=wormhole_b0_80_arch_eth_dispatch.yaml
export LLAMA_DIR=~/.llama/checkpoints/Llama3.2-11B-Vision-Instruct
注) モデルのダウンロード先に合わせて変更
事前に用意作成されている1バッチのプロンプトを使用したデモを実行
初回はキャッシュの生成のため時間がかかる
pytest models/demos/llama3/demo/demo.py -k "performance and batch-1"
メッセージの最後に下記のような画面が表示されれば成功
メッセージを少しさかのぼると、1バッチでの性能が判る
1バッチでの性能は、38.63 tokens/s/user でした。
更にメッセージをさかのぼると、質問に回答しているのが判る
次に、事前に用意作成されている32バッチのプロンプトを使用したデモを実行
pytest models/demos/llama3/demo/demo.py -k "performance and batch-32"
メッセージの最後に下記のような画面が表示されれば成功
メッセージを少しさかのぼると、32バッチでの性能が判る
32バッチでの性能は、15.2 tokens/s/user、486.38 tokens/s でした。
更にメッセージをさかのぼると、質問に回答しているのが判る
models/demo/llama3/demo/input_data_questions_prefill_128.json を書き換えると質問を変更できる
まとめ
今回は、事前に作成されたプロンプトをそのまま使用しましたが、内容を変更してぜひお試しください。