经验:
众所周知,配环境是非常令人痛苦(快乐)的过程,习惯了就好。
配环境要看别人的文章,因为你不熟悉流程,找文章也要找到适合的,别人的电脑、系统、架构、版本跟你的又不是一模一样,你按着别人的文章来有可能出错。所以,我们看文章配置环境看的是大概流程,而不是复制粘贴别人的。
配环境不是复制粘贴,要理解操作、命令是干什么的,你需要什么版本......这并不容易的,而且,安装的依赖、库 大多是从外网下的,很慢,容易失败,所以,需要懂得科学上网。
配环境前,需要明确:
1.系统版本
你用的是什么系统,什么版本:windows10,windows11 , ubuntu18,ubuntu20 , centos, mac
2.芯片架构:
x86架构 , arm架构 , RISC-V架构
3.安装依赖的顺序
比如安装yolo环境python库的顺序:numpy->torch->yolo
4.每个依赖的最低版本要求
先确定编程语言的最低版本,比如yolo环境中:>=python3.6 ,在确定其他库的最低版本,比如 opencv大于等于4.5版本
需要安装什么环境,官方文档应该列有硬件要求和最低版本要求
5.确认系统是否自带有需要的库和依赖,是否需要更新依赖的版本
比如英伟达的jetson nano自带有opencv,你总不能不清不楚的直接安装高版本的opencv进去吧,旧的还没有删除,这样直接出大问题。
......
只要是有关英伟达显卡的环境,一定不能直接复制安装,先确认电脑显卡驱动是否最新、cuda和cudnn的版本是否最新,安装对应的适配版本,版本可以向下兼容
哪怕是python的第三方库,上网找该库是否支持GPU版本,指定该版本。比如pip3 install onnxruntime-gpu
实战
来,咱们安装一下yolov8环境和TensorRT环境:
确定电脑资源,我的是:英伟达P4000显卡,windows10 系统,cuda12.2
查看cuda版本:终端输入nvidia-smi 命令查看显卡驱动版本和cuda版本,检查显卡驱动是否要更新。然后,用命令 nvcc --version 查看cuda版本。如果两个命令显示的cuda版本不一样,说明你的cuda版本旧了,需要安装最新的版本。
(10 封私信 / 82 条消息) 英伟达驱动版本 、CUDA 和 cuDnn 之间版本的关系是怎样的? - 知乎 (zhihu.com)
看下面文章,根据自己的情况安装对应的cuda和cudnn版本
如果是更新安装,需要把旧版本的环境变量给删了。
1.安装yolov8环境
如果下载的速度慢,在windows中为终端设置代理:终端代理
直接下载yolov8源码:ultralytics
打开源码文件pyproject.toml看看,里面有需要的库的最低版本要求。
进入源码文件pyproject.toml所在的目录,在python的虚拟环境输入命令安装:
pip3 install -e .
pip3 install ultralytics
pip3 install yolo
pip3 list
此时你会看到有torch和torchviosn,不过yolov8默认安装的是CPU版本的,我们需要安装GPU版本的。
安装GPU版本的torch和torchvision:
官网复制命令安装:PyTorch
注意:选择的torch版本要跟你CUDA版本最接近的版本且低于该版本,假如你的cuda版本是11.9,你不要安装高于cuda11.9的torch,你可以安装cuda11.0的torch,一般来讲,版本是向下兼容的。
安装torch和torchvision的版本必须对应: G版本对应。 不过官方的安装命令已经帮你自动适配torch torchvision torchaudio 三个的版本,你只需要指定cuda版本就行
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
pip list 查看torch版本是否有 -cu11
导入torch验证是否安装成功: print(torch.version.cuda)
2.安装TensorRT环境
pip3 install onnx
pip3 install onnx-simplifier
要注意onnxruntime-gpu, cuda, cudnn三者的版本要对应: NVIDIA - CUDA | onnxruntime
pip3 install onnxruntime-gpu==1.17.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
安装pycuda之前必须要安装 visual studio 软件,因为需要用到它的构建工具,尽量指定版本,不指定默认安装最新版本,不用复制我的,自己找对应版本
pip3 install pycuda==2024.1 -i https://pypi.tuna.tsinghua.edu.cn/simple
安装tensorrt可以直接安装库,但不建议
pip install tensorrt-cu12(不建议)
看这篇文章,下载tensorrt源码,找到对应的版本安装
TensorRT(一)Windows+Anaconda配置TensorRT环境 (Python版 )_conda tensorrt-CSDN博客
TensorRT安装部署指南(Windows10) - 知乎 (zhihu.com)
安装完毕后,执行命令把.onnx转成 .engine
trtexec --onnx=model.onnx --saveEngine=model.engine
如果遇到Error[1]: Unsupported SM: 0x601并导出失败,可能是tensorrt的版本不对,比如我的cuda12.2在官方那里对应的版本是tensorrt10,但是导出失败,我换成tensorrt8.6版本后就行了,就是说配环境很神奇,我不干了。
tensorrt官方的python推理代码在目录下面:
你的路径\TensorRT-8.6.1.6\samples\python\detectron2\infer.py
跑官方代码,懂得怎么推理,就可以了。
英伟达jetson nano 配环境
这才是真正的配环境,看这位老兄的经历:
miivii域控制器(Xavier)实现TensorRT加速后的Ultra-Fast-Lane-Detection项目_build tensorrt on xavier-CSDN博客
windows文件移动到ubuntu时注意符号不兼容的问题
jetson nano ,ubuntu18 ,
我也不想在这里写了,后面再续.......
Docker解千愁
如果你嫌配环境太麻烦了,你就去学docker,它能救你一命
什么是Docker?看这一篇干货文章就够了! - 知乎 (zhihu.com)
尚硅谷Docker实战教程(docker教程天花板)_哔哩哔哩_bilibili
最后
作为IT行业的人员,配环境只是基础的,而学框架才是主要目的。我们每学一个框架,总要看官方文档,总要下载官方源码的。官方文档里有框架的原理,也有配环境的基础教程,这两部分要重点关注的,而官方源码里有代码的示例教程,我们不要忘了框架的根在哪。比如我们学yolo框架,我们先找到官方的文档看看,如果全是英文看不懂就借助翻译软件,也可以上网搜别人总结出的文章,然后下载官方源码,按照官方文档配环境,最后跑一下官方示例,深入了解官方给的代码。
未来的路很长,当你配环境遇到问题时,静下心来,自己定位问题、解决问题,少一些负面的情绪,不懂的就多学,多问,多配环境,我相信,在配环境的压力下,你会成长的很快、很快。