首页 > 其他分享 >onnxruntime无法使用GPU加速 加速失败 解决方法【非常详细】

onnxruntime无法使用GPU加速 加速失败 解决方法【非常详细】

时间:2024-07-15 23:07:22浏览次数:12  
标签:onnxruntime CUDA 版本 gpu GPU 加速 cuda

onnx 无法使用GPU加速 加速失败 解决方法【非常详细】

 

应该是自目前以来最详细的加速失败解决方法GPU加速,收集了各方的资料。引用资料见后文

硬件配置:

GPU CUDA版本:12.2

客户架构:window10

输入: nvcc --version 

image-20240715140604035

onnxruntime版本后文提供

1 先检测是否无法使用GPU加速

检测代码如下,记得把模型换成你模型的地址

import onnxruntime
print(onnxruntime.__version__)
print(onnxruntime.get_device() ) # 如果得到的输出结果是GPU,所以按理说是找到了GPU的
​
ort_session = onnxruntime.InferenceSession("your_onnx_module_path.onnx",
providers=['CUDAExecutionProvider'])
print(ort_session.get_providers())

explain:

  • 如果print(onnxruntime.version)输出成功,应该包就安装成功了

    • 如果没有,见后文的onnxruntime版本匹配

  • 如果print(onnxruntime.get_device() )输出成功的话,大概率是能够获取到你的gpu了

    • 如果没有获取成功的话,则参见后文的配置cudann

  • 如果print(ort_session.get_providers()),应该是没什么问题了

    • 如果有问题的话,有蛮多情况导致的,我遇到的一个情况与版本有关

2.1 版本匹配

我的报错问题就与版本匹配有关,其他全部都是正确的,且这个关系到onnxruntime的包安装,固直接放到2.1来说明,你的硬件版本很重要,我这个是解决cuda12的,如果是cuda11可能不一样,或者也能给你们提供一点灵感也不错。

  • 问题描述

    Snipaste_2024-07-15_11-55-21

    报错信息大致是:

    CreateExecutionProviderInstance CUDA_PATH is set but CUDA wasn't able to be loaded. Please install the correct version of CUDA andcuDNN as mentioned in the GPU requirements page

    翻译出来就是,CUDA_PATH 路径已经设置了,但是 CUDA 不能被读取【也就说理论上环境变量没问题】,但保险起见,各位也可以检查一下你们的环境变量(后文cudann安装说明)

  • 问题处理

    找到官方提供的onnxcuda官方文档

    image-20240715142123668

    当初没想到这里那么多坑

    • 坑1【直接pip安装onnxruntime-gpu】

      默认下载的是最新的且是针对11.8的版本,因此你直接pip install onnxruntime-gpu实际上安装的版本是onnxruntime-gpu=1.18[ 即最新版 ,而且默认是cuda11的]

    • 坑2【使用官方提供的ort但不指定版本】:

      • 点进去官方的对12.x的指示

      image-20240715142644203

      • 使用官方的命令也会留有后患,因为官方确实是对12.x进行适配了,但默认还是version--1.18,适配cuda12.4,但!他不向下兼容版本,就是说你可能cuda版本12.2,安装了最新的1.18 ,CUDA版本的12.4就不能使用了,因此需要在安装的时候添加你cuda版本对应的ORT的版本

      pip install onnxruntime-gpu==what_you_want_version --extra-index-url https://aiinfra.pkgs.visualstudio.com/PublicPackages/_packaging/onnxruntime-cuda-12/pypi/simple/
      • what_you_want_version换成你需要的版本,对应上图。

      • 问题解决了,程序有输出了

  • 总结,如果没有遇到上述问题或者cuda版本不是12.x的,也可以对应图片通过pip安装即可,cuda12.x的话就要注意多一点,以免踩坑

2.2 安装cuda nn失败、缺失dll

可以参考这位博主的心路历程:

为什么在使用onnxruntime-gpu下却没有成功调用GPU?

在linux系统上可以参考这位博主:

onnxruntime使用gpu推理

大致需要排查的是:

  1. 是否已经安装cuda

  2. 是否已经将cudaNN对应的库放入cuda的文件中

  3. cudaNN版本与cuda版本是否匹配

    image-20240715144252361

    记得你的cudaNN版本要与ORT【onnxruntime版本匹配】

    image-20240715144346184

    按照那位博主或者其他博主的教程安装好对应cudaNN就好,90%的用户都是这个模块出问题了

    1. 检查你的cuda、cudaNN是否设置环境变量成功

    image-20240715144622853

    image-20240715144652275

    在你开发的虚拟环境中运行如下命令查看ORT需要设置的环境变量是否成功设置【默认应该是ok的】

    set CUDA_PATH

    正常输出如下图所示:

    image-20240715144851168

    如果没有怎么办?去环境变量里面设置即可

    image-20240715145008112

    如果没有的话,按照我这个变量新建即可,地址根据自己安装cuda地址填【因为我的cudaNn是嵌入进去的 ,公用一个文件夹】

3 疑难杂症

