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)