https://github.com/ggml-org/llama.cpp/blob/master/docs/backend/snapdragon/README.md
私はSnapdragon 8 Gen 3を搭載したOneplus 12を持っています。上記READMEの手順に従ってUbuntu上でllama.cppをクロスコンパイルし、その後スマホのTermuxディレクトリにコピーしました。
llama.cppのHexagonバックエンドは、Qualcommの従業員による多数のPRによって、かなり手厚くサポートされているようです。
gemma-3-12b-it-qat-Q4_0では8t/s pp、4.5t/s tgが出ており、gemma-3-4b-it-qat-Q4_0では20t/s pp、12.5t/s tgが出ています。
速度はSD8G3のCPUを使う場合とだいたい同じですが、まったく熱くなりませんし、tgの速度も単純なQ&Aなら十分です。
現在の制限は、Q4_0、IQ4_NL、MXFP4、Q8_0、F32のggufのみ対応していることです。また、KVキャッシュの量子化にも対応していません。Snapdragon 888のような古いチップにも対応していますが、LLM向けのTensorモジュールがあるのはSD8G2以上のSoCだけなので、チップが古いなら気にしないほうがよさそうです。
Hexagon NPUは4GB RAMしかアドレスできないため、モデル+KVキャッシュが大きすぎる場合は、複数のNPUデバイスを開くための環境変数を設定する必要があります。以下は例です:
LD_LIBRARY_PATH=./lib:/vendor/lib64 ADSP_LIBRARY_PATH=./lib GGML_HEXAGON_NDEV=2 ./bin/llama-completion -m /sdcard/gguf/gemma-3-12b-it-qat-Q4_0.gguf -sys 'You are a helpful AI assistant' -ngl 99 --device HTP0,HTP1
私のSD8G3のNPUは34 INT8 TOPSで、メモリ帯域幅は76.8GB/sです。彼らの最新製品X2 Elite Extremeは、80 INT8 TOPSで228GB/sです。一方で、Nvidia 3090は248 INT8 TOPSで936GB/sです。追いつくにはたぶん2、3世代必要でしょうか?
PS ところで、SD 8 Elite Gen 5のスマートフォン、またはX2 Elite Extremeのラップトップを持っている人はいますか?いるなら、推論のパフォーマンス数値を報告できますか。4GB RAM以上をアドレスできるはずなので、複数のHTPデバイスは不要なはずですが、これはいまllama.cppで対応されていますか?
PPS Hexagonのビルドは、OpenCLビルドでもあるはずです。Adreno GPUだけにLLMをオフロードする方法を知っている人はいますか?--deviceオプションを省略すると、GPUとNPUの両方にオフロードされているようですが、速くなりません。また、最大パフォーマンスのためにCPU、GPU、NPUを一緒に使うことは可能ですか(とはいえアイスパックが必要になるかもしれません)?
[link] [comments]




