效能分析工具

目錄

程式碼內效能分析

onnxruntime_perf_test.exe 工具(可從構建釋出中獲取)可用於測試各種配置。請使用 onnxruntime_perf_test.exe -h 查詢使用說明。perf_view 工具也可用於在瀏覽器中將統計資訊呈現為摘要檢視。

您可以在程式碼中啟用 ONNX Runtime 延遲效能分析

import onnxruntime as rt

sess_options = rt.SessionOptions()
sess_options.enable_profiling = True

如果您正在使用 onnxruntime_perf_test.exe 工具,您可以新增 -p [profile_file] 來啟用效能分析。

在這兩種情況下,您都將獲得一個 JSON 檔案,其中包含詳細的效能資料(執行緒、每個運算子的延遲等)。此檔案是標準的效能追蹤檔案,您可以使用多種工具開啟它,以便以使用者友好的方式檢視。

  • (Windows)使用 WPA GUI 並透過 Perfetto OSS 外掛開啟追蹤檔案 - Microsoft-Performance-Tools-Linux-Android
  • Perfetto UI - Chrome Tracing UI 的繼任者
  • chrome://tracing
    • 開啟基於 Chromium 的瀏覽器,例如 Edge 或 Chrome
    • 在位址列中輸入 chrome://tracing
    • 載入生成的 JSON 檔案

執行提供者 (EP) 效能分析

從 ONNX 1.17 開始,增加了對 EP 或神經網路處理單元 (NPU) 的效能分析支援,前提是該 EP 在其 SDK 中支援效能分析。

Qualcomm QNN EP

QNN EP 文件中所述,支援效能分析。

跨平臺 CSV 追蹤

Qualcomm AI Engine Direct SDK (QNN SDK) 支援效能分析。如果開發者直接在 ONNX 之外使用 QNN SDK,QNN 會以文字格式輸出到 CSV。為了實現等效功能,ONNX 模仿了這種支援並輸出相同的 CSV 格式。

如果提供了 profiling_level,ONNX 將在當前工作目錄中附加一個 qnn-profiling-data.csv 檔案

TraceLogging ETW (Windows) 效能分析

日誌記錄中所述,ONNX 支援動態啟用 ETW 追蹤提供者。具體設定如下。如果 TraceLogging 提供者已啟用且提供了 profiling_level,則 CSV 支援將自動停用。

  • 提供者名稱:Microsoft.ML.ONNXRuntime
  • 提供者 GUID:3a26b1ff-7484-7484-7484-15261f42614d
  • 關鍵字:Profiling = 0x100,參見 logging.h
  • 級別
    • 5 (VERBOSE) = profiling_level=basic(詳細資訊豐富,無效能損失)
    • 大於 5 = profiling_level=detailed(記錄每個操作,會對推理效能造成影響)
  • 事件:QNNProfilingEvent

GPU 效能分析

要分析 CUDA 核心,請將 cupti 庫新增到您的 PATH 中,並使用透過 --enable_cuda_profiling 從原始碼構建的 onnxruntime 二進位制檔案。要分析 ROCm 核心,請將 roctracer 庫新增到您的 PATH 中,並使用透過 --enable_rocm_profiling 從原始碼構建的 onnxruntime 二進位制檔案。

來自裝置的效能資料將隨後附加到來自主機的資料。例如:

{"cat":"Node", "name":"Add_1234", "dur":17, ...}
{"cat":"Kernel", "name":"ort_add_cuda_kernel", dur:33, ...}

在這裡,主機上的“Add”運算子在裝置上啟動了一個名為“ort_add_cuda_kernel”的 CUDA 核心,該核心持續了 33 微秒。如果一個運算子在執行期間呼叫了多個核心,這些核心的效能資料將全部按照呼叫順序列出。

{"cat":"Node", "name":<name of the node>, ...}
{"cat":"Kernel", "name":<name of the kernel called first>, ...}
{"cat":"Kernel", "name":<name of the kernel called next>, ...}