【磕岩日记】跑模型方法论

本文介绍Python环境搭建与模型运行的相关问题及解决方法。包括创建虚拟环境、安装包、安装对应版本的pytorch,检查各版本兼容性,针对no module等问题给出解决方案,还提到上github查issues,以及用nvidia - smi关注显存占用情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1-创建虚拟环境,指定python版本

当前常用版本3.7或3.8,或readme中给出的版本。当然即便如此也避免不了踩坑,可能需要export环境变量防止出现搜索不到包的问题。个人感觉3.7比较稳定,readme写3.6的,3.7改改也能跑。

 2-pip install -r requirements.txt

装各种包。最好打开txt看一下,如果有些包指定了版本号,且是“>=x.xx.xxx”,需要通过搜索查找(或者遭遇报错)把合适的版本确定下来。如果requirements.txt或者.yml里指定了pytorch/torch版本,最好把这几行删掉,然后在第3步自己装合适的pytorch.

ffmpeg: error while loading shared libraries: libopenh264.so.5:-优快云博客

2-装版本对应的pytorch

低版本python会有兼容不了高版本pytorch的问题,低版本pytorch会有兼容不了高版本CUDA的问题。而高版本显卡驱动似乎可以向下兼容,实际上不行:例如RTX3090只支持11.0及以上的CUDA(10.2没试过,10.0不行)

RuntimeError: cublas runtime error : the GPU program failed to execute at /tmp/pip-req-build-jh50bw2-优快云博客

高性能显卡无法支持低版本CUDA的原因可能是算力太高:编译参数指定的计算能力如果和GPU计算能力不符,就会报错。参见

RuntimeError: cuda runtime error (8) : invalid device function at /pytorch/torch/lib/THC/generic/THC-优快云博客

3090应该是sm_80,低版本CUDA不支持。

有时pytorch自带的某些库需要与pytorch“脱钩”后重装,如ffmpeg。conda list命令可以查看当前环境中的各种包,最右一列“channel”表示它从哪里来。

最后检查各版本兼容性,例如:

python3.7……pytorch1.8.0……cudatoolkit11.1;本机nvidia-smi显示显卡驱动版本及最高支持的CUDA版本:12.2,可以兼容11.1

4-查漏补缺

关于no module、 module not found,有以下几种解决方案:

4.1 缺啥装啥,pip install,注意名称有可能不同(类似cv2对应opencv),善用搜索引擎

4.2 检查环境变量,是不是没有搜索包所在的目录,把目录export进去;undefined symbol问题也可以这样解决(通常是因为“擅自”改变了python等的版本,导致有的库找不到)

ImportError: /lib/aarch64-linux-gnu/libwayland-server.so.0: undefined symbol: ffi_type_uint32..._undefined symbol: ffi_type_uint32, version libffi_-优快云博客

4.3 这个是真的玄学:在anaconda/envs/环境名/lib/python3.x/site-packages中,同样一个模块(设为module1)会对应两个文件夹,一个叫module1, 一个叫module1-xxxxxx-dist-info,如果存在dist-info文件,python会认为包存在,但我遇到了dist-info存在,而module1本身不存在的情况。把dist-info手动删除后,再次pip install,问题解决。

5-上github查issues

6-在跑模型的时候用nvidia-smi关注显存占用情况

我是nvidia-smi反复刷,其实也有一些更方便的工具,这里就不多介绍了。如果显存占用特别大,有概率是CUDA啥的配错了,会影响推理速度甚至推理效果,要好好检查。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值