如何為 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。

    sudo apt get libc++-dev
    

生成 Qualcomm 上下文二進位制檔案

  1. 從 Qualcomm AI Hub 安裝模型

    python -m pip install -U qai_hub_models[llama-v3-2-3b-chat-quantized]
    
  2. 生成 QNN 上下文二進位制檔案

    生成 QNN 二進位制檔案。此步驟會將模型和二進位制檔案下載並上傳到 Qualcomm AI Hub,並從 Qualcomm AI Hub 下載和上傳,根據您的上傳速度可能需要數小時。

    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 包裝模型

  1. 從 onnxruntime 倉庫下載以下指令碼

    curl -LO https://raw.githubusercontent.com/microsoft/onnxruntime/refs/heads/main/onnxruntime/python/tools/qnn/gen_qnn_ctx_onnx_model.py
    
  2. 安裝 onnx

    pip install onnx
    
  3. 從 QNN 上下文二進位制檔案(每個模型一次,即每個 .bin 檔案)中提取 QNN 圖資訊

    注意:此指令碼僅在安裝了 libc++-dev(來自設定部分)的 Linux 上執行

    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 上

    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 上

    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.tw/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
  • 一組 Transformer 模型二進位制檔案
    • Qualcomm 上下文二進位制檔案 (*.bin)
    • 上下文二進位制元資料 (*.json)
    • ONNX 包裝模型 (*.onnx)