1660Ti+AlmaLinux9搭建YOLO5环境
前言
看着图像识别好像很有意思的样子,于是就自己搭了一个深度学习服务器。虽然说是服务器,实际上也是垃圾佬套装搭一个勉强够看的显卡。
硬件配置
硬件配置对于现在的服务器配置而言可能有些滑稽了。
key | value |
---|---|
CPU | e3-1245v3 |
GPU | GTX 1660Ti 6G(YESTON) |
memory | SAMSUNG ECC 1600MHz 8Gx2 |
motherboard | B85itx(EPOX) |
HardDisk | 500G M2(IDK) |
滑稽归滑稽,能用还是能用。对于垃圾佬来说,这个配置可不低了。
准备工作:CUDA适配性
在这里格外强调一下,有个叫显卡适配性的东西,需要各位做好售前调研。官方也给出了适配性说明:点击此处跳转到该页面。
适配性说明文档中对所有适配的显卡进行了说明,包括很多系列。在这里我们以最大众的GTX
(也就是GeForce
系列)为例:
可以看到每种卡支持什么都已经列出来了。不过单纯看这个
其实也没什么相当值得注意的内容,只是单纯的告诉你哪些支持分布式共享内存,哪些支持更宽的位数,哪些支持Tensor
核心等等内容。我们真正意义上关心的只有我们当前要买的卡,或者说已经有的卡是否在名单中。
显然,1660Ti
不在里面,只有一个1650Ti
。这就相当尴尬了。
你可能会有些迷惑,因为你明明在CSDN
上看到有些网站写了这些玩意的,比如深度学习小记录——显卡1660Ti适配的Tensorflow和CUDA、CUDNN安装教程,又比如Windows+GTX1660TI下安装CUDA 10.1&cudnn 7.6.5 + tensorflow/pytorch
官方并没有一个详细的说明,实际测试下来似乎也确实能用。所以,目前我的猜测是,对于部分主流设备,1660Ti
展现出较强的适配性。但是部分非主流设备,1660Ti
多少会有点问题。可以总结为:官方也不确定是不是完美支持。
那就相当随机了。如果希望稳一手,还是买截图中存在的设备;如果希望极致性价比,买什么都行,但买上述列出设备之外的还是像开盲盒一样刺激。
实际上手:CUDA安装
这些教程都已经很多了,没什么别的可讲的,有必要的话各位参照一下其他的教程就行了。
所以我在这里仅作总结:
如果是Windows
,直接下载好所有的安装包,然后逐个双击开始安装,然后等待到结束后开始下一个安装包的安装。整体流程简单方便,没有什么难点。
如果是Linux
,尤其是像我一样使用最新版的AlmaLinux
的话,可能会遇到一点奇奇怪怪的问题。
在Linux
中安装过程与Windows
不同。Windows
是GeForce
驱动与CUDA
驱动分开安装的,Linux
的GeForce
驱动在CUDA
驱动里面集成了,作为一个选项给用户提供安装选择。所以,如果你优先安装了GeForce
驱动,那就不要再勾选CUDA
中的GeForce
驱动了。如果你没有安装GeForce
驱动,那就别忘了勾选CUDA
中的GeForce
驱动了。
由于我已经安装过了,所以这里利用人家Ubuntu
的截图:
使用红色方框框住的部分就是GeForce
驱动。如果你单独安装了,那就别勾选;如果直接安装的CUDA
,那就勾选。
于是等待就好了。
多嘴一句:全球主流才是稳一手
我安装的最新版。其实没有什么硬件限制,直接上最新的,没关系。有限制的是后来的框架底层,只要使用的是PyTorch
、Tensorflow
这两个主流深度学习框架就行。
全球主流的话,那就一定会有一个人为这个主流做出一点贡献。这个人可能是开源社区大佬,也有可能是官方在编人员。
如果你安装的是PaddlePaddle
这类并没有在全球成为主流的深度学习框架的话,即使官方文档再怎么充分、再怎么细致,有些兼容问题还是没办法。比如PaddlePaddle
,如果直接上最新的CUDA
一定会出现问题,甚至gcc
与g++
版本较高也一定会出现问题。最坏的情况是设备全部重买,最好的情况是降版本重装。总之跟垃圾佬折腾硬件一样需要一步一个脚印地折腾。
cudnn才是真正的玄学
如果说主流框架没有什么CUDA
版本的限制,那么cudnn
这类深度底层的东西就该有限制了吧?
确实,有限制。但是怎么限制的,我还没弄明白。总之,如果你使用的显卡在适配性说明中并没有出现,但是CUDA
顺利安装了,cudnn
就会展现出它的作用。
在执行测试的时候,使用命令:
1 | python3 # 尝试测试 |
这一切都看起来没问题。
但是在执行train.py
的时候,问题来了。
1 | RuntimeError: CUDA error: no kernel image is available for execution on the device |
你可能认为是环境问题,实际上就是环境不兼容罢了。但比较奇怪的是,没有环境兼容。我也做过很多次测试,但是就是不行。
只能说,全是玄学。
删除cudnn
后一切正常,显卡也确实比苹果电脑M1
的核显要快上
凑合着用吧。
2024年2月26日更新
由于内核挂掉,整个重装了一遍。于是发现cudnn
并不是没有,而是需要配置环境变量:
1 | # cuda |
这次就再也没有问题了。
最后,如同日志所述,1660Ti
的适配性指数为