オープンソースのTesseractプロジェクトが、回路を再構成できるFPGAアクセラレータカード向けの設計と言語モデル実行ソフトウェアを公開した。言語モデル開発者はAlveo U200カードで推論を実行し、候補トークンを先に生成してまとめて検査する方式で生成速度を高められる。
1. ハードウェアとファームウェアを分けて公開
11月10日公開のTesseract Core 1.0.0には、カードに書き込む回路イメージと設計コードが含まれる。同時公開のTesseract Basis 1.1.0は、ファームウェア(カード動作を制御する低水準ソフトウェア)の開発ツールとホストソフトウェア(カード外から命令を送るコンピューター用プログラム)を提供する。回路イメージと実行ソフトウェアを分けて配布する構成だ。
Basis 1.1.0の主な修正は、カードのメモリ容量を実測するようにした点だ。U200はチャネルごとに8GiBだが、カードシェルは16GBと報告するため、従来はチャネル容量を超えるアドレスが先頭に戻り、モデルの重みを上書きする恐れがあった。新バージョンはカードを開く際に実容量を確認し、ヒープというプログラムが動的に使うメモリ領域の配置と範囲検査に反映する。メモリに収まらないモデルはWEIGHT heap fullエラーで停止する。
実行経路はllama.cppと連携する。連携ソフトウェアが対応演算をカードへ送り、残りはCPUで処理する。フルモードではKVキャッシュ(以前のトークンの計算結果を保存する領域)とアテンション(入力のどの部分を参照するかを計算する処理)までカードで処理し、生成トークンごとに1回、処理を要求する。
2. ビルドとカードでの実行
導入ガイドは、サブモジュール(外部リポジトリを一緒に含める構成要素)を取得し、パッチ(元のコードに適用する変更)を適用した後、制御コア向けツールチェーン(ビルドやコンパイルに使うツール群)をインストールし、CMakeでビルドする手順を示す。カードの実行にはXRT 2.18.179が必要だ。ホストはデバイスを開く際に、回路イメージと別途ビルドしたファームウェアファイルを読み込む。
基本的な推論を準備した後は、専用の測定ツールで複数トークン予測を試す。以下は性能ドキュメントの実行例で、対象モデルとドラフトファイル、プロンプトファイルを指定し、候補数ごとの速度を測定する。
tsr-mtp -m TARGET.gguf [-md MTP.gguf] --spec-type draft-mtp --mtp-mode all --mtp-k-list 1,2,3,4 \
--mtp-device xrt --mtp-prompts PROMPTS.txt -n 128 -c 2048 -t 8インストール後は自己診断でデバイスを点検し、モデル検証ツールでCPU出力と比較する手順を取れる。
3. U200で測定したllama.cppの速度
プロジェクトの発表によると、以下の結果はU200 1枚をフルモードで測定したものだ。プロンプト処理と生成速度は、それぞれ3回実行した平均と標準偏差で、標準偏差は測定値の平均からのばらつきを表す数値である。電力は生成中のカード自体の平均消費電力だ。以下の2表はBasis 1.1.0ではなく、Basis 1.0.0ファームウェアで測定した結果だ。
条件:Alveo U200 1枚、Ryzen 7 9700X、ホストスレッド8本、コア200MHz、フルモード、Q8_0 KVキャッシュ、フラッシュアテンション(アテンション計算に使うメモリを削減する手法)、プロンプト512トークン・処理バッチ512トークン・生成64トークン、3回反復、Basis 1.0.0
| モデル | 量子化:数値精度を下げてモデルを軽量化する方式 | プロンプト(トークン/秒) | 生成(トークン/秒) | カード電力(W) |
|---|---|---|---|---|
| Qwen3.8 27B | Q8_0 | 5.079 ± 0.001 | 1.587 ± 0.001 | 55.9 |
| Qwen3.5 9B | Q8_0 | 16.617 ± 0.004 | 4.992 ± 0.006 | 55.3 |
| Gemma 4 31B | Q4_K_M | 9.294 ± 0.003 | 2.442 ± 0.001 | 58.6 |
| Gemma 4 26B-A4B | Q8_0 | 20.942 ± 0.020 | 10.178 ± 0.013 | 55.8 |
| Gemma 4 12B | Q8_0 | 15.538 ± 0.011 | 3.743 ± 0.001 | 57.7 |
| Gemma 4 E4B | Q8_0 | 39.399 ± 0.022 | 9.034 ± 0.012 | 55.4 |
| Gemma 4 E2B | Q8_0 | 75.959 ± 0.091 | 17.442 ± 0.007 | 54.9 |
同じカード設定でも、モデルごとの生成速度の差は大きい。プロジェクトは別のチャット実行で得たカードのサイクル数をトークン当たりの時間と照合し、カード実行時間が98~99%を占めると報告した。この設定では、ホスト処理よりもカードで費やす時間が速度を左右する。
カードは一度に1プロセスしか使用できない。モデルと量子化が異なるため、速度差をモデルサイズだけの効果とみなすことはできない。
4. ドラフトトークン検証の利点とコスト
複数トークン予測のサポートは、同日に先行して公開されたBasis 1.0.0に含まれた。
複数トークン予測は、答えを1トークンずつ確定する代わりに、候補を先に複数生成してまとめて検査する。プロジェクトは、測定した3モデルの各候補数設定で、通常の貪欲デコーディング、すなわち各ステップで最も確率の高いトークンを選ぶ生成方式と同じ出力が得られたと報告した。通常生成のベースラインとなる性能比較用の基本測定値も、同じプロセスとプロンプトで測定した。
条件:Alveo U200 1枚、Ryzen 7 9700X、ホストスレッド8本、フルモード、Q8_0 KVキャッシュ、フラッシュアテンション、コンテキスト長2048トークン、チャットプロンプト3個で各128トークンを貪欲生成、候補数ごとに1回実行、Basis 1.0.0
| モデル | 対象/ドラフトの量子化 | 最適候補数 | 通常生成(トークン/秒) | 複数トークン予測(トークン/秒) |
|---|---|---|---|---|
| Qwen3.8 27B | Q4_K_M / Q8_0 (別ファイル) | 3 | 2.19 | 3.59 |
| Qwen3.8 2B | Q4_K_M / Q4_K_M (同じファイル) | 1 | 23.06 | 25.45 |
| Gemma 4 26B-A4B | Q8_0 / Q8_0 (別ファイル) | 1 | 10.15 | 11.77 |
プロジェクトの発表によると、27Bモデルは候補3個で1.64倍に高速化した。残りの2モデルは候補1個が最速で、高速化はそれぞれ1.10倍と1.16倍だった。最適設定でのステップ当たりの受理候補数はQwen3.8 27Bが2.09個、Qwen3.8 2BとGemma 4 26B-A4Bが各0.81個だった。候補を多く提案することよりも、実際に受理される割合が重要だという結果である。
利点は、候補検査をまとめて生成時間を短縮することにある。その代わりにドラフト生成と検証の処理が加わり、モデルによっては別のドラフト重みファイルも用意する必要がある。ドキュメントは、最適候補数を超えると検証時間が延びて利点が減り、2Bモデルは候補4個で通常生成より遅くなったと説明した。
今回のリリースの実用的価値は、U200向けの推論経路と検証ツールを併せて提供し、モデルごとにドラフト候補数を調整する根拠を示した点にある。
