MIGraphX Execution Provider

Der MIGraphX Execution Provider verwendet AMDs Deep Learning Graph-Optimierungs-Engine, um ONNX-Modelle auf AMD-GPUs zu beschleunigen.

Inhalt

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 zum Schreiben der .mxr-Datei (Standard ist ./compiled_model.mxr) 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 zum Lesen der .mxr-Datei (Standard ist ./compiled_model.mxr) 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)