AMD - MIGraphX
MIGraphX 実行プロバイダー
Section titled “MIGraphX 実行プロバイダー”MIGraphX実行プロバイダーは、AMDの深層学習グラフ最適化エンジンを使用して、AMD GPU上でONNXモデルを高速化します。
インストール
Section titled “インストール”注意 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ホイールを提供しています。
ソースからビルド
Section titled “ソースからビルド”ビルド手順については、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.8 | Python 3.9 | Python 3.10 | Python 3.12 |
|---|---|---|---|---|---|
| 1.22.1 | 7.0 | 3.10 | 3.12 | ||
| 1.21 | 6.4.4 | 3.9 | 3.10 | 3.12 | |
| 1.21 | 6.4.3 | 3.9 | 3.10 | 3.12 | |
| 1.21 | 6.4.2 | 3.9 | 3.10 | 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 サポート
Section titled “Docker サポート”単純なワークロードやプロトタイピングのために、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の詳細はこちらです。
Python
Section titled “Python”MIGraphX実行プロバイダーを使用してONNX RuntimeビルドからPythonホイールを使用する場合、デフォルトのGPUまたはCPU実行プロバイダーよりも自動的に優先されます。実行プロバイダーを個別に登録する必要はありません。
Python APIの詳細はこちらです。
次回のリリース(ORT 1.10)では、InferenceSessionをインスタンス化する際に、デフォルトのCPUプロバイダー以外の実行プロバイダーを使用したい場合は、providersパラメータを明示的に設定する必要があります。
CPUまたはMIGraphX実行プロバイダーでモデルを実行するためのpythonスクリプトはこちらで確認できます。
セッション変数
Section titled “セッション変数”これらのフラグは、Onnxruntimeセッションオブジェクトを作成し、MIGraphXExecutionProviderを呼び出すときに、Provider Options構造体リンクを介して呼び出すことができます。
pythonを使用する場合、MIGraphX実行プロバイダーを呼び出すときに、項目はpython辞書として追加されます。
| セッションオプションフラグ | 値 | 説明 |
|---|---|---|
| device_id | INT | セッション実行に指定されたデバイス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_exhaustive_tune | 1 または 0 (デフォルト 0) | MIGraphX APIを介したコンパイルの一部として、パラメータの網羅的なチューニングを有効にします。潜在的なパフォーマンス向上のために追加のコンパイル時間がかかります。 |
| migraphx_mem_limit | INT | メモリアリーナに使用されるメモリ制限を設定します。デフォルトではORTのdefault_memory_arena_cfg値が使用されます。 |
| migraphx_external_alloc | アドレス | このEPに使用される外部メモリアロケータ関数のアドレス。より大きなモデルの重みを読み込むのに役立ちます。 |
| migraphx_external_free | アドレス | このEPに使用される外部メモリデアロケータ関数のアドレス。migraphx_external_alloc入力で割り当てられたものをアンロードするのに役立ちます。 |
| migraphx_external_empty_cache | アドレス | このモデルに使用される外部メモリキャッシュのアドレス。外部で割り当てられたモデルの結果をキャッシュするのに役立ちます。 |
| 非推奨 | 削除されたリリース | 説明 |
| migraphx_save_compiled_model | ROCm 6.4 | 1に設定すると、コンパイル後にモデルをMIGraphX(.mxr)形式で保存できるようにします |
| migraphx_save_compiled_path | ROcm 6.4 | .mxrファイルを書き込むパス(デフォルトは./compiled_model.mxr)。MIGraphXコンパイル済みモデルが保存されるパス。このセッションでmigraphx_save_compiled_pathを設定する必要があります |
| migraphx_load_compiled_model | ROCm 6.4 | 1に設定すると、コンパイル後にモデルをMIGraphX(.mxr)形式で読み込めるようにします |
| migraphx_load_compiled_path | ROCm 6.4 | .mxrファイルを読み込むパス(デフォルトは./compiled_model.mxr)。MIGraphXコンパイル済みモデルが保存されるパス。 |
環境変数はグローバルレベルで呼び出すことができます。これらは通常、次のように使用されます。
export ORT_MIGRAPHX_XXXXX = <値>または、コマンドを実行する前に次のように呼び出されます。
ORT_MIGRAPHX_XXXX=<値> 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_EXHAUSTIVE_TUNE | 1 または 0 (デフォルト 0) | MIGraphX APIを介したコンパイルの一部として、パラメータの網羅的なチューニングを有効にします。潜在的なパフォーマンス向上のために追加のコンパイル時間がかかります。 |
| ORT_MIGRAPHX_MODEL_CACHE_PATH | <文字列> | 重みやその他のモデル固有データなどのモデル固有データを読み書きするパス |
| ORT_MIGRAPHX_MODEL_PATH | <文字列> | MIGraphXモデルのコンパイル完了後に.mxrパスを読み書きするパス |
| 非推奨 | 削除されたROCmバージョン | 説明 |
| ORT_MIGRAPHX_SAVE_COMPILED_MODEL | ROCm 6.4 | コンパイル後にモデルをMIGraphX(.mxr)形式で保存できるようにします。(0または1) |
| ORT_MIGRAPHX_SAVE_COMPILED_PATH | ROCm 6.4 | MIGraphXコンパイル済みモデルが保存されるパス。ORT_MIGRAPHX_SAVE_COMPILED_MODELを1に設定する必要があります。 |
| ORT_MIGRAPHX_LOAD_COMPILED_MODEL | ROCm 6.4 | コンパイル後にモデルをMIGraphX(.mxr)形式で読み込めるようにします。(0または1) |
| ORT_MIGRAPHX_LOAD_COMPILED_PATH | ROCm 6.4 | MIGraphXコンパイル済みモデルが保存されるパス。ORT_MIGRAPHX_LOAD_COMPILED_MODELを1に設定する必要があります。 |
Python
Section titled “Python”import onnxruntime as ort
model_path = '<モデルへのパス>'
providers = [ 'MIGraphXExecutionProvider', 'CPUExecutionProvider',]
session = ort.InferenceSession(model_path, providers=providers)