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 | 儲存 MIGraphX 編譯模型的路徑。需要將 ORT_MIGRAPHX_SAVE_COMPILED_MODEL 設定為 1。 | |
| ORT_MIGRAPHX_LOAD_COMPILED_MODEL | 1 或 0 | 編譯後啟用載入 MIGraphX (.mxr) 格式的模型。 |
| ORT_MIGRAPHX_LOAD_COMPILED_PATH | 儲存 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)