MIGraphX Execution Provider
Der MIGraphX Execution Provider verwendet AMDs Deep Learning Graph-Optimierungs-Engine, um ONNX-Modelle auf AMD-GPUs zu beschleunigen.
Inhalt
- Installieren
- Erstellung aus Quelle
- Voraussetzungen
- Docker-Unterstützung
- Verwendung
- Sitzungsvariablen
- Umgebungsvariablen
- Beispiele
Installieren
HINWEIS Stellen Sie sicher, dass Sie die richtige Version von Pytorch installieren, wie hier PyTorch-Version angegeben.
Für nächtliche PyTorch-Builds siehe Pytorch Home und wählen Sie ROCm als Compute Platform.
Vorkompilierte Binärdateien von ONNX Runtime mit MIGraphX EP sind für die meisten Sprachbindungen veröffentlicht. Bitte beziehen Sie sich auf Install ORT.
Seit ROCm 6.0.2 liefert AMD vorkompilierte Python-Wheels, die auf (https://repo.radeon.com/rocm/manylinux) gehostet werden.
Aus dem Quellcode kompilieren
Anweisungen zum Erstellen finden Sie auf der BUILD-Seite. Vorkompilierte .whl-Dateien finden Sie unten im Abschnitt Anforderungen und werden auf repo.radeon.com gehostet. Ubuntu-basierte Docker-Entwicklungsumgebungen finden Sie im Abschnitt Docker-Unterstützung. Neue whl und Docker werden mit jeder ROCm-Version veröffentlicht.
Voraussetzungen
Nachfolgend finden Sie die Matrix der unterstützten ROCm-Versionen, die den Ubuntu-Builds entsprechen.
Ab ROCm 6.0.2 sind Links zu vorkompilierten Python-Wheels (.whl) unten aufgeführt, die den Python-Versionen für das Host-Betriebssystem basierend auf der Ubuntu-Unterstützung entsprechen. Alle Links finden Sie auf der repo.radeon manylinux Seite von AMD für jede entsprechende ROCm-Version.
| ONNX Runtime-Version | MIGraphX ROCm-Version | 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-Unterstützung
Für einfache Workloads und/oder Prototyping erstellt AMD Docker-Images basierend auf Ubuntu mit der neuesten ROCm-Version und unterstützten ROCm-Pytorch-Builds, die unter ROCM Dockerhub zu finden sind.
Ziel ist es, Benutzern den Einstieg in ihre benutzerdefinierten Workloads in Python zu ermöglichen und eine Umgebung mit vorkompilierten ROCm-, Onnxruntime- und MIGraphX-Paketen bereitzustellen, die für den Start erforderlich sind, ohne Onnxruntime erstellen zu müssen.
Verwendung
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));
Die Details der C-API finden Sie hier.
Python
Wenn Sie das Python-Wheel aus dem ONNX Runtime-Build mit dem MIGraphX Execution Provider verwenden, wird es automatisch gegenüber den Standard-GPU- oder CPU-Execution Providern priorisiert. Es ist nicht erforderlich, den Execution Provider separat zu registrieren.
Details zu den Python-APIs finden Sie hier.
Beachten Sie, dass die nächste Version (ORT 1.10) die explizite Angabe des Providers-Parameters erfordert, wenn Sie einen anderen Execution Provider als den Standard-CPU-Provider verwenden möchten, wenn Sie InferenceSession instanziieren.
Hier finden Sie ein Python-Skript, um ein Modell entweder auf der CPU oder dem MIGraphX Execution Provider auszuführen.
Sitzungsvariablen
Diese Flags können über die Provider-Options-Struktur Link aufgerufen werden, wenn ein Onnxruntime-Sitzungsobjekt erstellt und der MIGraphXExecutionProvider aufgerufen wird.
Elemente werden als Python-Dictionary hinzugefügt, wenn der MIGraphX Execution Provider bei Verwendung von Python aufgerufen wird.
| Sitzungsoption-Flag | Werte | Beschreibung |
|---|---|---|
| device_id | INT | Wählt die für die Sitzungsausführung angegebene Geräte-ID aus (Standard ist Gerät 0). |
| migraphx_fp16_enable | 1 oder 0 | Aktiviert den FP16-Quantisierungsmodus über die MIGraphX API des Eingangsmodells. |
| migraphx_int8_enable | 1 oder 0 | Aktiviert den statischen Int8-Quantisierungsmodus des Eingangsmodells über die MIGraphX API. Erfordert, dass die Kalibrierungstabellenpfadvariablen gesetzt sind (migraphx_int8_calibration_table_name=gültiger Pfad). |
| migraphx_int8_calibration_table_name | Pfad zu einer Reihe von Eingabekalibrierungsdaten für die statische Int8-Modellquantisierung. | |
| migraphx_int8_use_native_calibration_table | 1 oder 0 | Verwendet eine Kalibrierungstabelle im Nvidia Native Int8-Format oder im JSON-Dumpformat. |
| migraphx_save_compiled_model | 1 oder 0 | Aktiviert das Speichern eines Modells im MIGraphX (.mxr)-Format nach der Kompilierung, wenn auf 1 gesetzt. |
| migraphx_save_compiled_path | Pfadstring | Pfad zum Schreiben der .mxr-Datei (Standard ist ./compiled_model.mxr). Pfad, auf dem das kompilierte MIGraphX-Modell gespeichert wird. Erfordert, dass migraphx_save_compiled_path für diese Sitzung gesetzt ist. |
| migraphx_load_compiled_model | 1 oder 0 | Aktiviert das Laden eines Modells im MIGraphX (.mxr)-Format nach der Kompilierung, wenn auf 1 gesetzt. |
| migraphx_load_compiled_path | Pfadstring | Pfad zum Lesen der .mxr-Datei (Standard ist ./compiled_model.mxr). Pfad, auf dem das kompilierte MIGraphX-Modell gespeichert wird. |
| migraphx_exhaustive_tune | 1 oder 0 (Standard 0) | Aktiviert das erschöpfende Tuning von Parametern als Teil der Kompilierung über die MIGraphX API. Erhöht die Kompilierungszeit für eine potenzielle Leistungssteigerung. |
| migraphx_mem_limit | INT | Setzt das Speichermesslimit für die Speicherarena. Standardmäßig wird der Wert von ORTs default_memory_arena_cfg verwendet. |
| migraphx_external_alloc | Adresse | Adresse der externen Speicherallokationsfunktion, die für diesen EP verwendet wird. Nützlich zum Einlesen von Gewichten größerer Modelle. |
| migraphx_external_free | Adresse | Adresse der externen Speicherfreigabefunktion, die für diesen EP verwendet wird. Nützlich zum Entladen dessen, was mit der migraphx_external_alloc-Eingabe zugewiesen wurde. |
| migraphx_external_empty_cache | Adresse | Adresse des externen Speichercaches, der für dieses Modell verwendet wird. Nützlich zum Zwischenspeichern von Ergebnissen extern zugewiesener Modelle. |
Umgebungsvariablen
Umgebungsvariablen können auf globaler Ebene aufgerufen werden. Diese werden typischerweise über
export ORT_MIGRAPHX_XXXXX = <value>
oder aufgerufen, bevor ein Befehl ausgeführt wird, als
ORT_MIGRAPHX_XXXX=<value> python3 example_script.py
Dies startet eine Inferenzsitzung und überschreibt Eingaben, die über „Session()“ aufgerufen wurden.
Benutzer können sowohl Umgebungs- als auch Sitzungsvariablen im selben Lauf aufrufen, aber Umgebungsvariablen haben Vorrang.
| Umgebungsoptions-Flag | Werte | Beschreibung |
|---|---|---|
| ORT_MIGRAPHX_DUMP_MODEL_OPS | 1 oder 0 | Aktiviert das Ausgeben von Modelloperatoren während des Parsens. |
| ORT_MIGRAPHX_FP16_ENABLE | 1 oder 0 | Aktiviert den FP16-Quantisierungsmodus über die MIGraphX API des Eingangsmodells. |
| ORT_MIGRAPHX_INT8_ENABLE | 1 oder 0 | Aktiviert den statischen Int8-Quantisierungsmodus des Eingangsmodells über die MIGraphX API.\n Erfordert, dass die Kalibrierungstabellenpfadvariablen gesetzt sind (migraphx_int8_calibration_table_name= |
| ORT_MIGRAPHX_INT8_CALIBRATION_TABLE_NAME | Pfad zu einer Reihe von Eingabekalibrierungsdaten für die statische Int8-Modellquantisierung. | |
| ORT_MIGRAPHX_INT8_USE_NATIVE_CALIBRATION_TABLE | 1 oder 0 | Verwendet eine Kalibrierungstabelle im Nvidia Native Int8-Format oder im JSON-Dumpformat. |
| ORT_MIGRAPHX_SAVE_COMPILED_MODEL | 1 oder 0 | Aktiviert das Speichern eines Modells im MIGraphX (.mxr)-Format nach der Kompilierung. |
| ORT_MIGRAPHX_SAVE_COMPILED_PATH | Pfad, auf dem das kompilierte MIGraphX-Modell gespeichert wird. Erfordert, dass ORT_MIGRAPHX_SAVE_COMPILED_MODEL auf 1 gesetzt ist. | |
| ORT_MIGRAPHX_LOAD_COMPILED_MODEL | 1 oder 0 | Aktiviert das Laden eines Modells im MIGraphX (.mxr)-Format nach der Kompilierung. |
| ORT_MIGRAPHX_LOAD_COMPILED_PATH | Pfad, auf dem das kompilierte MIGraphX-Modell gespeichert wird. Erfordert, dass ORT_MIGRAPHX_LOAD_COMPILED_MODEL auf 1 gesetzt ist. | |
| ORT_MIGRAPHX_EXHAUSTIVE_TUNE | 1 oder 0 (Standard 0) | Aktiviert das erschöpfende Tuning von Parametern als Teil der Kompilierung über die MIGraphX API. Erhöht die Kompilierungszeit für eine potenzielle Leistungssteigerung. |
Beispiele
Python
import onnxruntime as ort
model_path = '<path to model>'
providers = [
'MIGraphXExecutionProvider',
'CPUExecutionProvider',
]
session = ort.InferenceSession(model_path, providers=providers)