Snapdragon用モデルのビルド
Snapdragon NPUデバイス用のモデルアセットをビルドする方法
Section titled “Snapdragon NPUデバイス用のモデルアセットをビルドする方法”これらの手順は、Llama 3.2 3Bモデルの生成を示しています。同じ手順を使用して、Phi-3.5 mini instructモデルを生成できます。
セットアップと前提条件
Section titled “セットアップと前提条件”-
Qualcomm AI Hubアクセスにサインアップします
サインアップしたら、Qualcomm AI hub APIトークンを設定します
ここに示されている手順に従ってください:[https://app.aihub.qualcomm.com/docs/hub/getting_started.html#getting-started]
-
Qualcomm AI Engine Direct SDKをインストールします
-
Llama-3.2-3BのHuggingFaceウェイトへのアクセスを取得するためにサインアップします
このステップは、ライセンス契約への署名が必要なモデルにのみ必要です。
-
Linux環境をセットアップします
このプロセスには、Linuxでしか実行できないステップがあります。WSL環境で十分です。
Linux環境にlibc++=devをインストールします。
Terminal window sudo apt get libc++-dev
Qualcommコンテキストバイナリを生成する
Section titled “Qualcommコンテキストバイナリを生成する”-
Qualcomm AI hubからモデルをインストールします
Terminal window python -m pip install -U qai_hub_models[llama-v3-2-3b-chat-quantized] -
QNNコンテキストバイナリを生成します
QNNバイナリを生成します。このステップでは、Qualcomm AI Hubとの間でモデルとバイナリをダウンロードおよびアップロードするため、アップロード速度によっては数時間かかる場合があります。
Terminal window python -m qai_hub_models.models.llama_v3_2_3b_chat_quantized.export --device "Snapdragon X Elite CRD" --skip-inferencing --skip-profiling --output-dir .このステップの詳細については、[https://github.com/quic/ai-hub-apps/tree/main/tutorials/llm_on_genie]を参照してください。
ONNXラッパーモデルを生成する
Section titled “ONNXラッパーモデルを生成する”-
onnxruntimeリポジトリから次のスクリプトをダウンロードします
Terminal window curl -LO https://raw.githubusercontent.com/microsoft/onnxruntime/refs/heads/main/onnxruntime/python/tools/qnn/gen_qnn_ctx_onnx_model.py -
onnxパッケージをインストールしますTerminal window pip install onnx -
各モデル(.binファイル)ごとに、QNNコンテキストバイナリファイルからQNNグラフ情報を抽出します
注意:このスクリプトは、セットアップセクションからlibc++-devがインストールされたLinuxでのみ実行されます
Terminal window for bin_file in *.bin; do $QNN_SDK_ROOT/bin/x86_64-linux-clang/qnn-context-binary-utility --context_binary="$bin_file" --json_file="${bin_file%.bin}.json"; done -
ONNXラッパーモデルを生成します
以下のコマンドを実行して、ONNXラッパーモデルを生成します
bashを使用したLinuxの場合:
Terminal window for bin_file in *.bin; do python gen_qnn_ctx_onnx_model.py -b "$bin_file" -q "${bin_file%.bin}.json" --quantized_IO --disable_embed_mode; donePowerShellを使用したWindowsの場合:
Terminal window Get-ChildItem -Filter "*.bin" | ForEach-Object {$binFile = $_.Name$jsonFile = "$($binFile -replace '\.bin$', '.json')"python gen_qnn_ctx_onnx_model.py -b $binFile -q $jsonFile --quantized_IO --disable_embed_mode}
その他のアセットを追加する
Section titled “その他のアセットを追加する”[https://huggingface.co/onnx-community/Llama-3.2-3B-instruct-hexagon-npu-assets]からアセットをダウンロードします
モデルアセットを確認する
Section titled “モデルアセットを確認する”上記の手順が完了すると、次のモデルアセットが作成されているはずです
genai_config.jsontokenizer.jsontokenizer_config.jsonspecial_tokens_map.jsonquantizer.onnxdequantizer.onnxposition-processor.onnx- トランスフォーマーモデルバイナリのセット
- Qualcommコンテキストバイナリ (
*.bin) - コンテキストバイナリメタデータ (
*.json) - ONNXラッパーモデル (
*.onnx)
- Qualcommコンテキストバイナリ (