热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何搭建一个个人深度学习服务器(工具人养成第一弹)

本文是一份总结帖,主要目的是教未来的师弟们,如何成为帮老师装服务器系统的工具人,不出意外的话,我们组应该是不会有师妹的首先&

本文是一份总结帖,主要目的是教未来的师弟们,如何成为帮老师装服务器系统的工具人,不出意外的话,我们组应该是不会有师妹的

首先,先说明一点,Ubuntu和nvidia驱动,每次版本变化,安装方式都略有不同,我以前的方法仅供参考,具体的操作中一定要看英文提示!!!

在开始安装 之前,请了解一下cuda driver、cuda toolkit、cudnn三者的关系,可以参考我之前的帖子

nvcc -V和nvidia-smi出现的cuda版本不同

具体下载的下载地址这里也有

还需要了解一下vim编辑器怎么用、shell指令怎么用

可以参考Linux vi/vim 和Linux 命令大全

尤其需要掌握vim如何进入输入模式,如何保存退出!

了解之后就可以动手开装了

关于Ubuntu系统的U盘制作和安装部分,我参考的是Ubuntu18.04安装教程

教程基本没啥问题,不过我装Ubuntu20.04的时候,已经有一些步骤不一样的,不过总体的操作都是相同的

值得注意的是,我师兄说,硬盘小的时候不需要分盘,可以跳过分盘步骤让系统自动分盘。

系统安装好后,需要打开系统的22号口,方便以后ssh连接

具体操作使在命令行中依次输入

sudo apt-get install openssh-server
sudo apt-get install ufw
sudo ufw enable
sudo ufw allow 22

如果有gcc、ifconfig、pip3之类的指令没有安装的话,在用的时候,根据提示安装即可。

下面我们开始安装nvidia driver,下载地址 NVIDIA Driver Downloads

对于比较老的主板,比如4楼的x99主板,需要在bios中关闭secure boot 可参考华硕主板怎么关闭Secure Boot


驱动的安装过程可以参考环境搭建01——Ubuntu如何查看显卡信息及安装NVDIA显卡驱动 (重点是这篇文章 3.安装显卡驱动和后面的内容)和重装显卡驱动,解决NVIDIA-SMI has failed问题

一定要注意英文提示,不能像win系统下一样,盲目的下一步

还有一种方法是使用ubuntu自己检索到的驱动

点击附加驱动

这里就能看到没有适合你显卡的驱动

如果没有,还是按照上一个方法手动装吧

然后我们要安装cuda toolkit,cuda toolkit可以和nvidia driver版本不同,建议使用目前pytorch支持的、最新的cuda

下载地址:CUDA Toolkit Archive

可以参考Ubuntu16.04 ppa显卡驱动安装,cuda9.1,cudnn7.1安装(我们不需要使用ppa)

具体的重点是 (4.安装CUDA9.1)

也可以看看Ubuntu安装多版本cuda,并在多版本之间切换

注意,装cuda11.1的时候,我发现有些步骤已经不太相同了,比如安装cuda11.1的时候,对于选装的部分没有y/n选择,

取而代之的是通过上下和回车确定要不要装,这里Driver一定不要选,因为之前已经装过driver了,sample也可以不选

有点像win下装软件时候的多选框,所以具体还是要看英文提示

再强调一点

如果你装完,发现nvcc依然不能用,并且提示你

sudo apt-get install nvidia-cuda-toolkit

来使用nvcc的时候,千万不要用这个指令,系统认为你没有安装cuda,实际上你已经装了

正确操作: 进入:

cd /usr/local/cuda

查看cuda的bin目录下面有没有nvcc,有的话就将它加入路径

通过

vim ~/.bashrc

进去后,在最后添加

export PATH=/usr/local/cuda-10.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64:$LD_LIBRARY_PATH

然后

source ~/.bashrc

如果你小子手快。。。已经装了。。。用

sudo apt-get --purge remove nvidia-cuda-toolkit

给他删了

cuda之后,自然是cuDNN,注意下载cuDNN,需要注册一个账号才能下载

下载地址:cudnn-download

下载的cuDNN必须和cuda toolkit匹配

下载cuDNN后先解压

tar -xzvf cudnn-9.1-linux-x64-v7.tgz

注意-xzvf后的文件名需要换成你下载的cudnn

然后执行以下操作

sudo cp cuda/include/cudnn.h /usr/local/cuda/include/
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/
sudo chmod a+r /usr/local/cuda/include/cudnn.h
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*

按理说,在这之后,就可以通过

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

查看cudnn的版本,但是。。。我就从来都没有成功过,不论是1080ti的那台、还是2080ti+3090的那台、或者是3090*4的那台

都没能正常的查看到cudnn的版本,不过看不到版本并不影响我们进行后续的gpu加速

注:该问题已解决

原因是新版本cudnn的版本信息包含在cudnn_version.h而不是cudnn.h

所以

除了复制cudnn.h

sudo cp cuda/include/cudnn.h /usr/local/cuda/include/

应该增加

sudo cp cuda/include/cudnn_version.h /usr/local/cuda/include/

