一、安装步骤
首先看看不错的博客,看完有初步的心得,参考博客如下:
① Ubuntu基本环境配置,这个算是服务器环境搭建全指导;
② Ubuntu22.04配置深度学习环境,这个是系统版本一致的博客。
大致步骤为
① 查看GPU型号,确认是否安装GPU。
lspci | grep -i nvidia
sudo dpkg --list | grep nvidia-* # 查看NVIDIA驱动版本
② 输入命令 nvidia-smi
,确认装系统时是否顺便装了英伟达驱动,如果装了这步可以不用看了。如果没装,则通过下面命令安装。(具体细节可看看问题1)
sudo ubuntu-drivers autoinstall
上面的命令会自动安装能兼容的最高驱动版本,所以不用担心兼容问题。一些博主建议自行上官网下载驱动,这样也可以,但是驱动版本没上面命令那么新,也比较费事,见仁见智吧。
③ 驱动装好,cuda、cudnn包都通过conda
来安装。一些博主建议官网下载cudatoolkit
包来安装cuda、cudnn
,我没采纳,因为conda
里面可以一起安装,区别的话见这篇博客。而且以后conda
环境不要了,直接连环境一起删除就是了,省心省力。
还有一点重要的是,GPU
的算力要与pytorch
、cuda
版本兼容,具体看下面的问题7,简单概括就是尽量装新的吧。
这种方式具体有什么隐患,还没发现,以后遇见了再补充吧。
④ conda
环境创建好之后,进入当前环境,安装pytorch
等包,这个具体见问题3、问题5。pytorch
包装好后,进入环境,输入以下命令,确认安装成功:
# 验证 cuda 是否安装成功
torch.cuda.is_available() # 返回 True 则可用, 返回 False 则不可用
torch.zeros(1).cuda() # 这步很重要,验证 cuda 是否可用
# 下面的命令可输可不输
# 返回gpu数量
torch.cuda.device_count() # 返回值就是 GPU 数目
# 返回gpu名字,设备索引默认从0开始
torch.cuda.get_device_name(index) # index 是索引, 默认从 0 开始
二、疑问
问题1:服务器重启之后,英伟达驱动消失了
NVIDIA-SMI has failed because it couldn‘t communicate with the NVIDIA driver.
先用这博客里的方法1,发现不管用,出现了方法1一样的问题。由于内核太敏感,所以上面博客的方法2没用。而是先卸载驱动(博客里的切换集成显卡我没照做,因为看了下服务器设置信息,显示已经是集成显卡,之前的英伟达显卡信息已经没看见了),然后再用下面命令安装,就好了。
sudo ubuntu-drivers autoinstall
注意:用这种方式安装驱动后,不用特意去禁用nouveau
,官方的run
文件也不用再去下载。
另外,有网友表示上面方法会吃网卡驱动,他建议使用sudo apt install nvidia-xxx
方式安装,也有网友成功解决网卡驱动的问题,见博客。
如果没有英伟达驱动,服务器无法使用独显生成桌面,系统会调用cpu上的集显。但是装完英伟达驱动后,系统也不会切换,要重启才能切换。
装好后,输入nvidia-smi
命令,有输出就是OK的。输出结果右上角的CUDA version
是当前驱动程序版本对应的最高cuda
版本,实际装的版本可以比它低,但不能比它高。
问题2:添加新用户,并赋以root权限
首先博客看详细版,赋权限建议用方法2。密码要有英文大小写+数字才能通过。不要台式机的数字小键盘,用字母上面一排数字按键输入密码。
问题3:conda切换环境失败的
安装miniconda
见最上面第二个博客,这里要说的是,新建好conda的环境后,要切换到新环境里,有建议用conda activate 环境名
,但是发现不行,具体见参考博客,该博客里建议:
# conda安装好之后,会存在 conda命令没有加入环境路径的情况
# 此时需要将 conda 所在的 bin目录加入环境变量
# cd到conda所在的 bin目录,然后
# conda bin目录/conda init bash
# 然后再 source ~/.bashrc 就可以了,不用专门去添加环境变量
激活环境: source activate xxx
退出环境: source deactivate
上面这个命令不行可以用 conda deactivate
conda环境新建好了后,上pytorch官网下载 pytorch、cuda、cudnn。
可以看一下pip和conda的区别,今后安装python库,一定要先用conda命令下载,如果conda里面没有,再用pip,以免环境混乱。
问题4:新用户用ssh远程登录服务器设置
添加新用户后,将其加入ssh配置文件中,使其可以用ssh远程登录。
sudo vim /etc/ssh/sshd_config # 在最后一行添加新用户名
sudo /etc/init.d/ssh restart # 配置修改完,然后重启
之后在本地cmd里面输入: ssh 用户名@服务器IP 。看能否登录,如果不能,则需要在服务器防火墙里添加新用户电脑的IP网段。
sudo ufw status # 查看防火墙状态及可用端口名称
sudo ufw allow from 192.168.0.0/24 to any port 22 # 允许指定的IP段访问特定端口
注意:
192.168.0.0/24 是新用户电脑的IP,但是格式为 : 新用户IP前三组数字.0/24
22端口则是通过第一条命令,看哪个端口可用。
详细命令可参考博客。
问题5:服务器anaconda共享
先介绍个博客,看完就明白的七七八八了。
再说说我与博客里不一样的地方,首先我安装目录没和博客里一致,因为公司服务器不同组有对应区域,不能乱装,但是安装原则还是遵循了。另外,我安装anaconda的用户是自己新建的,它有root权限,本质上也算是root用户。
这个做完,还需要再做一件事,就是把自动登录base环境的设置关掉。
vim ~/.condarc # 打开当前用户的conda配置文件
# 往配置文件中写入以下内容
auto_activate_base: false
后面就好了。
问题6:没网怎么创建conda环境
直接复制现有环境
博客1;
博客2;
博客3.
问题7:GPU的算力与CUDA支持的算力不匹配
报错为:
CUDA error: no kernel image is available for execution on the device