正式配布前の試験版であるllama.cppの新しいプレリリースは、Snapdragonのニューラル処理装置で畳み込みを実行できるよう対応を広げた。音声モデルを端末で動かす開発者は、入力の特徴を抽出する計算をこの装置に任せる経路を試せる。
1. 特徴を抽出する2つの計算をHexagonに追加
2026年10月28日に公開されたb11970は、Snapdragonのニューラル処理装置であるHexagonの実行部に、通常の畳み込みと深さ方向畳み込みを追加した。畳み込みは入力の小さな領域を走査して特徴を抽出する計算だ。チャネルは、互いに分かれた特徴データのまとまりを指す。通常の方式が複数チャネルの情報を組み合わせるのに対し、深さ方向の方式はチャネルごとに個別に計算する。
元のコードでの2つの演算名はCONV_2DとCONV_2D_DWだ。対応追加の意義は、モデルを構成するこれらの計算をHexagonで直接実行する選択肢が増えた点にある。レビューには、新しい演算を含む音声モデル全体の実行例も掲載された。
通常の畳み込みはHexagonの行列演算装置であるHMXを利用し、入力を小さなまとまりに準備して行列乗算の形で計算する。深さ方向畳み込みには、入力データのメモリ配置順に合わせた専用のベクトル計算経路と、複数の値をまとめて処理する方式が導入された。
2. 音声入力から応答まで実行した事例
変更提案のレビュアーは、LFM2.5-Audio-1.5B-Q4_0モデルで音声を書き起こす実行コマンドを残した。数値精度を下げて容量を減らした4ビット量子化モデルと32Kコンテキストを使用し、主モデルと、音声情報を入力形式に合わせる音声入力処理用の投影モデルを別々の演算装置に配置する。
以下はレビューコメントのコマンドをそのまま転載したものだ。開発者は、音声ファイルを受け取って応答を生成する実行全体で、新しい演算が使われる事例をこのコマンドで確認できる。
./scripts/snapdragon/run.py --target adb --devices 2 -- ./bin/llama-cli -m ../gguf/LFM2.5-Audio-1.5B-Q4_0.gguf --mmproj ../gguf/mmproj-LFM2.5-Audio-1.5B-Q4_0.gguf --audio ../test-images/sample-speech-1m.wav -p "Please transcribe the audio for me." --device HTP0 --mmproj-device HTP1 -c $((32*1024)) -ngl 99 --jinja -s以下は、同じレビュー時の実行でレビュアーが記録した2段階の速度だ。出典は変更提案のレビューコメントである。
表:音声モデルの段階別処理速度
条件:上記コマンドと同じレビュー時の実行。LFM2.5-Audio-1.5B-Q4_0、主モデルHTP0・投影モデルHTP1、32Kコンテキスト、sample-speech-1m.wav入力
単位:トークン/秒
| 段階 | 速度 |
|---|---|
| 入力処理(Prompt) | 162.8 |
| 生成(Generation) | 73.9 |
レビュアーは新しい畳み込み演算が良好に見えると評価する一方、行列乗算(MUL_MAT)とデータをメモリ上に連続配置する演算(CONT)には追加の最適化が必要だと記した。したがって開発者が次に点検すべき対象は、畳み込みへの対応だけでなく、モデル全体のほかの演算にかかる時間でもある。
3. 演算の検証とプラットフォーム別の導入経路
変更提案の作成者は、v73・v75・v81のAndroid端末で試験したと明らかにした。作成者が報告したバックエンド、つまり各装置で演算を担う実行部の演算テスト結果は、1021件中1021件が合格だった。演算単位の検証とは別に、前述の音声実行例がモデル全体の動作例を示している。
リリースページには、Snapdragon向けのLinux arm64とAndroid arm64のビルドがそれぞれ掲載されている。両ビルドは、中央処理装置、Adrenoグラフィックス装置、Hexagonニューラル処理装置に対応するパッケージと表記されている。各ダウンロードの横には、該当プラットフォームの設定ガイドへのリンクがある。
利用者は自分のOSに合うパッケージとガイドを選び、レビューの音声実行例を参考にモデルの配置を試せる。配布版はプレリリースと表示されているため、導入時にはこの配布状態も確認すべき項目となる。
4. 実行範囲の拡大とともに管理すべきメモリ
畳み込みをHexagonに任せられる利点には、データを計算に合わせて準備するコストが伴う。実装は入力・重み・出力に一時メモリを割り当て、装置内のメモリ容量に合わせて作業を分割する。重みはモデルが学習した乗算係数だ。HMXの計算結果を16ビット半精度で保存する前に、重みの最大絶対値と乗算に使う項数に応じて結果を縮小し、32ビット出力に展開する際に元の大きさへ戻す。これは中間結果が半精度の表現範囲を超えるのを防ぐ処理だ。開発者の確認対象も、演算対応からデータの準備と移動を含む実行全体へ広がる。
5. 適用するモデルと測定値の範囲
小数値を表す浮動小数点データ型として、重みは16ビットまたは32ビット、入力・出力は32ビットを受け付ける。データ配置の条件に加え、深さ方向畳み込みには、フィルターの幅と高さを掛けた値が64以下でなければならないという条件がある。
レビューの速度は、チップセット・OSのバージョン・反復回数や旧版との比較値が併記されていない単一実行の結果だ。そのため、同じ条件での改善幅ではなく、該当する音声モデルの実行例として読むのが適切である。
b11970の要点は、畳み込みをHexagonで実行できる範囲の拡大であり、導入判断の次の基準は使用するモデル全体の処理性能である。