如果上述两个都解决不了你的问题,那确实是少有的疑难杂症了,我抛砖引玉一下吧,但我不是通过这个思路解决的

  • 来源于ORT的官方issue:Windows CUDA_PATH 已设置,但 CUDA 无法载入

    其中有这样一段话让我围绕了这个思路进行思考:

    • “The D:\ part just points to the source file on a build box, so it had nothing to do with your machine. You might want to check if those CUDA folders are present in the PATH of your Conda environment. Easy way to check is to use where command in CMD.”

    • 大意就是:第一是检查一下cuda在不在环境变量PATH中,有没有可能在conda环境中无法访问到PATH的路径

    • 但这个毕竟不是我解决的方法,如果上面两个问题都无法解决,无妨去看看issue

4 参考资料

ONNX官方文档1

CUDAnn下载官网

官方issue

鸣谢:为什么在使用onnxruntime-gpu下却没有成功调用GPU?,这位大佬的分享让我初期解决这个问题的时候有了一定参考

 

标签:onnxruntime,CUDA,版本,gpu,GPU,加速,cuda
From: https://www.cnblogs.com/io-T-T/p/18304208

相关文章

  • RSRS择时指标的150倍计算加速(有代码)
    文章来源于公众号:Logan投资往期精选文章:因子计算的1000倍加速二级:手搓的择时指增三因子择时策略年入200w的鹅养殖基地一级:轮胎行业的研究二级:最近思考的量化指标再挖掘前一篇推文中,介绍了用numpy加速rolling计算因子的方法。不过演示示例本身其实完全不需要apply,完全可......
  • 如何使用阿里云镜像加速
    有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top官方地址Ubuntu针对Docker客户端版本大于1.10.0的用户您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器sudomkdir-p/etc/dockersudotee/etc/dock......
  • 无GPU情况下对cuda程序进行功能性测试
    安装cuda-toolkit,在没有gpu的情况下,不能安装其中的cudadriver,不勾选,装cudatoolkit即可。安装gpgpu-sim程序。gpgpu的仿真程序,目前仅仅支持cuda11。而cuda11最高支持的ubuntu为20.0。但在22.0的ubuntu上下载cuda11,也可以编译。参看gpgpuREADME.md编译,过程中报错如下,可去掉......
  • 2024年还可以免费使用的cdn加速,真可用
    先给大家看个图 没错,这就是这家cdn官方放出来的使用情况,貌似很猛呀!!!直接先放地址https://cdnuser.commonweal.site/console/index.html注册后看后台公告,不要管标价,这家cdn可以根据公告内容免费申请一年!!!没错,就是一年,这个站也套的自己的cdn,速度还是挺快的,全国三网也就50ms左......
  • 大规模GPU集群的进阶之路
    大家好,我是卢旗。今天来聊聊GPU。GPU,全称GraphicProcessingUnit,即图形处理器。它的并行处理能力非常强大,能够同时处理多个任务和数据,因此被广泛用于图形渲染、视频处理、深度学习、科学计算等领域。研发团队在负责制定硬件选型策略并设计优化下一代大规模GPU集群的软硬件架......
  • Llama2大语言模型在云GPU(AutoDL)上进行训练微调(自定义数据集)
    Llama2是Meta开源的语言大模型,它经过训练的数据集包含2万亿个token。相比Llama,Llama2的上下文长度已经从2048扩展到4096,这使其能够理解和生成更长的文本。Llama2包括了多个模型,分别是7B、13B和70B的模型。一、准备工作在autodl平台租用实例(直接搜索,有许多租用教程,建议租......
  • python获取Android App性能数据(CPU、GPU、内存、电池、耗电量)
    原文链接:https://blog.csdn.net/u012089395/article/details/1266689461、原理python脚本通过os.popen()方法运行adb命令,获取性能数据,将性能数据保存在csv文件并算出均值、最大值、最小值。本脚本可测试一个app包含多个进程的场景,可以获取每个进程的性能数据。2、环境准备:2.1软......
  • 信创里程碑:TapData 与 OceanBase 产品完成兼容互认证,加速推进金融等传统行业自主创新
    近日,深圳钛铂数据有限公司(以下简称钛铂数据)自主研发的钛铂实时数据平台(TapDataLiveDataPlatform,TapDataLDP)与北京奥星贝斯科技有限公司(以下简称奥星贝斯)OceanBase数据库软件完成并通过相互兼容性测试认证。测试结果显示,TapDataLDPV3与OceanBaseV4系列产品完全兼容,整体......
  • 腾讯云加速企业和个人开发创新公开课直播预告
    直播预告:07/18(周四)15:00-16:00随着人工智能与大模型的蓬勃发展,我们正步入一个由技术驱动的创新时代。Al不仅是技术革新的先锋,更是每位程序员不可或缺的“搭子”,掌握AI工具的创造、加工与使用技巧,成为广大从业者当下的挑战之一。腾讯云高性能应用服务HAl,打造一系列热门框架模......
  • 【视频讲解】Python比赛LightGBM、XGBoost+GPU和CatBoost预测学生在游戏学习过程表现|
    全文链接:https://tecdat.cn/?p=36990原文出处:拓端数据部落公众号分析师:QiZhang背景基于游戏进行学习能让学校变得有趣,这种教育方法能让学生在游戏中学习,使其变得有趣和充满活力。尽管基于游戏的学习正在越来越多的教育环境中使用,但能用应用数据科学和学习分析原理来......