跳到主要内容

常见问题(FAQ)

容器与设备​

MUSAExecutionProvider 不在 providers 列表中​

运行以下命令

ls /dev/mtgpu*

无输出或报 No such file or directory 时,在宿主机检查默认的容器运行时是否已设为 mthreads。若不是,先根据 mt-container-toolkit 文档进行安装设置。

报 initialization error 或 status: 3​

与上一条同因:容器内不存在 /dev/mtgpu* 设备节点。按上一条处理。

若设备节点存在、仍报 MUSA call failed: initialization error,请确认容器以 root 用户运行。镜像默认用户为 root;以 --user 指定非 root 用户启动时,该用户可能没有 GPU 设备节点的访问权限。

指定的 GPU 没有生效​

GPU 由创建容器时的 MTHREADS_VISIBLE_DEVICES 变量决定,进入容器后再修改无效。只使用一张卡时,程序中的 device_id 应与该变量值保持一致。

安装与导入​

以下问题与 Python 接口的安装和导入有关。

组件版本号和镜像相关信息不匹配​

环境中存在其他 ONNX Runtime 版本并被优先加载,常见于用户目录(user-site)中安装过其他版本。该情况不产生任何报错,但实际运行的是另一个引擎。

cd /tmp
python3 -c "import onnxruntime as ort; print(ort.__version__); print(ort.__file__)"

__file__ 若落在 ~/.local/lib/python3.10/site-packages/ 下即可确认。临时确认可加 PYTHONNOUSERSITE=1 重跑上述命令;彻底处理需卸载用户目录中的版本。

libmusart.so.x: cannot open shared object file​

容器环境的 MUSA SDK 和宿主机驱动版本不匹配,或者 mt-container-toolkit 版本低于 2.2.0。

ModuleNotFoundError: No module named 'onnxruntime.capi'​

在包含 onnxruntime 同名目录的路径下执行 Python 导致导入路径冲突。切换到其他目录后重试:

cd /tmp
python3 -c "import onnxruntime as ort; print(ort.__version__)"

推理过程​

模型输出全零或数值异常,但没有任何报错​

按模型集成的精度验证方法,对同一模型、同一输入分别使用 CPUExecutionProvider 与 MUSAExecutionProvider 执行并对比输出。

若验证不通过,请按本页末尾的方式采集信息并联系摩尔线程技术支持,同时提供模型输入输出的 name、shape、dtype。

providers 中有 MUSA,但推理速度接近 CPU​

Execution Provider 已加载,但模型中部分节点由引擎改用 CPU 执行。按模型集成中禁用 CPU 回退的方法定位无法在 GPU 上执行的节点。

更换为自研模型后输入报错​

快速开始中的示例是单输入、fp32 输入的模板。多输入、fp16 输入输出、动态维度等情形按模型集成中的适配表修改。

IOBinding 下更新输入后输出不变​

见模型集成中的 IOBinding 使用约束。

技术支持​

反馈问题时请提供以下信息。第一条在宿主机执行:

mthreads-gmi

其余在容器内执行:

cat /opt/onnxruntime-musa/VERSION
ls -l /usr/local/musa
grep -m1 -A1 musa_toolkits /usr/local/musa/version.json
ls /dev/mtgpu*

cd /tmp && python3 -c "import onnxruntime as o; print(o.__version__); print(o.__file__); print(o.get_available_providers())"

以及 Execution Provider 的依赖解析情况:

cd /tmp
ORT_MUSA_PROVIDER="$(python3 -c 'import onnxruntime, os; print(os.path.dirname(onnxruntime.__file__))')/capi/libonnxruntime_providers_musa.so"
ldd "$ORT_MUSA_PROVIDER" | grep -E "musart|mudnn|mublas|not found"

输出会列出若干行 MUSA 相关的依赖库,开头几行形如:

libmusart.so.4 => /usr/local/musa/lib/libmusart.so.4 (0x...)
libmudnn.so.3 => /usr/local/musa/lib/libmudnn.so.3 (0x...)
libmublas.so.1 => /usr/local/musa/lib/libmublas.so.1 (0x...)

注意:行数与具体条目随 MUSA SDK 版本不同,无需逐行核对。判断依据是输出中不出现 not found,且各库均解析到 /usr/local/musa/lib 下。

另请一并提供:宿主机驱动与 mt-container-toolkit 版本、完整的运行输出、ONNX 模型输入输出的 name、shape 与 dtype。