写点什么

NPU 上运行 onnxruntime

作者:zjun
  • 2025-03-10
    浙江
  • 本文字数:1055 字

    阅读完需:约 3 分钟

NPU上运行onnxruntime

1 问题背景

在 Ascend 环境上,使用 onnxruntime 推理时,报错:


/onnxruntime_src/onnxruntime/core/session/provider_bridge_ort.cc:1193 onnxruntime::Provider& onnxruntime::ProviderLibrary::Get() [ONNXRuntimeError] : 1 : FAIL : Failed to load library libonnxruntime_providers_cuda.so with error: libcudart.so.11.0: cannot open shared object file: No such file or directorys
复制代码


显示的是 cuda 的组件找不到。由于是 Ascend 环境,肯定是没有 GPU 的,很明显是 onnxruntime 的包装错了。


pip show onnxruntime-gpu
复制代码


通过如上命令,可以看到环境上确实安装的是 gpu 版本的。这里先卸载 onnxruntime-gpu。

2 解决办法

通过查找 onnxruntime 社区,可以发现 npu 已经对 onnxruntime 进行了适配,参考如下文档:onnxruntime/docs/execution-providers/community-maintained/CANN-ExecutionProvider.md at gh-pages · microsoft/onnxruntime那么该如何才能构建 onnxruntime 适配 Ascend 上的 whl 包呢?这里提供源码构建的办法:

2.1 克隆源码

git clone https://github.com/microsoft/onnxruntime.gitcd onnxruntime

2.2 构建 whl 包

注意**--use_cann**参数


# 先初始化CANN环境source /usr/local/Ascend/ascend-toolkit/set_env.sh # 执行build脚本./build.sh --config Release --build_shared_lib --parallel --use_cann --build_wheel若构建成功,whl包会生成在build/Linux/Release/dist/目录下。安装onnxruntime-cannpip3 install onnxruntime_cann-x.xx.x-xxxx-xxxxx-xxxxx_xxx_xx.whl
复制代码

3 推理示例

import numpy as npimport onnxruntime as ort # 模型路径model = "./resnet34.onnx" # 以CANN作为EP的配置,参数说明可见:https://github.com/microsoft/onnxruntime/blob/gh-pages/docs/execution-providers/community-maintained/CANN-ExecutionProvider.mdproviders = [    ("CANNExecutionProvider", {        "device_id": 0,                                         "arena_extend_strategy": "kNextPowerOfTwo",             "npu_mem_limit": 4 * 1024 * 1024 * 1024,        "enable_cann_graph": True,    }),] # options可以用来对推理session进行配置,例如开启profiling功能options = ort.SessionOptions() # 创建推理sessionsession = ort.InferenceSession(model, providers=providers, sess_options=options) # 构造纯推理数据ndata = np.zeros([1, 3, 224, 224], dtype=np.float32) # 执行推理session.run(["class"], {"image": ndata}])
复制代码


用户头像

zjun

关注

还未添加个人签名 2020-03-06 加入

还未添加个人简介

评论

发布
暂无评论
NPU上运行onnxruntime_推理_zjun_InfoQ写作社区