【环境搭建】onnxruntime

1,介绍
    onnxruntime是一个用于onnx模型推理的引擎。

2,安装
2.1 cuda,cudnn
2.2 cmake,版本>=3.13.0

sudo apt-get install libssl-dev
sudo apt-get autoremove cmake # 卸载
wget https://cmake.org/files/v3.23/cmake-3.23.4.tar.gz
tar -xf cmake-3.23.4
cd cmake-3.23.4
./bootstrap --prefix=/usr
make -j 8
sudo make install

cmake -version
cmake version 3.23.4
CMake suite maintained and supported by Kitware (kitware.com/cmake).

2.3 tensorrt
2.4 onnxruntime

conda activate py36 # 切换虚拟环境
git clone https://github.com/microsoft/onnxruntime.git
cd onnxruntime
git submodule sync
git submodule update --init --recursive 
./build.sh \
	--use_cuda \
	--cuda_version=11.0 \
	--cuda_home=/usr/local/cuda \
	--cudnn_home=/usr/local/cuda \
	--use_tensorrt --tensorrt_home=$TENSORRT_ROOT \
	--build_shared_lib --enable_pybind \
	--build_wheel --update --build
pip build/Linux/Debug/dist/onnxruntime_gpu_tensorrt-1.6.0-cp36-cp36m-linux_x86_64.whl

# 获取指定版本
git clone -b v1.6.0 https://github.com/microsoft/onnxruntime.git
cd onnxruntime
git checkout -b v1.6.0
git submodule sync
git submodule update --init --recursive 

3,pip 安装

pip install onnxruntime-gpu==1.6.0 onnx==1.9.0 onnxconverter_common==1.6.0 # cuda 10.2
pip install onnxruntime-gpu==1.8.1 onnx==1.9.0 onnxconverter_common==1.8.1 # cuda 11.0

import onnxruntime
onnxruntime.get_available_providers()
sess = onnxruntime.InferenceSession(onnx_path)
sess.set_providers(['CUDAExecutionProvider'], [ {'device_id': 0}])
result = sess.run([output_name], {input_name:x})  # x is input

3,onnxruntime and pytorch inference

# -*- coding: utf-8 -*-
import torch
from torchvision import models
import onnxruntime
import numpy as np

model = models.resnet18(pretrained=True)
model.eval().cuda()

## pytorch
x = torch.rand(2,3,224,224).cuda()
out_pt = model(x)
print(out_pt.size())

# onnx
onnx_path = "resnet18.onnx"
dynamic_axes = {'input': {0: 'batch_size'}}
torch.onnx.export(model,
                  x,
                  onnx_path,
                  export_params=True,
                  opset_version=11,
                  do_constant_folding=True,
                  input_names=['input'],
                  dynamic_axes=dynamic_axes)

sess = onnxruntime.InferenceSession(onnx_path)
sess.set_providers(['CUDAExecutionProvider'], [ {'device_id': 0}])
input_name = sess.get_inputs()[0].name
output_name = sess.get_outputs()[0].name

# onnxruntime inference
xx = x.cpu().numpy().astype(np.float32)
result = sess.run([output_name], {input_name:xx})  # x is input
print(result[0].shape)

# MSE
mse = np.mean((out_pt.data.cpu().numpy() - result[0]) ** 2)
print(mse)

输出结果

torch.Size([2, 1000])
(2, 1000)
9.275762e-13
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ONNX Runtime是一个用于高性能机器学习推断的开源工具包。VSCode是一个轻量级的跨平台集成开发环境。以下是在VSCode环境中搭建ONNX Runtime C开发环境的步骤: 1. 安装VSCode:首先,我们需要下载并安装VSCode。访问VSCode官方网站,选择适用于您操作系统的版本,并按照指示进行安装。 2. 安装CMake:ONNX Runtime C使用CMake进行项目构建。因此,我们还需要安装CMake。您可以访问CMake官方网站并选择适用于您操作系统的版本。 3. 克隆ONNX Runtime库:使用命令行或VSCode的集成终端,打开一个目录并执行以下命令来克隆ONNX Runtime的GitHub库: ``` git clone --recursive https://github.com/microsoft/onnxruntime.git ``` 4. 打开ONNX Runtime C项目:在VSCode中打开ONNX Runtime C项目,通过菜单打开文件夹或使用命令行导航到ONNX Runtime库的根目录并输入以下命令打开VSCode: ``` code . ``` 5. 安装依赖项:使用VSCode的集成终端或命令行,在ONNX Runtime库的根目录下执行以下命令来安装构建所需的依赖项: ``` ./build.sh --update --build --parallel ``` 6. 配置CMake:使用VSCode的集成终端或命令行,在ONNX Runtime库的根目录下执行以下命令配置CMake生成构建文件: ``` ./build.sh --config Release --build --parallel ``` 7. 构建项目:使用VSCode的集成终端或命令行,在ONNX Runtime库的根目录下执行以下命令构建ONNX Runtime C项目: ``` ./build.sh --config Release --build --parallel ``` 8. 完成:在构建成功后,您将在ONNX Runtime库的构建目录中找到生成的ONNX Runtime库文件。现在,您可以在您的C项目中使用ONNX Runtime进行机器学习推断了。 总结:上述步骤中,我们首先安装了VSCode和CMake,然后克隆了ONNX Runtime库,并使用CMake进行项目配置和构建。最后,在构建成功后,我们可以在C项目中使用ONNX Runtime进行机器学习推断。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值