首页 > 其他分享 >pyinstaller打包onnxruntime-gpu报错找不到CUDA的解决方案

pyinstaller打包onnxruntime-gpu报错找不到CUDA的解决方案

时间:2024-07-05 17:27:01浏览次数:17  
标签:pyinstaller onnxruntime py -- 报错 CUDA 打包

问题说明:

使用onnxruntime-gpu完成了深度学习模型部署,但在打包时发生了报错:找不到CUDA

具体问题描述:

RuntimeError: D:\a\_work\1\s\onnxruntime\python\onnxruntime_pybind_state.cc:857 onnxruntime::python::CreateExecutionProviderInstance CUDA_PATH is set but CUDA wasnt able to be loaded. Please install the correct version of CUDA andcuDNN as mentioned in the GPU requirements page  (https://onnxruntime.ai/docs/execution-providers/CUDA-ExecutionProvider.html#requirements),  make sure they're in the PATH, and that your GPU is supported

前提:

1、确保你的 GPU 受 CUDA 支持,并且驱动程序已正确安装

2、电脑上已经安装与onnxruntime-gpu对应版本的cuda和cudnn,并加入了环境变量

3、打包之前可以正常运行

解决方案

onnxruntime-gpu 依赖于一些动态链接库,这些库可能不会被 pyinstaller 自动检测到。你可以创建一个自定义的 hook-onnxruntime.py 文件来帮助 pyinstaller 正确识别 onnxruntime-gpu 的依赖项。在项目目录下,创建一个hook-onnxruntime.py文件,并加入以下代码:

from PyInstaller.utils.hooks import collect_dynamic_libs

hiddenimports = ['onnxruntime', 'onnxruntime.capi', 'onnxruntime.capi.onnxruntime_pybind11_state']

binaries = collect_dynamic_libs('onnxruntime')

然后在pyinstaller命令中,使用:

pyinstaller --onefile --additional-hooks-dir=. -w main.py

--onefile:将所有的文件和依赖打包成一个单独的可执行文件

--additional-hooks-dir=.:指定一个额外的目录,pyinstaller 会在这个目录中查找自定义的钩子(hooks)文件。钩子文件用于在打包过程中处理一些特殊的依赖或行为。. 表示当前目录,即在当前目录中查找钩子文件

-w main.py:指定需要打包的py文件,不带控制台窗口打包

pyinstaller常用命令参数

基本参数
  • -F or --onefile:将所有内容打包成一个单独的可执行文件
  • -D or --onedir:将所有内容打包成一个目录
  • -w or --windowed or --noconsole:对于 Windows 和 Mac OS X,不带控制台窗口打包
添加数据文件
  • --add-data:添加额外的数据文件到打包的应用程序中;在 Windows 上使用 ;分隔,在 Unix 上使用 : 分隔,例如:pyinstaller --add-data "data/file.txt;data"
  • --add-binary:添加二进制文件到打包的应用程序中,例:pyinstaller --add-binary "/path/to/binary;bin"
  • --icon:设置可执行文件的图标
  • --version:添加版本信息文件
  • --hidden-import:指定在脚本中没有直接导入的模块
  • --exclude-module:排除指定的模块
其他参数
  • -n or --name:指定生成的可执行文件的名称
  • --clean:在构建之前清理 PyInstaller 缓存和临时文件
  • --key:使用指定的密钥对 Python 字节码进行加密

标签:pyinstaller,onnxruntime,py,--,报错,CUDA,打包
From: https://blog.csdn.net/m0_55575697/article/details/140169220

相关文章

  • kaggle运行报错RuntimeError: cutlassF: no kernel found to launch!
    项目场景:项目场景:使用原始Llama3推理,到这里都是能行的!pipinstall-qmodelscopeimporttorchfrommodelscopeimportsnapshot_download,AutoModel,AutoTokenizerimportosmodel_dir=snapshot_download('LLM-Research/Meta-Llama-3-8B-Instruct',cache_dir='/r......
  • 解决nacos报错 Caused by: io.grpc.netty.shaded.io.netty.channel.unix.Errors$Nati
    报错信息:org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918)atorg.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583)atorg......
  • 海康SDK报错Structure.getFieldOrder()
    就是你调用的这个结构体以及其引用的其他结构体,可能没有getFieldOrder()的方法,你只要按照顺序把他填上去就好了。比如publicstaticclassNET_DVR_TIMEextendsStructure{//校时结构参数publicintdwYear;//年publicintdwMonth;//月......
  • opnEuler下使用xtrabackup报错libgcrypt.so.11
    环境:OS:openEuler2203sp4xtrabackup:2.4.7 [root@19copt]#/opt/xtrabackup-2.4.7/bin/innobackupex--defaults-file=/opt/mysql57/conf/my.cnf--user=root--password=mysql--socket=/tmp/mysql.sock--stream=tar/tmp|gzip>/tmp/mydb.tar.gz/opt/xtrabackup-2.......
  • git报错error: failed to push some refs to xxx
    最近在学习git的使用,发现一个本地库同步远程库的问题,先看报错截图:事情经过是,我在自己电脑里创建了一个本地库,在gitee上也创建了一个仓库,我想将我的本地库同步到gitee上的远程,但是却出现了上面的报错。下面是一些前置操作。[email protected]:id7729/git_t......
  • 7.1.SQL注入-基于函数报错的方式来利用updatexml()
    基于函数报错的方式来进行利用-字符型(本页updatexml())前提条件是后台数据库没有屏蔽数据库语法报错信息updatexml()方法详解注释:第一个参数,意思就是xml文档的名称第二个参数,意思就是定位到xml文档中指定的某一个位置的更新第三个参数,意思就是将文档中指定某一个位置......
  • 7.2.SQL注入-基于函数报错extractvalue(),floor()
    注入基于函数报错extractvalue(),floor()-字符型基于extractvalue()爆出数据库版本payload语句:kobe'andextractvalue(0,concat(0x7e,version()))#爆出数据库版本基于floor()floor()函数就是取整数爆出数据版本信息kobe'and(select2from(selectcount(*),......
  • 微调qwen-VL报错ValueError: Unrecognized configuration class<xxx>to build an AutoTo
    问题在微调qwen-vl的时候,微调完成之后,模型也保存好了,但是用保存的模型进行推理的时候报错,看样子是找不到分词器tokenizer。报错信息ValueError:Unrecognizedconfigurationclass<class‘transformers_modules.configuration_qwen.QWenConfig’>tobuildanAutoTok......
  • CTF常用sql注入(二)报错注入(普通以及双查询)
    0x05报错注入适用于页面无正常回显,但是有报错,那么就可以使用报错注入基础函数floor()向下取整函数返回小于或等于传入参数的最大整数。换句话说,它将数字向下取整到最接近的整数值。示例:floor(3.7)返回3floor(-2.5)返回-3round()四舍五入函数将传入的数字四......
  • 没有使用Redis相关的代码或依赖,但在 `application.yaml` 配置文件中配置了Redis参数,项
    个人名片......