MIGraphX 執行提供者

MIGraphX 執行提供者使用 AMD 的深度學習圖最佳化引擎在 AMD GPU 上加速 ONNX 模型。

目錄

安裝

注意 請確保安裝此處指定的 PyTorch 版本:PyTorch 版本

對於 PyTorch 每晚構建版本,請參閱 PyTorch 主頁 並選擇 ROCm 作為計算平臺。

已釋出帶有 MIGraphX EP 的 ONNX Runtime 預構建二進位制檔案,適用於大多數語言繫結。請參考 安裝 ORT

自 ROCm 6.0.2 起,AMD 在 (https://repo.radeon.com/rocm/manylinux) 上提供了預構建的 Python wheel 包。

從原始碼構建

有關構建說明,請參閱 構建頁面。預構建的 .whl 檔案在下面的要求部分中提供,並託管在 repo.radeon.com 上。Docker 支援部分提供了基於 Ubuntu 的 Docker 開發環境。每個 ROCm 釋出都會發布新的 .whl 和 Docker 映象。

要求

以下是支援的 ROCm 版本與 Ubuntu 構建的對照表。

自 ROCm 6.0.2 起,預構建的 Python Wheels (.whl) 檔案連結如下,對應於基於 Ubuntu 支援的主機作業系統的 Python 版本。所有連結都可以在 AMD 的 repo.radeon manylinux 頁面 上找到,對應於每個 ROCm 版本。

ONNX Runtime 版本 MIGraphX ROCm 版本 Python 3.8 Python 3.9 Python 3.10 Python 3.12
1.21 6.4.1   3.9 3.10 3.12
1.21 6.4     3.10 3.12
1.19 6.3.1     3.10 3.12
1.19 6.3     3.10 3.12
1.18 6.2.4     3.10  
1.18 6.2.3     3.10  
1.18 6.2 3.8   3.10  
1.17 6.1.3     3.10  
1.17 6.1 3.8   3.10  
1.16 6.0.2     3.10  
1.16 6.0.0        
1.15 5.4.x        
1.14 5.4        
1.14 5.4        
1.13 5.4        
1.13 5.3.2        
1.13 5.3        
1.12 5.2.3        
1.12 5.2        

Docker 支援

對於簡單的工作負載和/或原型設計,AMD 基於 Ubuntu 建立 Docker 映象,使用最新的 ROCm 版本和支援的 ROCm-PyTorch 構建,可在 ROCM Dockerhub 找到。

目的是讓使用者能夠快速啟動並執行其自定義 Python 工作負載,並提供一個預構建的 ROCm、Onnxruntime 和 MIGraphX 包環境,以便無需構建 Onnxruntime 即可開始使用。

用法

C/C++

Ort::Env env = Ort::Env{ORT_LOGGING_LEVEL_ERROR, "Default"};
Ort::SessionOptions so;
int device_id = 0;
Ort::ThrowOnError(OrtSessionOptionsAppendExecutionProvider_MIGraphX(so, device_id));

C API 詳情請見 此處

Python

當使用帶有 MIGraphX 執行提供者的 ONNX Runtime 構建的 Python wheel 包時,它將自動優先於預設的 GPU 或 CPU 執行提供者。無需單獨註冊執行提供者。

Python API 詳情請見 此處

請注意,下一個版本 (ORT 1.10) 在例項化 InferenceSession 時,如果需要使用預設 CPU 提供者以外的執行提供者,則需要顯式設定 providers 引數。

您可以在 此處 檢視一個 Python 指令碼,用於在 CPU 或 MIGraphX 執行提供者上執行模型。

會話變數

這些標誌可以透過在建立 Onnxruntime 會話物件並呼叫 MIGraphXExecutionProvider 時,透過 Provider Options 結構 連結 來呼叫。

當使用 Python 呼叫 MIGraphX 執行提供者時,專案會作為 Python 字典新增。

會話選項標誌 描述
device_id 整數 選擇為會話執行指定的裝置 ID(預設為裝置 0)
migraphx_fp16_enable 1 或 0 透過 MIGraphX API 啟用輸入模型的 FP16 量化模式。
migraphx_int8_enable 1 或 0 透過 MIGraphX API 啟用輸入模型的 int8 靜態量化模式。需要設定校準表路徑變數(migraphx_int8_calibration_table_name=有效路徑)。
migraphx_int8_calibration_table_name 用於 int8 靜態模型量化的一組輸入校準資料的路徑。
migraphx_int8_use_native_calibration_table 1 或 0 使用 Nvidia 原生 int8 格式或 JSON 匯出格式的校準表。
migraphx_save_compiled_model 1 或 0 設定為 1 時,在編譯後啟用將模型儲存為 MIGraphX (.mxr) 格式。
migraphx_save_compiled_path 路徑字串 寫入 .mxr 檔案的路徑(預設為 ./compiled_model.mxr)。儲存 MIGraphX 編譯模型的路徑。需要為此會話設定 migraphx_save_compiled_path。
migraphx_load_compiled_model 1 或 0 設定為 1 時,在編譯後啟用載入 MIGraphX (.mxr) 格式的模型。
migraphx_load_compiled_path 路徑字串 讀取 .mxr 檔案的路徑(預設為 ./compiled_model.mxr)。儲存 MIGraphX 編譯模型的路徑。
migraphx_exhaustive_tune 1 或 0(預設 0) 透過 MIGraphX API 啟用引數的窮舉調優作為編譯的一部分。這會增加額外的編譯時間,以實現潛在的效能提升。
migraphx_mem_limit 整數 設定用於記憶體區域的記憶體限制。預設使用 ORT 的 default_memory_arena_cfg 值。
migraphx_external_alloc 地址 此 EP 使用的外部記憶體分配函式地址。對於讀取較大的模型權重非常有用。
migraphx_external_free 地址 此 EP 使用的外部記憶體釋放函式地址。對於解除安裝透過 migraphx_external_alloc 輸入分配的記憶體非常有用。
migraphx_external_empty_cache 地址 此模型使用的外部記憶體快取地址。對於快取外部分配模型的結果非常有用。

環境變數

環境變數可以在全域性級別呼叫。它們通常透過以下方式使用:

export ORT_MIGRAPHX_XXXXX = <value> 

或在執行命令之前呼叫為:

ORT_MIGRAPHX_XXXX=<value> python3 example_script.py

這將啟動一個推理會話並取代透過“Session()”呼叫的輸入。

使用者可以在同一執行中呼叫環境和會話變數,但環境變數將優先。

環境選項標誌 描述
ORT_MIGRAPHX_DUMP_MODEL_OPS 1 或 0 在解析期間啟用模型運算子的轉儲。
ORT_MIGRAPHX_FP16_ENABLE 1 或 0 透過 MIGraphX API 啟用輸入模型的 FP16 量化模式。
ORT_MIGRAPHX_INT8_ENABLE 1 或 0 透過 MIGraphX API 啟用輸入模型的 int8 靜態量化模式。\n 需要設定校準表路徑變數 (migraphx_int8_calibration_table_name=).
ORT_MIGRAPHX_INT8_CALIBRATION_TABLE_NAME 用於 int8 靜態模型量化的一組輸入校準資料的路徑。
ORT_MIGRAPHX_INT8_USE_NATIVE_CALIBRATION_TABLE 1 或 0 使用 Nvidia 原生 int8 格式或 JSON 匯出格式的校準表。
ORT_MIGRAPHX_SAVE_COMPILED_MODEL 1 或 0 編譯後啟用將模型儲存為 MIGraphX (.mxr) 格式。
ORT_MIGRAPHX_SAVE_COMPILED_PATH - 寫入 .mxr 檔案的路徑(預設為 ./compiled_model.mxr) 儲存 MIGraphX 編譯模型的路徑。需要將 ORT_MIGRAPHX_SAVE_COMPILED_MODEL 設定為 1。
ORT_MIGRAPHX_LOAD_COMPILED_MODEL 1 或 0 編譯後啟用載入 MIGraphX (.mxr) 格式的模型。
ORT_MIGRAPHX_LOAD_COMPILED_PATH - 讀取 .mxr 檔案的路徑(預設為 ./compiled_model.mxr) 儲存 MIGraphX 編譯模型的路徑。需要將 ORT_MIGRAPHX_LOAD_COMPILED_MODEL 設定為 1。
ORT_MIGRAPHX_EXHAUSTIVE_TUNE 1 或 0(預設 0) 透過 MIGraphX API 啟用引數的窮舉調優作為編譯的一部分。這會增加額外的編譯時間,以實現潛在的效能提升。

示例

Python

import onnxruntime as ort

model_path = '<path to model>'

providers = [
    'MIGraphXExecutionProvider',
    'CPUExecutionProvider',
]

session = ort.InferenceSession(model_path, providers=providers)