对应的

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

改为

cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

有些代码里在这之后还有deb包的安装过程

比如

sudo dpkg -i libcudnn8_8.0.5.39-1+cuda11.0_amd64.deb

sudo dpkg -i libcudnn8-dev_8.0.5.39-1+cuda11.0_amd64.deb 

sudo dpkg -i libcudnn8-samples_8.0.5.39-1+cuda11.0_amd64.deb

这是cudnn安装的另一种方法,没必要两种方法都来一遍

有时候会报出类似

/sbin/ldconfig.real: /usr/local/cuda-11.4/targets/x86_64-linux/lib/libcudnn.so.8 is not a symbolic link

这样的错误,我们进入相应目录,通过

sudo ldconfig -v

检查一下连接,发现

 虽然他也有了只指向,但是貌似不太正常

为此,我们需要手动建立连接

sudo ln -sf /usr/local/cuda-11.4/targets/x86_64-linux/lib/libcudnn.so.8.2.2 /usr/local/cuda-11.4/targets/x86_64-linux/lib/libcudnn.so.8
sudo ln -sf /usr/local/cuda-11.4/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8.2.2 /usr/local/cuda-11.4/targets/x86_64-linux/lib/libcudnn_cnn_train.so.8
sudo ln -sf /usr/local/cuda-11.4/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8.2.2 /usr/local/cuda-11.4/targets/x86_64-linux/lib/libcudnn_cnn_infer.so.8
sudo ln -sf /usr/local/cuda-11.4/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8.2.2 /usr/local/cuda-11.4/targets/x86_64-linux/lib/libcudnn_ops_infer.so.8
sudo ln -sf /usr/local/cuda-11.4/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8.2.2 /usr/local/cuda-11.4/targets/x86_64-linux/lib/libcudnn_adv_infer.so.8
sudo ln -sf /usr/local/cuda-11.4/targets/x86_64-linux/lib/libcudnn_adv_train.so.8.2.2 /usr/local/cuda-11.4/targets/x86_64-linux/lib/libcudnn_adv_train.so.8
sudo ln -sf /usr/local/cuda-11.4/targets/x86_64-linux/lib/libcudnn_ops_train.so.8.2.2 /usr/local/cuda-11.4/targets/x86_64-linux/lib/libcudnn_ops_train.so.8

再检查一下连接

一切都正常了

注意你报错的位置和版本,不要盲目的复制

其实这是cuda toolkit安装时候,生成的包,不是我们复制到lib64的包,也许,即使我们不手动复制cudnn,cuda依然可以运行(仅仅是猜测)

最后是安装torch

去pytorch官网

根据需要选择需要的torch,用他提供的指令即可(pip要改成pip3)

虽然我们cuda是11.1的,但是装这个11.0的torch也能用

如果需要安装anaconda请参考

root用户安装的anaconda如何给普通用户使用

具体的操作大概就这些,有问题以后再补充吧。


推荐阅读
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • HDFS2.x新特性
    一、集群间数据拷贝scp实现两个远程主机之间的文件复制scp-rhello.txtroothadoop103:useratguiguhello.txt推pushscp-rr ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • Java学习笔记之使用反射+泛型构建通用DAO
    本文介绍了使用反射和泛型构建通用DAO的方法,通过减少代码冗余度来提高开发效率。通过示例说明了如何使用反射和泛型来实现对不同表的相同操作,从而避免重复编写相似的代码。该方法可以在Java学习中起到较大的帮助作用。 ... [详细]
  • 本文介绍了在Ubuntu下制作deb安装包及离线安装包的方法,通过备份/var/cache/apt/archives文件夹中的安装包,并建立包列表及依赖信息文件,添加本地源,更新源列表,可以在没有网络的情况下更新系统。同时提供了命令示例和资源下载链接。 ... [详细]
  • 本文分析了Wince程序内存和存储内存的分布及作用。Wince内存包括系统内存、对象存储和程序内存,其中系统内存占用了一部分SDRAM,而剩下的30M为程序内存和存储内存。对象存储是嵌入式wince操作系统中的一个新概念,常用于消费电子设备中。此外,文章还介绍了主电源和后备电池在操作系统中的作用。 ... [详细]
  • 本文介绍了在Ubuntu系统中清理残余配置文件和无用内容的方法,包括清理残余配置文件、清理下载缓存包、清理不再需要的包、清理无用的语言文件和清理无用的翻译内容。通过这些清理操作可以节省硬盘空间,提高系统的运行效率。 ... [详细]
  • 现在比较流行使用静态网站生成器来搭建网站,博客产品着陆页微信转发页面等。但每次都需要对服务器进行配置,也是一个重复但繁琐的工作。使用DockerWeb,只需5分钟就能搭建一个基于D ... [详细]
  • 1、打开etcsysconfiggrub,   #vimetcsysconfiggrub   内容如下: ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • 在单位的一台4cpu的服务器上部署了esxserver,挂载了6个虚拟机,目前运行正常。在安装部署过程中,得到了cnvz.net论坛精华区 ... [详细]
author-avatar
红酒醉红颜2702937481
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有