# CPU 執行提供者

本節示範如何在 Snapdragon X 平台上使用 [ONNX Runtime (ORT)，並以 CPU](https://onnxruntime.ai/docs/execution-providers/#onnx-runtime-execution-providers) 做為執行提供者 (EP)。

## 設置

以系統管理員模式開啟 PowerShell，並執行以下命令以安裝相依性。為了教學，必須進行此安裝，大約需要 5 分鐘。若需要與安裝有關的詳細資訊，請參閱 [ort_setup.ps1](https://raw.githubusercontent.com/quic/wos-ai/refs/heads/main/Scripts/ort_setup.ps1)。

1. 設定 $DIR\_PATH（預設為 `C:\WoS_AI`），使用者可以變更為需要的路徑。

$DIR_PATH  = "C:\WoS_AI"
        Copy to clipboard
2. 執行下列命令，下載安裝指令碼。若已下載，則可跳過此步驟。

if (!(Test-Path $DIR_PATH\Downloads\Setup_Scripts)) {mkdir $DIR_PATH\Downloads\Setup_Scripts}
        Invoke-WebRequest -O ort_setup.ps1 https://raw.githubusercontent.com/quic/wos-ai/refs/heads/main/Scripts/ort_setup.ps1
        Move-Item -Path ".\ort_setup.ps1" -Destination $DIR_PATH\Downloads\Setup_Scripts -Force
        Copy to clipboard
3. 執行以下指令來安裝 CPU EP 的相依性。

    ORT-CPU 設置：

cd $DIR_PATH
        powershell -command "&{. .\Downloads\Setup_Scripts\ort_setup.ps1; ORT_CPU_Setup -rootDirPath $DIR_PATH}"
        Copy to clipboard

    以下相依性已下載並安裝：

> 
> 
> - Python amd64 3.12.6 版本
>     - 模型元件包括 mobilenet\_v2.onnx 模型和用於前/後處理的 io\_utils.py。
>     - Visual Studio 可轉散發套件版本 14.44.35208
>     - 創建一個虛擬環境（SDX\_ORT\_CPU\_ENV），包含 CPU 執行提供者所需的必要庫。
>     - onnxruntime 1.20.1 版本

備註

    1. 請避免在此環境中安裝任何其他 onnxruntime 變體。setup.ps1 指令碼已安裝必要的 onnxruntime。安裝不同的變體可能導致擷取錯誤的 onnxruntime 變體並造成問題。
    2. 如果在系統上無法執行指令碼，請依據下列所示執行以下命令，並輸入「A」（全部 Yes）。

Set-ExecutionPolicy RemoteSigned
        Copy to clipboard
4. 設置完成後，$DIR\_PATH 中將有以下資料夾結構：

![../../_images/folders_structure_ort.png](data:image/png;base64,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)
    - Downloads：完成安裝此資料夾儲存需要的所有檔案，例如 Python 安裝程式、安裝指令碼等。
    - Python\_Env：此資料夾包含為 EP 建立的虛擬環境 (SDX\_ORT\_CPU\_ENV)。
    - Debug\_Logs：此資料夾包含與安裝對應的紀錄。
    - Models：此目錄包含模型子目錄及其對應的元件（例如 Mobilenet\_v2）。

## ORT CPU 教學

這個教學示範了如何使用 ORT CPU 執行提供者 在 CPU 上運行一個分類模型（Mobilenet\_v2）。

1. 開啟 PowerShell 並執行以下命令以設定 $DIR\_PATH 並啟動 Python 虛擬環境。確保 $DIR\_PATH 與安裝時使用的路徑相同。

${DIR_PATH} = "C:\WoS_AI"
        Copy to clipboard

powershell -NoExit -command "&{cd $DIR_PATH; . .\Downloads\Setup_Scripts\ort_setup.ps1; Activate_ORT_CPU_VENV -rootDirPath $DIR_PATH}"
        Copy to clipboard
2. 在工作目錄中執行以下命令來建立 ort\_cpu.py 檔案。

notepad.exe ort_cpu.py
        Copy to clipboard
3. 將以下程式碼複製到 *ort\_cpu.py* 檔案中，並儲存。此範例適用於 MobileNet 模型。若必須針對不同之模型嘗試相同的範例時，請使用現有的 Python 虛擬環境 (SDX\_ORT\_CPU\_ENV)，並提供絕對路徑，以處理相依性。

# File_name : ort_cpu.py
        
        import onnxruntime as ort
        import time
        import numpy as np
        #Qualcomm utility for pre-/postprocessing of input/outputs in model inference
        import io_utils
        
        # Step1: Runtime and model initialization
        onnx_model_path = "./mobilenet_v2.onnx"
        session = ort.InferenceSession(onnx_model_path, providers=['CPUExecutionProvider'])
        
        # Step2: Input/Output handling, Generate raw input
        # github repo for below artifact: https://github.com/quic/wos-ai/tree/main/Artifacts
        image_path = "https://raw.githubusercontent.com/quic/wos-ai/refs/heads/main/Artifacts/coffee_cup.jpg"
        raw_img = io_utils.preprocess(image_path)
        
        # Model input name
        input_name = session.get_inputs()[0].name
        
        # Step3: Model inferencing using preprocessed input.
        start_time = time.time()
        for i in range(10):
           prediction = session.run(None, {input_name: raw_img})
        end_time = time.time()
        execution_time = ((end_time-start_time) * 1000)/10
        
        # Step4: Output postprocessing
        io_utils.postprocess(prediction)
        print("Execution Time: ", execution_time, "ms")
        Copy to clipboard
4. 在工作目錄中運行 *ort\_cpu.py* Python 腳本。

python .\ort_cpu.py
        Copy to clipboard

    此指令碼使用 Python 常用工具庫依據模型的要求對指定的 .jpg 影像進行預處理，並將它傳送至 CPU EP 進行推論。之後處理 CPU EP 推論的結果，以顯示已辨識物件的類別和機率，如以下範例所示。

![../../_images/ort_cpu_ep.png](data:image/png;base64,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)

後處理輸出

根據上圖的推論結果，模型將輸入影像中的物件辨識為「咖啡杯」，機率分數大約為 89.6%。

## 下一步

現在，您已經瞭解如何使用 CPU EP 執行模型，請回到 [ONNX Runtime](https://docs.qualcomm.com/doc/80-62010-1TC/topic/ort.html#ort) 或進入下一節，嘗試使用 [QNN Execution Provider](https://docs.qualcomm.com/doc/80-62010-1TC/topic/ort-qnn-ep.html#ort-qnn-ep) 進行模型推論。

## 更多細節

有關 ONNX Runtime 的更多資訊可以在這裡找到。

- [Microsoft ORT 發行版](https://github.com/microsoft/onnxruntime/releases/)
- [如何建置 C++ 應用程式](https://github.com/microsoft/onnxruntime-inference-examples/blob/main/c_cxx/README.md#how-to-build)

## 常見問題

- **支援哪一個 Python 版本？**

> 
> 
> - Python arm64 變體目前不支援 ONNX Runtime for CPU EP。
>     - ONNX Runtime CPU 執行提供者需要 Python amd64 3.8.10 到 3.12.x 版本
>     - 已使用 [python-3.12.6-amd64](https://www.python.org/ftp/python/3.12.6/python-3.12.6-amd64.exe) 驗證教學範例
- **如何使用 C/C++ 進行推理？**

> 
> 
> - 您也可以使用 C/C++ 執行推論 [C/C++ 範例](https://github.com/microsoft/onnxruntime-inference-examples/tree/main/c_cxx/fns_candy_style_transfer) 。
- **如何獲取有關 ONNX Runtime 的更多資訊？**

> 
> 
> - 請參見 [Python | onnxruntime](https://onnxruntime.ai/docs/get-started/with-python.html#get-started-with-onnx-runtime-in-python) 以獲得更多資訊。
- **Windows on Snapdragon 是否支援 Sklearn？**

    - 目前僅有 ORT CPU 支援 Sklearn ONNX。若需要詳細資訊，請參考 [sklearn-onnx](https://onnx.ai/sklearn-onnx/tutorial_1_simple.html)
- **如何使用 ORT-CPU 執行提供者執行其他模型？**

> 
> 
> 下面是範例程式碼：
> 
> 
> import onnxruntime as ort
>         import numpy as np
>         
>         # Step1: Runtime and model initialization
>         # Enter path to the model in the below
>         onnx_model_path = "path/to/model"
>         session = ort.InferenceSession(onnx_model_path, providers=['CPUExecutionProvider'])
>         
>         # Step2: Input/Output handling, Generate raw input
>         input_shape = session.get_inputs()[0].shape
>         input_data = np.random.random(input_shape).astype(np.float32)
>         
>         # Model input name
>         input_name = session.get_inputs()[0].name
>         
>         # Step3: Model inferencing using preprocessed input.
>         result = session.run(None, {input_name: input_data})
>         Copy to clipboard

Last Published: Dec 16, 2025

[Previous Topic
ONNX Runtime](https://docs.qualcomm.com/bundle/publicresource/80-62010-1TC/topics/ort.md) [Next Topic
QNN EP](https://docs.qualcomm.com/bundle/publicresource/80-62010-1TC/topics/ort-qnn-ep.md)