回避策は使い回せた:Llama 3.2 1B を QCS6490 で測る——プリフィル 1,024 tok/s、デコード 16.4 tok/s
昨日、Qualcomm QCS6490 における初の公開 GenAI 実測として、Qwen3-0.6B のプリフィル 1,555 tok/s/デコード 24.6 tok/s を公開しました。そこに辿り着くには手組みのチェーンが必要でした。公式の AI Hub エクスポートスクリプトが、コンパイラに拒否されるフラグを渡していたからです(--output_names is not supported for AIMET ONNX models、上流 issue #366。v0.67.0 で修正予定ですが、まだ出ていません)。
次に気になるのは当然これです。あれは一回限りの救済だったのか、それとも同じチェーンで他のモデルも通るのか。今日通したのは、最も知名度の高い小型モデル、Llama 3.2 1B Instruct です。
同じチェーン、新しい驚きはなし
レシピは同一です。失敗したエクスポートジョブからパイプライン自身のコンパイルパラメータを読み取り、問題のフラグを一つだけ落とし、スクリプトが固定し忘れた入力形状を固定する(Qwen3 の初回試行はこの欠落で死にました。動的形状のままでは即死です)。あとは Hub API から直接コンパイルジョブを投げるだけ。コンパイル 6 本、リンク 1 本、Dragonwing RB3 Gen 2 実機でのプロファイル 6 本、全部通過しました。バグはまだスクリプトの中にあり、チェーンはまだその横を通れます。
数字
Llama 3.2 1B Instruct、w4a16、コンテキスト長 512、RB3 Gen 2(QCS6490)実機:
- プリフィル:1,024 tok/s
- デコード:16.4 tok/s
方法は明記します。ここが大事だからです。この数字は実機のグラフ別プロファイルから導出したもので、昨日の Qwen3 と同じ方法です。だからこそ 2 行は比較できます。Genie のエンドツーエンド実行ではありません。エンドツーエンドには、グラフ別には現れないランタイムのオーバーヘッドが乗ります。方法の書かれていない大きな数字より、方法とセットの数字を出したい。
| モデル | 量子化 | コンテキスト | プリフィル (tok/s) | デコード (tok/s) |
|---|---|---|---|---|
| Qwen3-0.6B | w4a16 | 512 | 1,555 | 24.6 |
| Llama 3.2 1B Instruct | w4a16 | 512 | 1,024 | 16.4 |
私の知る限り、QCS6490 上の Llama 3.2 1B の公開実測はこれが初めてです。先行例をご存知なら、ぜひ見せてください。この表が公開の場に存在すること自体が、公開する理由です。
2 行目がなぜ大事か
回避策で通ったモデルが 1 つなら、それは逸話です。異なる 2 ファミリーのモデルが、同じチェーンを新しい驚きなしに通れば、それは方法になります。本当に欲しいのは勾配のほうで、0.6B と 1B が埋まった今、同じチェーンで Qwen3-1.7B と Llama 3.2 3B が待機しています。「このチップで実際に何がどれだけ速く動くか」が、外挿ではなく実測になっていきます。
失敗分を含む全データは公開ベンチマークリポジトリ(qcs-bench)とモデルカードに置いてあります。
- モデルカード: https://huggingface.co/anguoyang/llama-3.2-1b-qcs6490
- ベンチマークデータ: https://github.com/anguoyang/qcs-bench
モデルには Llama 3 ライセンスが適用されます。ここで公開しているのは実測値と、そこに至った経路です。