
ONNX Runtime Docker 镜像构建与使用全指南CPU、CUDA、TensorRT、OpenVINO、MIGraphX 与 Jetson 六大 Execution Provider 实战【免费下载链接】onnxruntimeONNX Runtime: cross-platform, high performance ML inferencing and training accelerator项目地址: https://gitcode.com/GitHub_Trending/on/onnxruntimeONNX Runtime 是微软开源的跨平台高性能推理与训练加速引擎其 dockerfiles 目录为不同硬件加速后端Execution Provider简称 EP提供了开箱即用的容器化构建方案。本文以仓库中的 dockerfiles/README.md 为骨架结合仓库内全部 Dockerfile 与构建脚本源码完整讲解如何基于 CPU、CUDA、TensorRT、OpenVINO、MIGraphX、VitisAI 以及 NVIDIA Jetson 平台构建并运行 ONNX Runtime 的 Docker 镜像。读完本文你将掌握每个 Dockerfile 的适用场景、全部构建参数build-arg的取值与默认值、镜像构建与容器运行命令以及 GPU/VPU 等特殊设备在容器内的挂载方式可直接照搬到自己的项目中完成 ONNX Runtime 的容器化推理环境搭建。一、Docker 镜像家族总览仓库 dockerfiles/ 目录当前实际提供 7 个 Dockerfile分别对应不同的执行提供方Execution Provider与目标平台Dockerfile目标 EP / 平台基础镜像关键 build-argDockerfile.sourceCPUPython 绑定mcr.microsoft.com/azurelinux/base/python:3无版本取自仓库 VERSION_NUMBERDockerfile.cudaCUDAGPUnvcr.io/nvidia/cuda:CUDA_VERSION-devel-ubuntu24.04CUDA_VERSION、CUDNN_VERSION、CMAKE_CUDA_ARCHITECTURES、GIT_COMMIT、GIT_BRANCH、ONNXRUNTIME_VERSIONDockerfile.tensorrtTensorRTnvcr.io/nvidia/tensorrt:TRT_CONTAINER_VERSION-py3TRT_CONTAINER_VERSION、ONNXRUNTIME_REPO、ONNXRUNTIME_BRANCH、CMAKE_CUDA_ARCHITECTURESDockerfile.openvinoOpenVINOIntel CPU/GPU/VPU 等openvino/ubuntu22_runtime:OPENVINO_VERSIONDEVICE、OPENVINO_VERSION、ONNXRUNTIME_REPO、ONNXRUNTIME_BRANCHDockerfile.migraphxMIGraphXAMD GPU / ROCmrocm/pytorch:rocm7.1_ubuntu24.04_...ONNXRUNTIME_REPO、ONNXRUNTIME_BRANCHDockerfile.vitisaiVitisAIXilinx FPGAxilinx/vitis-ai-cpu:1.3.598ONNXRUNTIME_REPO、ONNXRUNTIME_BRANCH、PYXIR_REPO、PYXIR_BRANCH、PYXIR_FLAGDockerfile.jetsonNVIDIA JetsonTX1/TX2/Nano/Xaviernvcr.io/nvidia/l4t-base:r32.4.3WHEEL_FILE、BASE_IMAGE从源码结构看所有从源码编译的镜像最终都汇聚到同一个构建入口仓库根目录的 build.sh 只是薄封装其核心逻辑是调用 tools/ci_build/build.pypython3 $DIR/tools/ci_build/build.py --build_dir $DIR/build/$DIR_OS $。各 Dockerfile 正是通过向该脚本传递--use_cuda、--use_tensorrt、--use_openvino、--use_migraphx、--use_vitisai等参数来切换不同的 EP 编译开关例如 build.py 中onnxruntime_USE_MIGRAPHX、onnxruntime_USE_TENSORRT、onnxruntime_USE_OPENVINO_*系列 CMake 定义均由这些参数推导而来。注意README 中提到的Dockerfile.openvino-csharp、Dockerfile.openvino-rhel、Dockerfile.arm64、Dockerfile.arm32v7等变体在当前仓库中并未提供现仓库仅保留上表中的 7 个 Dockerfile如需 C#/RHEL 变体可参照下文 OpenVINO 一节的说明自行组织构建环境。二、构建前的通用准备无论构建哪个镜像都需要先准备好完整源码树与子模块。README 中 CUDA、TensorRT、ARM 等章节均要求先执行git submodule update --initONNX Runtime 依赖大量第三方库onnx、protobuf、flatbuffers、eigen、xnnpack 等详见 cmake/external 下的各.cmake文件子模块是编译的必备前提。此外从源码编译的镜像在打版时会读取仓库根目录的 VERSION_NUMBER当前仓库该文件内容为1.30.0通过--cmake_extra_defines ONNXRUNTIME_VERSION$(cat ./VERSION_NUMBER)写入构建产物。对于需要在容器内联网下载依赖的场景仓库还提供了两个辅助脚本install_common_deps.sh安装wget、zip、build-essential、curl、libssl-dev、python3-dev等基础依赖并自动下载 Miniconda安装至/opt/miniconda和 CMake 3.31.5解压至工作目录。OpenVINO、TensorRT、MIGraphX、VitisAI 的 Dockerfile 都会调用它。install_cmake.sh按当前 CPU 架构uname -m下载并安装 CMake 3.28.0 到/usr。三、CPU 镜像Dockerfile.sourceREADME 将 CPU 镜像描述为“Mariner 2.0, CPU, Python Bindings”。需要说明的是当前 Dockerfile.source 实际基于mcr.microsoft.com/azurelinux/base/python:3Azure Linux 是 CBL-Mariner 的后继发行版包管理使用tdnf两阶段构建构建阶段ADD . /code将整个仓库拷入容器tdnf安装build-essential、cmake、python3-devel、python3-numpy、python3-protobuf等依赖后执行./build.sh --allow_running_as_root --skip_submodule_sync --config Release --build_wheel --update --build --parallel --cmake_extra_defines ONNXRUNTIME_VERSION$(cat ./VERSION_NUMBER)运行阶段从构建阶段拷贝build/Linux/Release/dist目录下的 wheelpip install完成安装同时把 dockerfiles/LICENSE-IMAGE.txt 拷入镜像。构建命令构建上下文为仓库根目录即..docker build -t onnxruntime-source -f Dockerfile.source ..运行容器docker run -it onnxruntime-source该 Dockerfile 同时支持 x86_64 与 ARM64aarch64两种 CPU 架构可用--platform显式指定目标架构docker build --platform linux/arm64/v8 -f Dockerfile.source ..README 特别提醒不能用这种方式构建 32 位 ARM因为 32 位编译器/链接器可能没有足够内存生成二进制。ARM 相关的更多注意事项见下文第九节。四、CUDA 镜像Dockerfile.cudaCUDA 镜像面向 GPU 推理场景README 标注的环境为Ubuntu 24.04、CUDA 12.x、CuDNN 9.x与 Dockerfile.cuda 的默认值一致ARG CUDA_VERSION12.6.1、ARG CUDNN_VERSION9.5.0.50、ARG OSubuntu24.04。4.1 选择版本并构建可以先到 Docker Hub 查询可用的 NVIDIA CUDA 基础镜像标签、到 PyPI 查询nvidia-cudnn-cu12包历史版本然后像下面这样构建构建参数拼接自 README 与 Dockerfile 双重验证git submodule update --init docker build -t onnxruntime-cuda --build-arg CUDA_VERSION12.6.1 \ --build-arg CUDNN_VERSION9.5.0.50 \ --build-arg GIT_BRANCH$(git rev-parse --abbrev-ref HEAD) \ --build-arg GIT_COMMIT$(git rev-parse HEAD) \ --build-arg ONNXRUNTIME_VERSION$(cat ../VERSION_NUMBER) \ -f Dockerfile.cuda ..其中GIT_BRANCH、GIT_COMMIT、ONNXRUNTIME_VERSION三个参数并非可选Dockerfile 第二阶段通过RUN test -n ${GIT_COMMIT:?}、RUN test -n ${GIT_BRANCH:?}、RUN test -n ${ONNXRUNTIME_VERSION:?}强制校验缺失会直接构建失败。它们会被写入镜像标签LABEL便于追溯镜像对应的源码版本LABEL CUDA_VERSION${CUDA_VERSION} LABEL CUDNN_VERSION${CUDNN_VERSION} LABEL onnxruntime_version${ONNXRUNTIME_VERSION} LABEL onnxruntime_git_branch${GIT_BRANCH} LABEL onnxruntime_git_commit${GIT_COMMIT}4.2 构建过程源码解读从 Dockerfile.cuda 源码看构建阶段做了四件事安装编译工具链gcc/g/make/git/cmake/wget/ninja-build/python3.12-dev/python3.12-venv下载 cuDNN从developer.download.nvidia.com下载cudnn-linux-x86_64-${CUDNN_VERSION}_cuda${CUDA_VERSION%%.*}-archive.tar.xz解压到/code/build/cudnn该路径随后作为--cudnn_home准备 Python 虚拟环境python3 -m venv /code/env安装psutil、setuptools、wheel、packaging以及 tools/ci_build/github/linux/python/requirements.txt 中的依赖调用构建脚本python /code/tools/ci_build/build.py --build_dir /code/build/Linux --allow_running_as_root --skip_submodule_sync --use_cuda --cuda_home /usr/local/cuda --cudnn_home /code/build/cudnn --build_shared_lib --skip_tests --config Release --build_wheel --update --build --parallel --cmake_generator Ninja --cmake_extra_defines ONNXRUNTIME_VERSION$(cat ./VERSION_NUMBER) CMAKE_CUDA_ARCHITECTURES${CMAKE_CUDA_ARCHITECTURES} onnxruntime_BUILD_UNIT_TESTSOFF。Dockerfile 头部注释还给出了一条实用提示如果宿主机内存小于 64GB可把--parallel改为--parallel 4避免 OOM。另外CMAKE_CUDA_ARCHITECTURES默认值为75;80;90对应 Turing、Ampere、Hopper 三代架构你可以根据目标 GPU 的计算能力可查 NVIDIA CUDA GPUs 列表调整例如只构建针对自己显卡的架构可以显著缩短编译时间。4.3 运行 CUDA 容器docker run --rm --gpus all -it onnxruntime-cuda或使用传统方式nvidia-docker run -it onnxruntime-cuda运行阶段镜像基于cuda:${CUDA_VERSION}-runtime-${OS}在安装 wheel 后还会执行pip install nvidia-cudnn-cu${CUDA_VERSION%%.*}${CUDNN_VERSION}并设置ENV LD_LIBRARY_PATH/ort/env/lib/python3.12/site-packages/nvidia/cudnn/lib:/usr/local/cuda/lib64也就是说运行时所需的 cuDNN 动态库来自 PyPI 的nvidia-cudnn-cu12Python 包而不是系统级安装容器默认命令为/bin/bash且. /ort/env/bin/activate被写入~/.bashrc进入容器后 Python 环境会自动激活。构建完成后可用docker inspect查看镜像标签确认版本信息docker inspect onnxruntime-cuda进入容器后可直接验证 CUDA EP 是否可用import onnxruntime print(onnxruntime.get_available_providers())这也是 Dockerfile.cuda 构建收尾阶段自带的冒烟验证命令python -c import onnxruntime; print(onnxruntime.get_available_providers())正常输出中应包含CUDAExecutionProvider。五、TensorRT 镜像Dockerfile.tensorrtTensorRT 镜像环境为Ubuntu 20.04、CUDA 11.8、TensorRT 8.5.1对应 Dockerfile.tensorrt 默认的基础镜像nvcr.io/nvidia/tensorrt:22.12-py3NGC 22.12 容器即基于 Ubuntu 20.04 并内置 TensorRT 8.5.x。构建前先更新子模块git submodule update --init然后构建docker build -t onnxruntime-trt -f Dockerfile.tensorrt .注意 TensorRT 的构建命令没有像 CUDA 那样使用..上下文而是直接用当前目录.不过 Dockerfile 内部通过git clone --single-branch --branch ${ONNXRUNTIME_BRANCH} --recursive ${ONNXRUNTIME_REPO}从远端拉取源码因此并不依赖本地工作区内容。ONNXRUNTIME_REPO与ONNXRUNTIME_BRANCH分别默认指向 microsoft/onnxruntime 与main分支。构建过程中会调用 checkout_submodules.sh 并按 TensorRT 版本对齐子模块版本trt_version${TRT_VERSION:0:3} /bin/sh onnxruntime/dockerfiles/scripts/checkout_submodules.sh ${trt_version}从 checkout_submodules.sh 源码可以看到它的逻辑当 TensorRT 主版本不是8.2时会把onnx-tensorrt子模块切换到对应发布标签8.0时切换8.0-GA并把protobuf子模块回退到3.10.x以匹配 onnx-tensorrt 的 protobuf 版本要求。随后调用build.sh传入--use_tensorrt --tensorrt_home /usr/lib/x86_64-linux-gnu/ --cuda_home /usr/local/cuda --cudnn_home /usr/lib/x86_64-linux-gnu/等参数完成编译CMAKE_CUDA_ARCHITECTURES同样默认为75;80;90。运行容器需要 GPU 访问docker run --gpus all -it onnxruntime-trt或nvidia-docker run -it onnxruntime-trt六、OpenVINO 镜像Dockerfile.openvinoOpenVINO 镜像面向 Intel 硬件CPU、集成显卡、Movidius VPU、Vision Accelerator 等README 标注为Public Preview覆盖Ubuntu 20.04 的 Python 与 C# 绑定以及RHEL 8.4 的 Python 绑定。当前仓库只提供了 Dockerfile.openvino基于openvino/ubuntu22_runtime:2024.2.0采用两阶段构建builder 阶段编译 wheeldeploy 阶段以非 root 用户onnxruntimedev运行。6.1 两种获取方式方式一使用官方预构建镜像。Docker Hub 上的统一镜像openvino/onnxruntime_ep_ubuntu20可在任意目标加速器上运行应用。应用需要显式通过 OpenVINO EP 的device_type运行时配置项指定目标设备若未指定默认选择 CPU 作为硬件执行目标。关于该选项在应用代码中的具体写法可参考 OpenVINO-ExecutionProvider.md 的配置说明。方式二从 Dockerfile 自行构建。为 Python API 构建时选择Dockerfile.openvino。提供DEVICE构建参数即可针对特定设备编译 ONNX Runtimedocker build --rm -t onnxruntime --build-arg DEVICE$DEVICE -f Dockerfile .从 Dockerfile.openvino 源码看DEVICE的值会直接传给./build.sh --use_openvino ${DEVICE}而在 build.py 中--use_openvino的取值会被映射为一系列 CMake 开关例如以HETERO开头时启用onnxruntime_USE_OPENVINO_HETEROON以MULTI开头时启用onnxruntime_USE_OPENVINO_MULTION以AUTO开头时启用onnxruntime_USE_OPENVINO_AUTOON同时通过onnxruntime_USE_OPENVINO_DEVICE记录具体设备串。此外还可通过ONNXRUNTIME_REPO、ONNXRUNTIME_BRANCH构建参数指定要编译的仓库与分支默认仓库为http://github.com/microsoft/onnxruntime默认分支为main。6.2 DEVICE 构建参数取值表DEVICE指定编译 OpenVINO EP 的硬件目标不同 Intel 目标设备的选项如下Device OptionTarget DeviceCPU_FP32Intel CPUsCPU_FP16Intel CPUsGPU_FP32Intel Integrated GraphicsGPU_FP16Intel Integrated GraphicsMYRIAD_FP16Intel Movidius USB sticksVAD-M_FP16Intel Vision Accelerator Design based on Movidius MyriadX VPUsHETERO:DEVICE_TYPE_1,DEVICE_TYPE_2,DEVICE_TYPE_3...上述所有 Intel 硬件组合MULTI:DEVICE_TYPE_1,DEVICE_TYPE_2,DEVICE_TYPE_3...上述所有 Intel 硬件组合AUTO:DEVICE_TYPE_1,DEVICE_TYPE_2,DEVICE_TYPE_3...上述所有 Intel 硬件组合HETERO、MULTI、AUTO三种模式需要至少指定两个设备类型设备类型可选[CPU,GPU,MYRIAD,HDDL]。合法示例HETERO:MYRIAD,CPU HETERO:HDDL,GPU,CPU MULTI:MYRIAD,GPU,CPU AUTO:GPU,CPU需要说明的是DEVICE决定的是容器镜像默认启用的硬件加速目标。构建出针对某个默认目标的镜像后应用仍可在运行时通过 OpenVINO-ExecutionProvider.md 中介绍的 Dynamic device selection API动态设备选择在同一容器内显式切换到其他目标。6.3 各设备的具体构建与运行命令OpenVINO on CPU构建--build-arg DEVICECPU_FP32运行时挂载 USB 设备规则CPU 场景下该规则用于后续可能的 VPU 直连README 原文如此保留docker build --rm -t onnxruntime-cpu --build-arg DEVICECPU_FP32 -f Dockerfile . docker run -it --rm --device-cgroup-rulec 189:* rmw -v /dev/bus/usb:/dev/bus/usb onnxruntime-cpu:latestOpenVINO on GPU构建--build-arg DEVICEGPU_FP32运行时需要把 Intel 集成显卡的 DRM 设备挂进容器docker build --rm -t onnxruntime-gpu --build-arg DEVICEGPU_FP32 -f Dockerfile . docker run -it --rm --device-cgroup-rulec 189:* rmw -v /dev/bus/usb:/dev/bus/usb --device /dev/dri:/dev/dri onnxruntime-gpu:latest如果宿主机是 Ubuntu 20需要把当前用户加入 render 设备组后再运行README 给出的替代步骤详见 openvinotoolkit 的 docker_ci 仓库configure_gpu_ubuntu20.mddocker run -it --rm --device-cgroup-rulec 189:* rmw -v /dev/bus/usb:/dev/bus/usb --device /dev/dri:/dev/dri --group-add$(stat -c %g /dev/dri/render*) onnxruntime-gpu:latestOpenVINO on Myriad VPU构建--build-arg DEVICEMYRIAD_FP16。运行前需在宿主机安装 Myriad 规则驱动参考 OpenVINO 官方安装指南中的 Additional NCS steps然后把 USB 设备挂入容器docker build --rm -t onnxruntime-myriad --build-arg DEVICEMYRIAD_FP16 -f Dockerfile . docker run -it --rm --device-cgroup-rulec 189:* rmw -v /dev/bus/usb:/dev/bus/usb onnxruntime-myriad:latestOpenVINO on VAD-M构建--build-arg DEVICEVAD-M_FP16步骤最多在宿主机下载并安装 OpenVINOFull packageLinux 最新版并按官方指南安装 VAD-M/IVAD VPU 驱动构建镜像docker build --rm -t onnxruntime-vadm --build-arg DEVICEVAD-M_FP16 -f Dockerfile .在宿主机另一个终端启动 hddl daemon先初始化 OpenVINO 环境source openvino_install_directory/setupvars.sh再编辑$HDDL_INSTALL_DIR/config/hddl_service.config把字段bypass_device_number改为8最后重启 daemon$HDDL_INSTALL_DIR/bin/hddldaemon。注意若 OpenVINO 是以 root 权限安装的该文件也须以相同权限修改运行容器挂载 USB 设备、/var/tmp目录和/dev/iondocker run -itu root:root --rm --device-cgroup-rulec 189:* rmw -v /dev/bus/usb:/dev/bus/usb --mount typebind,source/var/tmp,destination/var/tmp --device /dev/ion:/dev/ion onnxruntime-vadm:latestOpenVINO on HETERO / MULTI / AUTO构建命令分别为docker build --rm -t onnxruntime-HETERO --build-arg DEVICEHETERO:DEVICE_TYPE_1,DEVICE_TYPE_2,DEVICE_TYPE_3... -f Dockerfile . docker build --rm -t onnxruntime-MULTI --build-arg DEVICEMULTI:DEVICE_TYPE_1,DEVICE_TYPE_2,DEVICE_TYPE_3... -f Dockerfile . docker build --rm -t onnxruntime-AUTO --build-arg DEVICEAUTO:DEVICE_TYPE_1,DEVICE_TYPE_2,DEVICE_TYPE_3... -f Dockerfile .随后按上文对应设备的要求为每个DEVICE_TYPE安装所需规则、驱动与依赖包再按相应步骤运行容器。七、MIGraphX 镜像Dockerfile.migraphxMIGraphX 是 AMD 基于 ROCm 的推理加速库本镜像用于在 AMD GPU 上运行 ONNX Runtime。README 标注的基线环境为Ubuntu 22.04、ROCm 6.2.3从当前 Dockerfile.migraphx 源码看基础镜像已更新为rocm/pytorch:rocm7.1_ubuntu24.04_py3.12_pytorch_release_2.9.1即实际构建环境为 ROCm 7.1 / Ubuntu 24.04与 README 存在版本差异构建时以 Dockerfile 实际内容为准。Dockerfile 内部逻辑为克隆 onnxruntime 源码--single-branch --branch main --recursive调用 install_common_deps.sh 安装通用依赖然后执行./build.sh --allow_running_as_root --cmake_extra_defines ONNXRUNTIME_VERSIONcat ./VERSION_NUMBER \ --config Release --parallel --skip_tests --build_wheel --use_migraphx最后把构建出的 wheelpip install进镜像。构建命令docker build -t onnxruntime-migraphx -f Dockerfile.migraphx .运行容器需要把 AMD GPU 的字符设备与渲染节点都交给容器并把当前用户加入video组docker run -it --device/dev/kfd --device/dev/dri --group-add video onnxruntime-migraphx八、NVIDIA JetsonDockerfile.jetsonJetson 镜像面向边缘设备TX1/TX2/Nano/XavierREADME 说明其面向JetPack SDK 4.4Dockerfile.jetson 的基础镜像为nvcr.io/nvidia/l4t-base:r32.4.3即 NVIDIA L4T 32.4.3。版本不同时可能需要相应调整指令。该镜像与前几个不同不负责编译只负责把预构建的 ONNX Runtime Python wheel 安装进镜像因此采用两步安装流程在 Jetson 宿主机上构建 ONNX Runtime 的 Python wheel预构建 wheel 也可从 NVIDIA Jetson Zoo 获取用该 wheel 构建 Docker 镜像也可直接在宿主机上安装 wheel。8.1 在 JetPack 4.4 宿主机上构建 wheel先安装构建依赖sudo apt install -y --no-install-recommends \ build-essential software-properties-common cmake libopenblas-dev \ libpython3.6-dev python3-pip python3-dev然后执行构建假设处于 onnxruntime 仓库根目录./build.sh --update --config Release --build --build_wheel \ --use_cuda --cuda_home /usr/local/cuda --cudnn_home /usr/lib/aarch64-linux-gnu如需使用 NVIDIA TensorRT实验性支持可追加--use_tensorrt与--tensorrt_home选项以及 build.sh 支持的任何其他选项。8.2 用 wheel 构建镜像wheel 构建成功后用find命令把每个.whl作为WHEEL_FILE构建参数传入 Docker注意使用 nvidia-docker 并开启 BuildKit这是 Dockerfile.jetson 头注释明确要求的调用方式find . -name *.whl -print -exec sudo -H DOCKER_BUILDKIT1 nvidia-docker build --build-arg WHEEL_FILE{} -f ./dockerfiles/Dockerfile.jetson . \;镜像内部逻辑见 Dockerfile.jetson安装build-essential、libopenblas-dev、libpython3.6-dev、python3-pip、cmake等pip3 install wheel pybind11 pytest后把${WHEEL_FILE}拷贝到/onnxruntime并basename ${WHEEL_FILE} | xargs pip3 install。最终镜像中 ONNX Runtime 安装在/usrwheel 文件副本位于/onnxruntime目录源码树中的其他内容不会被拷贝或安装进镜像。8.3 运行注意运行该容器时必须使用nvidia-docker命令或通过 Docker 命令行选项确保使用 NVIDIA runtime 并从宿主机挂载相应文件否则容器内找不到 CUDA 库。也可以将 NVIDIA runtime 设为 Docker 的默认运行时。九、ARM 32/64 构建ARM 的构建思路与 x86 CPU 类似但若要在 x86 机器上交叉构建 ARM需要先在宿主机Docker 之外安装qemu-user-static系统包之后git submodule update --init docker build -t onnxruntime-source -f Dockerfile.arm64 .. docker run -it onnxruntime-sourceREADME 提到 32 位 ARM 应改用Dockerfile.arm32v7不过正如第一节所述这两个Dockerfile.arm64/Dockerfile.arm32v7文件当前并未随仓库提供。实际可用的做法是使用第三节中的 Dockerfile.source 配合--platform linux/arm64/v8构建 ARM64 镜像32 位 ARM 由于 32 位编译器/链接器内存限制无法通过该方式构建。十、VitisAI 镜像Dockerfile.vitisaiVitisAI 镜像用于 Xilinx FPGA 上的推理加速。README 仅列出该 Dockerfile 未给出步骤结合 Dockerfile.vitisai 与 docker_run_vitisai.sh 源码可补齐完整流程。构建命令docker build -t onnxruntime-vitisai -f Dockerfile.vitisai .构建阶段基于xilinx/vitis-ai-cpu:1.3.598激活vitis-ai-tensorflowconda 环境后依次安装 PYXIRgit clone --single-branch --branch v0.2.0 --recursive ${PYXIR_REPO}默认PYXIR_FLAG--use_vai_rt与 onnxruntime./build.sh --use_vitisai --config RelWithDebInfo --enable_pybind --build_wheel --build_shared_lib并把 docs/Privacy.md、dockerfiles/LICENSE-IMAGE.txt、ThirdPartyNotices.txt 拷入镜像。运行时可借助仓库自带的脚本 docker_run_vitisai.sh它会自动探测并挂载 Xilinx FPGA 所需的设备与目录自动发现/dev下的xclmgmt*管理设备与/dev/dri下的renderD*渲染设备并逐个以--device挂入挂载/opt/xilinx/dsa、/opt/xilinx/overlaybinsDPU 覆盖层到容器透传当前用户的USER/UID/GID把当前目录挂载为/workspace并以它为工作目录使用--networkhost与宿主机共享网络。十一、镜像验证与常见问题构建完成后建议按以下顺序验证镜像查看镜像标签docker inspect imageCUDA 镜像的 Labels 中应能看到CUDA_VERSION、CUDNN_VERSION、onnxruntime_version、onnxruntime_git_branch、onnxruntime_git_commit等溯源信息Dockerfile.cuda 中定义。验证 EP 是否可用进入容器执行python -c import onnxruntime; print(onnxruntime.get_available_providers())输出列表中应包含对应 EP如CUDAExecutionProvider、TensorrtExecutionProvider、OpenVINOExecutionProvider、MIGraphXExecutionProvider等这也是 CUDA 镜像构建收尾阶段自带的自检逻辑。GPU/设备透传检查CUDA/TensorRT 容器确认宿主机具备 NVIDIA Container Toolkit 且使用--gpus all或nvidia-dockerMIGraphX 确认/dev/kfd、/dev/dri已挂载OpenVINO GPU 确认/dev/dri挂载且用户组包含 render 组。常见问题集中在两点一是 CUDA 镜像缺GIT_BRANCH/GIT_COMMIT/ONNXRUNTIME_VERSION三个必填 build-arg 导致第二阶段test -n ...直接失败务必按第四节命令补全二是 Jetson 容器内找不到 CUDA 库几乎都是因为未使用 nvidia runtime。此外从源码编译的镜像CPU/CUDA/OpenVINO/MIGraphX 等都会读取仓库根目录的 VERSION_NUMBER当前为1.30.0作为ONNXRUNTIME_VERSION如需构建指定版本可在构建前确认该文件内容与目标版本一致。结语通过本文可以完整覆盖 ONNX Runtime 容器化的三条主线从源码编译出 wheel 再打进镜像CPU、CUDA、OpenVINO、MIGraphX、VitisAI、基于 NGC 预置工具链镜像编译TensorRT、以及宿主机构建 wheel 后镜像仅做安装Jetson。每个 Dockerfile 都围绕统一的 build.sh / tools/ci_build/build.py 构建入口展开只是通过不同的--use_*参数与基础镜像切换 EP。实际使用时建议先确认仓库 dockerfiles/ 目录中实际存在的 Dockerfile 与 README 标注的基线版本是否一致本文已逐一指出差异再按对应章节的命令进行构建与运行。【免费下载链接】onnxruntimeONNX Runtime: cross-platform, high performance ML inferencing and training accelerator项目地址: https://gitcode.com/GitHub_Trending/on/onnxruntime创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考