AW-INC. 研究開発室

with secure communication

Hailo-10H で LLM を動かすと 1 token に何秒かかるか

本記事にはアフィリエイト広告(Amazon アソシエイト)が含まれます。

実測日: Mon Oct 12 2026 09:00:00 GMT+0900 (Japan Standard Time)

Hailo-10H は、LLM を載せられるとされる数少ないエッジ向けアクセラレータである。
ただし「載る」と「使える速さで動く」は別の話で、どちらなのかは実際に測らないと判らない。
本記事では、ASUS UGen300(Hailo-10H を USB で外付けにした製品)に 2B 級の LLM を載せ、1 token の生成に何秒かかるかを測った結果を示す。

2B 級のモデルは 1 本の HEF に収まらない

Hailo のコンパイラは、ネットワークを HEF という実行形式に変換する。
2B 級のモデルは重みだけで 1 GB を超え、1 本の HEF には収まらなかった。
そこで、ネットワークを 30 本の区間に分け、区間ごとに HEF を作って順に実行する形にした。

分けた HEF を順に動かすには、すべての HEF をデバイスに保持したまま token ごとに回すのが理想である。
ところが、実際にはそれができない。

同時に保てる HEF は 8 本まで

31 本の HEF を順に configure して保持し続けるプログラムを書いて試したところ、9 本目で HAILO_EVENT_CREATE_FAIL(34) が返った。
ファイルディスクリプタの上限が原因ではない。
soft と hard の上限を 1048576 にしても 65536 にしても、同じ 9 本目で落ちたからである。
デバイスかドライバの側に、同時に保持できる数の上限があると見るのが自然である。

つまり 30 本の鎖は常駐させられず、token を 1 つ生成するたびに HEF を載せ替える必要がある。
この載せ替えが、後で示す速さの大半を占める。

1 token あたりの内訳

6 token の prefill(入力をすべて読み込む段階)を 29 本の鎖で流した時間は、全体で 80.4 秒だった。
内訳は次のとおりである。

項目 時間
入口の埋め込みをホストで作る 1.7 秒
入口の値を別の機械から運ぶ(足場の都合で、本質ではない) 22.0 秒
区間 30 本を順に実行 55.4 秒
うち、デバイスの計算だけ 1 token あたり 653 ms
HEF の読込(ディスクからホスト RAM、31 本 1.25 GB) 12.96 秒
configure(ホストからデバイス、USB で約 156 MB/s) 7.95 秒

デバイスの計算 653 ms の正体は、コンテキストの遷移である。
1 token あたり約 296 回の遷移が起き、1 回が約 2.2 ms かかる。
行列計算そのものではなく、区間の継ぎ目で重みを入れ替える時間が支配している。

逐次生成の速さ

生成段階では token ごとに 30 本の HEF を載せ替えるので、1 token に約 8.7 秒かかる。
tok/s に直すと 0.115 で、対話の用途には使えない。
仮に 1 本の HEF に収まって常駐できたとしても、653 ms なので 1.5 tok/s にとどまる。
重みを USB 越しに流し込む下限(1.25 GB を約 2.5 GB/s で)から見積もると 100〜200 ms、つまり 5〜10 tok/s が理論上の上限になる。

形 1 token tok/s
30 本の鎖を token ごとに載せ替え(実測) 約 8.7 秒 0.115
1 本に収まり常駐できた場合(計算値) 653 ms 1.5
重みの流し込みの下限(見積もり) 100〜200 ms 5〜10

prefill は事情が違う。
入力の token はすべて判っているので、区間ごとに全 token をまとめて通せる。
N token の prefill にかかる時間は 21 秒 + N × 0.653 秒で、128 token なら約 105 秒である。
要するに、まとめて処理する埋め込みや要約には使えるが、1 token ずつ返す対話には使えない。

非自己回帰のモデルなら桁が変わる

同じデバイスでも、1 回の推論で答えが出るモデルなら話は逆になる。
78 層ほどの小さい区間(26〜30 MB)は 1 回 10〜11 ms で回った。
常駐できる 1 本のネットワークなら、所要時間は「重みの MB ÷ 2500」秒に計算時間を足した程度と見積もれる。
たとえば 234M パラメータ(8 bit で 234 MB)なら約 94 ms である。

この見積もりを用途ごとに当てはめると、次のようになる。

  • 音声認識:SenseVoiceSmall(234M パラメータ、CTC、非自己回帰)は 1 回で 6 秒分の音声を処理する。見込みは 150〜300 ms で、実時間の 20〜40 倍速になる。このデバイスに最も合う用途である。
  • 音声区間検出:Silero 級なら CPU で足りる。デバイスに載せる利点はない。
  • 音声合成:自己回帰の codec LM 型(XTTS-v2、Fish-Speech、CosyVoice)は音声 1 秒に codec token を 25〜75 本生成するので、LLM と同じ壁に当たる。非自己回帰型(VITS、StyleTTS2、Matcha-TTS)なら 1 発話 1 回で済み、デバイスに合う。

購入前に知っておきたいこと

Hailo-10H を「エッジで LLM を動かす」目的で買うなら、1 本の HEF に収まる小さなモデルに限ること、そして対話ではなくまとめ処理に使うことが前提になる。
一方で、音声認識や画像認識のような非自己回帰のモデルには向いており、USB 給電で動く 8 GB のデバイスとしては貴重である。
なお、Raspberry Pi AI HAT+ に載る Hailo-8 系は外付けメモリを持たず、LLM は最初から対象外である。

この記事で扱った機材

ASUS UGen300(Hailo-10H USB AI アクセラレータ)

Hailo-10H を USB 3.1 Gen2 で外付けにした製品。8 GB の LPDDR4 を載せる。本サイトの Hailo-10H の実測はすべてこの個体で行った。

Raspberry Pi AI HAT+(Hailo-8L / Hailo-8)

Hailo 系で最も入手しやすい製品。LLM には向かないが、非自己回帰の視覚モデルや音声認識には合う。


投稿日

カテゴリー:

投稿者: