コンテンツにスキップ

AMD - MIGraphX

MIGraphX実行プロバイダーは、AMDの深層学習グラフ最適化エンジンを使用して、AMD GPU上でONNXモデルを高速化します。

注意 PyTorchバージョンで指定されている適切なバージョンのPyTorchをインストールしてください。

Nightly PyTorchビルドについては、Pytorch homeを参照し、Compute PlatformとしてROCmを選択してください。

MIGraphX EPを搭載したONNX Runtimeのビルド済みバイナリは、ほとんどの言語バインディングで公開されています。ORTのインストールを参照してください。

ROCm 6.0.2以降、AMDは(https://repo.radeon.com/rocm/manylinux)でホストされているビルド済みpythonホイールを提供しています。

ビルド手順については、BUILDページを参照してください。ビルド済み.whlファイルは、以下の要件セクションで提供されており、repo.radeon.comでホストされています。Ubuntuベースのdocker開発環境は、Dockerサポートセクションで提供されています。新しいwhlとdockerは、ROCmリリースごとに公開されます。

以下は、Ubuntuビルドに対応するサポートされているROCmバージョンのマトリックスです。

ROCm 6.0.2の時点で、ビルド済みPythonホイール(.whl)へのリンクが、Ubuntuサポートに基づくホストOSのpythonバージョンに対応して以下にリンクされています。 すべてのリンクは、ROCmリリースに対応するAMDのrepo.radeon manylinuxページにあります。

ONNX RuntimeバージョンMIGraphX ROCmリリースPython 3.8Python 3.9Python 3.10Python 3.12
1.22.17.03.103.12
1.216.4.43.93.103.12
1.216.4.33.93.103.12
1.216.4.23.93.103.12
1.216.4.13.93.103.12
1.216.43.103.12
1.196.3.13.103.12
1.196.33.103.12
1.186.2.43.10
1.186.2.33.10
1.186.23.83.10
1.176.1.33.10
1.176.13.83.10
1.166.0.23.10
1.166.0.0
1.155.4.x
1.145.4
1.145.4
1.135.4
1.135.3.2
1.135.3
1.125.2.3
1.125.2

単純なワークロードやプロトタイピングのために、AMDは最新のROCmリリースとROCM DockerhubにあるサポートされているROCm-Pytorchビルドを使用してUbuntuベースのDockerイメージを作成します。

その目的は、ユーザーがpythonでカスタムワークロードをすぐに実行できるようにすることであり、Onnxruntimeをビルドする必要なく、開始するために必要なビルド済みのROCm、Onnxruntime、MIGraphXパッケージの環境を提供します。

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の詳細はこちらです。

MIGraphX実行プロバイダーを使用してONNX RuntimeビルドからPythonホイールを使用する場合、デフォルトのGPUまたはCPU実行プロバイダーよりも自動的に優先されます。実行プロバイダーを個別に登録する必要はありません。

Python APIの詳細はこちらです。

次回のリリース(ORT 1.10)では、InferenceSessionをインスタンス化する際に、デフォルトのCPUプロバイダー以外の実行プロバイダーを使用したい場合は、providersパラメータを明示的に設定する必要があります。

CPUまたはMIGraphX実行プロバイダーでモデルを実行するためのpythonスクリプトはこちらで確認できます。

これらのフラグは、Onnxruntimeセッションオブジェクトを作成し、MIGraphXExecutionProviderを呼び出すときに、Provider Options構造体リンクを介して呼び出すことができます。

pythonを使用する場合、MIGraphX実行プロバイダーを呼び出すときに、項目はpython辞書として追加されます。

セッションオプションフラグ説明
device_idINTセッション実行に指定されたデバイスIDを選択します(デフォルトはデバイス0)
migraphx_fp16_enable1 または 0入力モデルのMIGraphX APIを介してFP16量子化モードを有効にします。
migraphx_int8_enable1 または 0入力モデルのMIGraphX APIを介してint8静的量子化モードを有効にします。キャリブレーションテーブルパス変数を設定する必要があります(migraphx_int8_calibration_table_name=有効なパス)。
migraphx_int8_calibration_table_name<キャリブレーションテーブルへの絶対パス>int8静的モデル量子化のための入力キャリブレーションデータセットへのパス。
migraphx_int8_use_native_calibration_table1 または 0Nvidiaネイティブint8形式またはjsonダンプ形式のキャリブレーションテーブルを使用します。
migraphx_exhaustive_tune1 または 0 (デフォルト 0)MIGraphX APIを介したコンパイルの一部として、パラメータの網羅的なチューニングを有効にします。潜在的なパフォーマンス向上のために追加のコンパイル時間がかかります。
migraphx_mem_limitINTメモリアリーナに使用されるメモリ制限を設定します。デフォルトではORTのdefault_memory_arena_cfg値が使用されます。
migraphx_external_allocアドレスこのEPに使用される外部メモリアロケータ関数のアドレス。より大きなモデルの重みを読み込むのに役立ちます。
migraphx_external_freeアドレスこのEPに使用される外部メモリデアロケータ関数のアドレス。migraphx_external_alloc入力で割り当てられたものをアンロードするのに役立ちます。
migraphx_external_empty_cacheアドレスこのモデルに使用される外部メモリキャッシュのアドレス。外部で割り当てられたモデルの結果をキャッシュするのに役立ちます。
非推奨削除されたリリース説明
migraphx_save_compiled_modelROCm 6.41に設定すると、コンパイル後にモデルをMIGraphX(.mxr)形式で保存できるようにします
migraphx_save_compiled_pathROcm 6.4.mxrファイルを書き込むパス(デフォルトは./compiled_model.mxr)。MIGraphXコンパイル済みモデルが保存されるパス。このセッションでmigraphx_save_compiled_pathを設定する必要があります
migraphx_load_compiled_modelROCm 6.41に設定すると、コンパイル後にモデルをMIGraphX(.mxr)形式で読み込めるようにします
migraphx_load_compiled_pathROCm 6.4.mxrファイルを読み込むパス(デフォルトは./compiled_model.mxr)。MIGraphXコンパイル済みモデルが保存されるパス。

環境変数はグローバルレベルで呼び出すことができます。これらは通常、次のように使用されます。

export ORT_MIGRAPHX_XXXXX = <値>

または、コマンドを実行する前に次のように呼び出されます。

ORT_MIGRAPHX_XXXX=<値> python3 example_script.py

これにより、推論セッションが開始され、「Session()」を介して呼び出された入力が優先されます。

ユーザーは同じ実行で環境変数とセッション変数を呼び出すことができますが、環境変数が優先されます。

環境オプションフラグ説明
ORT_MIGRAPHX_DUMP_MODEL_OPS1 または 0解析中にモデル演算子のダンプを有効にします。
ORT_MIGRAPHX_FP16_ENABLE1 または 0入力モデルのMIGraphX APIを介してFP16量子化モードを有効にします。
ORT_MIGRAPHX_INT8_ENABLE1 または 0入力モデルのMIGraphX APIを介してint8静的量子化モードを有効にします。\n キャリブレーションテーブルパス変数を設定する必要があります(migraphx_int8_calibration_table_name=<有効なパス>)。
ORT_MIGRAPHX_INT8_CALIBRATION_TABLE_NAME<キャリブレーションテーブルへの絶対パス>int8静的モデル量子化のための入力キャリブレーションデータセットへのパス。
ORT_MIGRAPHX_INT8_USE_NATIVE_CALIBRATION_TABLE1 または 0Nvidiaネイティブint8形式またはjsonダンプ形式のキャリブレーションテーブルを使用します。
ORT_MIGRAPHX_EXHAUSTIVE_TUNE1 または 0 (デフォルト 0)MIGraphX APIを介したコンパイルの一部として、パラメータの網羅的なチューニングを有効にします。潜在的なパフォーマンス向上のために追加のコンパイル時間がかかります。
ORT_MIGRAPHX_MODEL_CACHE_PATH<文字列>重みやその他のモデル固有データなどのモデル固有データを読み書きするパス
ORT_MIGRAPHX_MODEL_PATH<文字列>MIGraphXモデルのコンパイル完了後に.mxrパスを読み書きするパス
非推奨削除されたROCmバージョン説明
ORT_MIGRAPHX_SAVE_COMPILED_MODELROCm 6.4コンパイル後にモデルをMIGraphX(.mxr)形式で保存できるようにします。(0または1)
ORT_MIGRAPHX_SAVE_COMPILED_PATHROCm 6.4MIGraphXコンパイル済みモデルが保存されるパス。ORT_MIGRAPHX_SAVE_COMPILED_MODELを1に設定する必要があります。
ORT_MIGRAPHX_LOAD_COMPILED_MODELROCm 6.4コンパイル後にモデルをMIGraphX(.mxr)形式で読み込めるようにします。(0または1)
ORT_MIGRAPHX_LOAD_COMPILED_PATHROCm 6.4MIGraphXコンパイル済みモデルが保存されるパス。ORT_MIGRAPHX_LOAD_COMPILED_MODELを1に設定する必要があります。
import onnxruntime as ort
model_path = '<モデルへのパス>'
providers = [
'MIGraphXExecutionProvider',
'CPUExecutionProvider',
]
session = ort.InferenceSession(model_path, providers=providers)