コンテンツにスキップ

Snapdragon用モデルのビルド

Snapdragon NPUデバイス用のモデルアセットをビルドする方法

Section titled “Snapdragon NPUデバイス用のモデルアセットをビルドする方法”

これらの手順は、Llama 3.2 3Bモデルの生成を示しています。同じ手順を使用して、Phi-3.5 mini instructモデルを生成できます。

  1. Qualcomm AI Hubアクセスにサインアップします

    サインアップしたら、Qualcomm AI hub APIトークンを設定します

    ここに示されている手順に従ってください:[https://app.aihub.qualcomm.com/docs/hub/getting_started.html#getting-started]

  2. Qualcomm AI Engine Direct SDKをインストールします

  3. Llama-3.2-3BのHuggingFaceウェイトへのアクセスを取得するためにサインアップします

    このステップは、ライセンス契約への署名が必要なモデルにのみ必要です。

  4. Linux環境をセットアップします

    このプロセスには、Linuxでしか実行できないステップがあります。WSL環境で十分です。

    Linux環境にlibc++=devをインストールします。

    Terminal window
    sudo apt get libc++-dev

Qualcommコンテキストバイナリを生成する

Section titled “Qualcommコンテキストバイナリを生成する”
  1. Qualcomm AI hubからモデルをインストールします

    Terminal window
    python -m pip install -U qai_hub_models[llama-v3-2-3b-chat-quantized]
  2. 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]を参照してください。

  1. onnxruntimeリポジトリから次のスクリプトをダウンロードします

    Terminal window
    curl -LO https://raw.githubusercontent.com/microsoft/onnxruntime/refs/heads/main/onnxruntime/python/tools/qnn/gen_qnn_ctx_onnx_model.py
  2. onnxパッケージをインストールします

    Terminal window
    pip install onnx
  3. 各モデル(.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
  4. 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; done

    PowerShellを使用した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
    }

[https://huggingface.co/onnx-community/Llama-3.2-3B-instruct-hexagon-npu-assets]からアセットをダウンロードします

上記の手順が完了すると、次のモデルアセットが作成されているはずです

  • genai_config.json
  • tokenizer.json
  • tokenizer_config.json
  • special_tokens_map.json
  • quantizer.onnx
  • dequantizer.onnx
  • position-processor.onnx
  • トランスフォーマーモデルバイナリのセット
    • Qualcommコンテキストバイナリ (*.bin)
    • コンテキストバイナリメタデータ (*.json)
    • ONNXラッパーモデル (*.onnx)