1 bit の 27B を Qualcomm の NPU で 7.18 tok/s。Dragon-Bonsai 27B の到達点と、速度を決める 1 本の式

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

実測日: Thu Sep 17 2026 09:00:00 GMT+0900 (Japan Standard Time)

重みを 1 bit にした 27B のモデルを、Qualcomm の NPU(HTP)で動かした。 2026 年 9 月 17 日時点の到達点は、128 token 生成で 7.18 tok/s である。 本記事は、この構成が何であって何でないか、速度がどこで決まっているかを記録する。

何を動かしたか

誤解を避けるために先に書く。 これは新しいモデルではなく、既存の 1 bit モデルの重みを、そのまま NPU に配置して走らせたものである。 出力は、同じモデルを素直に貪欲 decode した結果と同一である。

要素 内容
重み 1 bit に group 128 の倍率を付けた形式。128 個の重みを 18 byte に収めるので 1.125 bit/重み。語彙 head だけ 2.25 bit
実行 QNN の context binary を直接常駐させる。delegate を経由しない
投機 EAGLE-3 の draft、K=2(窓あたり 3 位置)
並列 64 層を 4 区分にし、先頭 2 区分(36 層)を 2 基の HTP に head 並列。残りは丸ごと
context binary 合計 4.09 GB

投機は厳密である。 draft の提案は、target の argmax と完全に一致したときだけ受理する。 したがって精度は「1 bit 量子化そのものの精度」ではなく、「1 bit モデルを貪欲 decode した結果と同じものを出す」という意味で保たれている。 48 token の生成で draft 無しと token 列が一致することを確かめた。 128 token では 85 step 以降に分岐することがあるが、これは浮動小数の状態の漂流で、投機のせいではない。

速度

128 token 生成(TG128)、生成の窓だけで集計した。

項目 値
通し 7.1789 tok/s
窓(1 回の検証に要する時間) 239.59 ms
受理長 0.7200
3 回の測定 7.1826 / 7.1785 / 7.1789
draft 無し 4.3993 tok/s
投機の効き 1.632 倍

振れは 0.06% で、再現性は高い。 比較の物差しとして iPhone 17 Pro Max(A19 Pro)の TG128 が 11.0 なので、達成率は 65.3% になる。 本番の出発点は 9 月 13 日の 2.2040 tok/s だったので、4 日で 3.26 倍になった。

窓を分解する

窓の時間は、次の 1 本の式で説明できる。

窓(K) = 113.3 + 29.4 × (K+1) + 10.6 × (K-1) + 27.9    K=2 で 240.0 ms
部位 ms 動かせるか
重み 3.80 GB の読み出し 113.3 動かせない。33.5 GB/s で、実測した DDR 帯域 45.9 GB/s の 73%
位置 3 つの計算 88.2 減らすと受理長も減る
draft 2 段 10.6 底
残り(ホスト側) 27.9 融合で 4.2 ms まで削れる見込み

半分近くが重みの読み出しで、これは帯域で決まる。 1 bit にしてなお 3.80 GB あるので、この構成で速くする道は「重みを減らす」しか残っていない。 窓は重みの量にほぼ比例するので、重みを元の 2/3 にすれば 18B 相当で 9.95 tok/s、0.58 倍なら 11 tok/s を超える見積りになる。 次の作業は、この見積りを確かめるための刈り込みである。

到達点に含まれないもの

  • 対話用の draft head。今の head は 48 token で抽出した系列から学んでおり、長い対話には作り直しが要る。
  • モデルの小型化。未着手で、上の見積りだけがある。
  • 語彙 head の 1 bit 化。得は 1.1% で、argmax の精度に直接効くので保留した。
  • 副 head の除去。出力は同一だが、得が 0.8% で揺らぎの内側なので据え置いた。

運用上の注意

1 bit 層の graph を finalize するには、VTCM の指定が 8 以上でなければならない。 8 未満では finalize が落ちる。 また、受理長は評価に使う文章の種類で変わるので、散文で測った値を対話にそのまま当てはめてはいけない。 物差しごとの換算率を 1 点ずつ取る必要がある。

この記事で扱った機材

Crucial DDR5-5600 SO-DIMM 128 GB キット(64 GB × 2、CT2K64G56C46S5)

27B 級の重みを bf16 のまま読み込んだり、1 bit への変換の中間状態を持ったりするには、ミニ PC のメモリをこの容量まで積む必要がある。

KIOXIA NVMe SSD

変換の中間ファイル、context binary、評価の記録の置き場。モデル 1 つの作業で数百 GB を使うので、容量に余裕のあるものを選ぶ。