快速开始
本章介绍在容器内运行镜像自带的 Python 与 C++ 示例,验证推理链路。开始前请先完成环境准备。
ONNX Runtime 1.23.0 + ep 镜像
镜像内主要内容
/opt/onnxruntime-musa/
├── VERSION 版本与校验信息
├── include/ C++ 头文件
├── lib/ C++ 运行库
├── onnxruntime-linux-x86_64-1.23.0-release.tgz C++ 运行库原始压缩包
└── demo/
├── python/ run_demo.py · models/
└── cpp/ main.cc · CMakeLists.txt · build/ort_musa_cpp_demo · models/
Python 接口已安装在系统 Python 3.10 中,可直接 import onnxruntime。
确认版本
cat /opt/onnxruntime-musa/VERSION
cd /tmp
python3 -c "
import onnxruntime as ort
print('version :', ort.__version__)
print('providers:', ort.get_available_providers())
"
以 S5000 + MUSA SDK 4.3.8 镜像为例,预期输出如下:
ONNXRuntime-MUSA OrtMusaV0.27.7
commit 26d77422
platform MTT S5000 (x86_64), MUSA SDK 4.3.8
python wheel onnxruntime_musa-1.23.0+musa.26d77422-cp310-cp310-linux_x86_64.whl
sha256 eb9c51a59b0808b31eaf64635352421fc1526e202ddad9c5e20b34e68914e0d6
c++ runtime onnxruntime-linux-x86_64-1.23.0-release.tgz
sha256 146b35094d6efc775ffc798f78a38b31b11493bd426e6ee5625d62f61a2b8236
version : 1.23.0+musa.26d77422
providers: ['MUSAExecutionProvider', 'CPUExecutionProvider']
注意:version 为 1.23.0+musa.26d77422,且 providers 中含 MUSAExecutionProvider,才继续。providers 中含 MUSAExecutionProvider 表示 Execution Provider 已加载,不代表模型的全部节点都会在 GPU 上执行,确认方法见模型集成。
镜像内的 C++ 运行库解压自 /opt/onnxruntime-musa 下保留的原始压缩包,可与 VERSION 中的 sha256 核对:
cd /opt/onnxruntime-musa
sha256sum onnxruntime-linux-x86_64-1.23.0-release.tgz
预期输出:
146b35094d6efc775ffc798f78a38b31b11493bd426e6ee5625d62f61a2b8236 onnxruntime-linux-x86_64-1.23.0-release.tgz
运行 Python 示例
cd /opt/onnxruntime-musa/demo/python
python3 run_demo.py --model models/mobilenet_v2_fp16.onnx --device-id 0
注意:启动容器时若指定了 GPU 编号,需要与运行命令中的
--device_id保持一致。
预期输出:
onnxruntime : 1.23.0+musa.26d77422
providers : ['MUSAExecutionProvider', 'CPUExecutionProvider']
model : mobilenet_v2_fp16.onnx
output : (1, 1000)
inference : <耗时> ms (mean of 20, after 3 warmup)
PASS: MUSA EP Python inference completed.
注意:以下四项同时满足即表示推理链路已跑通——providers 中含 MUSAExecutionProvider;output 为 (1, 1000);末行为 PASS: MUSA EP Python inference completed.;输出中没有 EP Error 与 Falling back to ['CPUExecutionProvider'] and retrying. 字样。inference 一行随设备负载波动,仅用于说明输出格式。
出现 EP Error 字样表示 MUSA Execution Provider 加载失败、推理已改在 CPU 上执行,此时末行仍会打印 PASS,不能视为跑通。
运行 C++ 示例
镜像内已预先编译好 C++ 示例,可直接运行:
cd /opt/onnxruntime-musa/demo/cpp
./build/ort_musa_cpp_demo models/mobilenet_v2_fp16.onnx 0
注意:启动容器时若指定了 GPU 编号,需要与运行命令中的第二个参数 保持一致。
预期输出:
model = models/mobilenet_v2_fp16.onnx
device_id = 0
providers : MUSAExecutionProvider CPUExecutionProvider
output : [1, 1000]
inference : <耗时> ms (mean of 20, after 3 warmup)
PASS: MUSA EP C++ inference completed.
注意:以下三项同时满足即表示链路已跑通——providers 中含 MUSAExecutionProvider;output 为 [1, 1000];末行为 PASS: MUSA EP C++ inference completed.。
示例源码与 CMakeLists.txt 位于同一目录,可重新编译:
cd /opt/onnxruntime-musa/demo/cpp
cmake -S . -B /tmp/demo_build
cmake --build /tmp/demo_build -j4
/tmp/demo_build/ort_musa_cpp_demo models/mobilenet_v2_fp16.onnx 0
预期输出末行同上。示例的 CMakeLists.txt 直接链接 /opt/onnxruntime-musa 下的运行库,与模型集成中接入自有工程的写法相同。
示例说明
| 参数 | Python 示例 | C++ 示例 | 默认值 |
|---|---|---|---|
| 模型路径 | --model | 第一个参数 | models/mobilenet_v2_fp16.onnx |
| GPU 编号 | --device-id | 第二个参数 | 0 |
两个示例都从 session 自动查询第一个输入的名称与形状并构造随机输入,因此更换为单输入、静态 shape、fp32 输入