1 ONNXRuntime 介绍
近年来,机器学习与深度学习领域迎来了应用层面的激增。例如 SkLearn、PyTorch、TensorFlow、Caffe…众多框架可供选择,模型训练的工具选项已变得极为丰富。与此同时,部署目标的多样性也在不断扩展——涵盖移动设备、桌面 CPU、GPU、TPU 等多种硬件。这一趋势带来了核心挑战:如何为将某一框架训练的模型部署到特定目标设备选择合适的工具。这一点至关重要,它直接关系到模型性能的优化——必须考虑所选框架与目标设备之间的兼容性。
一种可行的方案是使用 ONNX 将模型转换为目标应用适配的框架。例如,若要将 PyTorch 模型部署到 iPhone,可先将模型转换为 ONNX 格式,再从 ONNX 转换为 Core ML(苹果开发的机器学习框架)。另一种方案是利用 ONNX Runtime——微软开发的推理引擎。它以 ONNX 计算静态图为输入,在推理阶段运行该图。具体来说,ONNX Runtime 接收 ONNX 模型作为输入,将完整的计算静态图保留在内存中;随后,将该图划分为可独立管理的子图;最终,将这些子图分配给执行提供者(如 CPU、GPU 等)。
2 ONNXRuntime 编译安装
按照以下步骤执行:
下载指定版本源码
git clone --recursive https://github.com/Microsoft/onnxruntime
cd onnxruntime/
git checkout v1.12.0
这里需要考虑 CUDA 的版本来选择合适的 ONNXRuntime 分支,详情可以参考 ONNXRuntime 文档。
执行编译脚本
./build.sh --skip_tests --use_cuda --config Release --build_shared_lib --parallel --cuda_home /usr/local/cuda-11.3 --cudnn_home /usr/local/cuda-11.3
其中 use_cuda 表示使用 CUDA 版本 ONNXRuntime,cuda_home 和 cudnn_home 均指向 CUDA 安装目录。
执行安装命令
cd /build/Linux/Release
sudo make install
即可安装到系统目录,输出示例如下:
Install the project... -- Install configuration: "Release" -- Installing: /usr/local/include/onnxruntime/core/common ...
-- Installing: /usr/local/lib/libonnxruntime.so.. -- : .so -- : _test_runner


