网站推广经验,阳西哪里有做网站,企业seo排名外包,北京网站建设公司空间续费北京2025年9月更新#xff0c;随着人工智能的发展#xff0c;现在深度学习环境配置越来越简单了#xff0c;常用的pytorch、paddle#xff08;3.x#xff09;等深度学习库安装的时候自带了cuda和cudnn的python包#xff0c;不需要在操作系统层面自己安装#xff0c;配置环境…2025年9月更新随着人工智能的发展现在深度学习环境配置越来越简单了常用的pytorch、paddle3.x等深度学习库安装的时候自带了cuda和cudnn的python包不需要在操作系统层面自己安装配置环境方便快捷。
2024年1月9日更新如果当服务器用不建议安装图形界面稳定性堪忧每次操作系统卡死后本人需要到另一栋楼手动重启如果用作桌面系统倒是无所谓。 后来本人禁用了图形界面。
# 多用户模式
systemctl set-default multi-user.target
# 图形界面
systemctl set-default graphical.target2023年8月16日更新经历环境配置、维护的痛苦才知道docker有多香建议测试开发使用docker完成在深度学习这一块docker可以打包任意版本的cuda和cudnn镜像各种包版本都可以在容器中操作。宿主机上只需要安装nvidia驱动和nvidia-container-toolkit。
Windows子系统WSL2也支持CUDA了可以看我的另一篇文章。
图形界面安装
本人内网环境PC工作站用于跑模型 图形界面安装一般不需要额外安装网卡等驱动gcc版本默认9.4网络可使用图形界面配置。
安装系统
本人使用的UltraSO制作系统盘网上教程很多。
配置root用户登录
配置root用户方便操作但是最高权限也可能导致一些问题按需配置。
最小化安装下创建系统时的用户登录后直接为root设置密码后root可正常登录。图形界面下需要以下几步 为root设置密码 sudo passwd root 修改/etc/gdm3/custom.conf在[daemon]配置项下添加 AllowRoottrue 修改/etc/pam.d/gdm-password注释掉该行 auth required pam_succeed_if.so user ! root quiet_success 重启
参考ubuntu20.04图形界面允许root登录
更换apt源
相比以前最近安装ubuntu默认的源已经不慢了按需替换apt源如果是在内网则必做此步。
cp /etc/apt/sources.list /etc/apt/sources.list.bak
# 按照sources.list内容和目标源更改即可
sed -i s/cn.archive.ubuntu.com\/ubuntu/10.160.8.81:8081\/repository\/ubuntu-aliyun/g /etc/apt/sources.list更新软件
默认情况下ubuntu20.04 Linux内核是5.15.0-76截至2023年8月15日更新后内核为5.15.0-79
apt-get update
apt-get upgrade安装Nvidia-driver、CUDA、CUDNN
本人首次配置踩了各种坑包括系统、驱动等个人踩过太多的坑网上许多博客只能参考每个人的情况都不一样最靠谱的还是官方文档这里贴出官方的安装教程。
Nvidia-driver和CUDA官方安装教程 cuDNN官方安装教程
有两种两种方式特定发行的软件包deb和rpm和独立的软件包runfilerufile方式自带了各种依赖可在各种Linux发行版工作但是容易与本地依赖包产生冲突不太建议使用这种方式。推荐使用deb包方式快捷简单。
注意安装driver和安装驱动最好使用同一种方式即都用deb包或者都是用runfile方式
注意安装完之后请不要随意升级或降级内核版本 nvidia驱动程序需要内核头文件和开发包并且一旦内核版本改变驱动程序也需要重新编译安装。Runfile安装方式不对内核相关包做任何检验但是RPM和DEB包则会检验如果没有内核相关包安装程序将自动安装这些包的最新版本可能不匹配当前内核。因此最好在安装驱动程序和CUDA之前安装内核相关包的正确版本否则可能出现各种各样的问题。 安装前准备
lspci | grep -i nvidia查看显卡设备查看是否支持cudagcc、linux内核版本等ubuntu20.04不存在此问题如果之前安装过请卸载干净并重启如何卸载请看下文。
deb包安装方式
下载自己需要的 CUDAdeb包local或者network内网的话下载local然后参考下载页面的安装指示完成安装更详细的步骤可以参考官网的安装指示。 本人下载的是cuda11.8-ubuntu20.04-local复制粘贴执行命令后cuda和driver都成功安装driver版本是520。开发过程中更关注的是cuda版本driver只要能驱动显卡即可本人对驱动版本没有要求。
如果需要安装指定版本驱动
# sudo apt-get install cuda-drivers-branch
# 安装418版本的驱动
sudo apt-get install cuda-drivers-418需要确认本地apt添加了这个软件包这种安装指定驱动的方式本人没有尝试过网上也几乎没有见到过不确定能否成功更详细的指示可以参考官网。 安装完记得重启然后就可以开始添加环境变量了。
runfile安装方式
首先贴上官网链接本人安装过程中碰到的很多问题多源于自己没有认真看官网文档或者说懒得看英文碰到问题没法解决了才去认真读官方文档。官网runfile安装方式前几段话就说明了RunFile安装是通过基于交互式NCURSES的接口安装NVIDIA驱动程序和CUDA工具包安装步骤指引、禁用Nouveau驱动、安装后的附加操作、如何卸载以及CUDA跨平台等内容直接看官网文档可以少走很多弯路。
安装前准备
准备工作同上默认的cuda runfile安装包带了驱动程序能用但不是最新的。 英伟达cuda下载 英伟达显卡驱动下载最新版驱动。
禁用Nouveau驱动
创建/etc/modprobe.d/blacklist-nouveau.conf并再末尾加入以下内容
blacklist nouveau
options nouveau modeset0执行命令
sudo update-initramfs -u这样就禁用ubuntu默认的开源驱动程序了。
禁用开源Nouvea驱动后还需要一些设置并重启才能生效本人在没看文档之前是直接重启的也没碰到问题。 但是按照官网的指示禁用开源驱动Nouvea后修改linux内核启动参数设置runlevel为3多用户字符界面不加载任何图形驱动重启系统修改/etc/default/grub找到下面这行末尾添加nomodeset不加载任何图像驱动和3runlevel为3。 GRUB_CMDLINE_LINUX_DEFAULT“quiet nomodeset 3” 执行
update-grub
reboot在安装驱动的过程中如果碰到图形界面无法正常显示开机一直黑屏的情况下可以进入ubuntu的安全恢复模式重启ubuntu电脑品牌logo出现后随即长按shirft菜单选择第二个选项 Advanced options for Ubuntu然后进入下一个界面选recovery mode修改这个文件如上所示然后update-grub并重启即可正常开机进入字符界面重新安装驱动。
安装驱动
sudo sh NVIDIA-Linux-x86_64-xxxxx.run安装驱动时会有警告和几个选项
如果之前安装过会确认是否继续安装确认是否向 kernel 注册 dkms 模块是防止内核更新导致驱动的重新安装是否安装32位兼容库一般选否是否安装opengl文件一般选否xconfig本人选的是
安装cuda
执行
sudo sh cuda_version_linux.run然后弹出几个选项可选择连带driver一起安装也可以单独安装driver如果在这里不选择安装驱动请确保在这之前驱动已经安装。安装完驱动和cuda之后还原/etc/default/grub文件然后重启。
添加环境变量
vim ~/.bashrc
export CUDA_HOME/usr/local/cuda-11.8
export LD_LIBARAY_PATH$CUDA_HOME/lib64${LD_LIBRARY_PATH::${LD_LIBRARY_PATH}}
export PATH$CUDA_HOME/bin${PATH::${PATH}}执行source ~/.bashrc
cudnn安装
官方安装教程 下载需要的CUDNN版本执行
apt-get install zlib1g
apt-get install ./下载的cudnn.deb文件
cp /var/cudnn-local-repo-*/cudnn-local-*-keyring.gpg /usr/share/keyrings/
apt-get update
apt search libcudnn*会看到libcudnnlibcudnn-devlibcudnn-samples三个包分别是运行时库开发库示例和测试代码正常情况下安装libcudnn即可。
sudo apt-get install libcudnn8${cudnn_version}-1${cuda_version}
sudo apt-get install libcudnn8-dev${cudnn_version}-1${cuda_version}
sudo apt-get install libcudnn8-samples${cudnn_version}-1${cuda_version}测试安装是否成功
nvidia-smi查看驱动是否安装成功显示的cuda版本表示最高支持的cuda。nvcc -V查看cuda版本下载适配版本的pytorch验证是否可调用cuda库。安装libcudnn-samples测试cudnn是否成功如何测试请参考文档。
驱动和CUDA卸载
runfile安装方式
sudo /usr/local/cuda-X.Y/bin/cuda-uninstaller
sudo /usr/bin/nvidia-uninstalldeb包安装方式
sudo apt-get --purge remove *cuda* *cublas* *cufft* *cufile* *curand* \*cusolver* *cusparse* *gds-tools* *npp* *nvjpeg* nsight* *nvvm*sudo apt-get --purge remove *nvidia* libxnvctrl*sudo apt-get autoremove其他
非必要本人在此一起记录下
SSH服务远程需要
安装sshapt-get install ssh配置root允许登录vim /etc/ssh/sshd_config
# PermitRootLogin yes
# 修改后重启sshd服务设置开机自启systemctl enable ssh启动ssh服务systemctl start sshcuda容器运行环境docker需要
官方安装教程 nvidia-container-toolkit用于在容器中使用NVIDIA GPU包括一个容器运行时库和实用程序。 容器中有应用程序和cuda通过docker和nvidia-container-toolkit与宿主机的nvidia driver联系然后使用显卡。 这里以docker运行环境为例安装nvidia-container-toolkit。
安装docker安装软件源和CPG Key
distribution$(. /etc/os-release;echo $ID$VERSION_ID) \ curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \ curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \sed s#deb https://#deb [signed-by/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g | \sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list更新并安装
apt-get update
apt-get install -y nvidia-container-toolkit如果是内网环境下需要下载nvidia-container-toolkit的所有依赖拷贝到内网并apt-get install *.deb下面是下载某包及其依赖的命令。
apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances --no-pre-depends nvidia-container-toolkit | grep -v i386 | grep ^\w)设置docker nvidia运行时环境
命令行配置
sudo nvidia-ctk runtime configure --runtimedocker
sudo systemctl restart docker配置文件 vim /etc/docker/daemon.json添加如下内容
runtimes: {nvidia: {path: /usr/bin/nvidia-container-runtime,runtimeArgs: []}}重新加载配置重启docker
systemctl daemon-reload
systemctl restart docker测试
# --gpus all 所有显卡可用
# --gpus device1 第二块显卡可用
# --gpus device0,1 第一块和第二块显卡可用
docker run --rm --runtimenvidia --gpus all nvidia/cuda:11.8.0-runtime-ubuntu20.04 nvidia-smi出现nvidia-smi命令的执行结果表示安装成功
nvidia/cuda docker仓库 nvidia/cuda仓库地址 里面有各版本的已经打好的cuda和cudnn镜像每个cuda版本对应有三种镜像
base cuda运行时环境runtime 从base打包而来包括cuda数学库、NCCL和cudnn。一般我们拉runtime镜像即可。devel 从runtime打包而来包括一些头文件和cuda开发工具需要依赖做额外的开发可以拉取这个镜像。
自己打包nvidia/cuda镜像 克隆官方的git仓库 到docker hub创建账户并新建一个存储库
# 登录docker
docker login -u windcfcd cuda
# 打包windcf/cuda:11.8.0-ubuntu20.04镜像x86_64
# --push推送到docker hub
# --load保存为本地镜像
./build.sh -d --image-name windcf/cuda --cuda-version 11.8.0 --os ubuntu --os-version 20.04 --arch x86_64 --pushdocker hub结果
编译安装指定Python版本
ubuntu20.04默认安装的python是3.8.10如需安装其他版本可自行下载源码编译。 如果需要安装多版本Python可以看这里
以安装python3.10.12为例
# 安装依赖
apt update
apt install wget build-essential libreadline-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev libffi-dev zlib1g-dev# python源码
wget https://www.python.org/ftp/python/3.10.12/Python-3.10.12.tgz
# 解压
tar -xzvf Python3.10.12.tgz
# 编译
cd Python-3.10.12/
./configure --prefix/usr/local/python310 --enable-optimizations
make -j$(nproc)
# 安装
make altinstall安装完之后python、pip等可执行程序在/usr/local/python310/bin目录下本人没有覆盖默认的python使用时注意路径即可。 如果需要设置为默认的python执行
sudo update-alternatives --install /usr/bin/python3 python3 /usr/local/python310/bin/python3.10 110sudo update-alternatives --config python3卸载新安装的python
# 卸载
# 如果没有删除源代码目录
sudo make uninstall
# 已删除源代码目录
cd /usr/local/python310/bin rm -f sudo rm -f 2to3 2to3-3.11 idle3 idle3.11 pip pip3 pip3.10 pip3.11 pydoc3 pydoc3.11 python3 python3.11 python3.11-config python3-config防火墙配置
ubuntu下iptables配置的规则重启后失效系统自带了ufw命令配置防火墙配置命令简单易懂。 使用ufw配置后都会在iptables上体现重启后有效。
一些心得总结
安装驱动和cuda其实挺简单的内网可能稍微麻烦点但本人还是碰到了各种各样的问题安装完后PC工作站使用一段时间又会卡死工作站又放在机房每次重启很麻烦。找不到卡死的原因推测是驱动的问题又卸载重装来来回回遇到很多问题在这里统一记录下。
关闭系统休眠关闭自动更新包冲突错误解决 在安装各种包的过程中多次遇到版本冲突apt install --fix-broken无法解决所有的apt install都不执行解决办法是使用apt下载需要的包使用dpkg -i --force-overwrite deb_name强制覆盖安装。内网安装外网包 有些包不在ubuntu软件源中必须要联网下载本人在外网电脑创建一个和内网软件环境一样的虚拟机需要连接外网下载的包现在虚拟机中下载后拷贝到内网主要有两种包。 deb包使用上面提到的下载包及其依赖的命令在外网虚拟机下载后拷贝到内网apt-get install *.debpython包有些包也不再pypi源比如pytorch某些版本某些包必须从源码编译等外网使用pip download拷贝到内网pip install *.whl也可以将文件上传到内网Nexus Pypi源。 官方文档
最小化安装
ubuntu server识别不到网卡
安装系统后使用ip a命令发现只有lo本地回环识别不到网卡网上搜了挺久并不能解决问题。 猜测应该是缺了网卡驱动毕竟网卡较新而操作系统较老且是最小化安装可能并没有带驱动需要自己下载安装。 lspci查看自己的网卡结合主板等信息去外网下载对应驱动拷贝到内网中。本人下载的是RTL8125安装驱动需要gcc、make等依赖最小化安装这些都是没有的需要手动离线安装。
ubuntu server离线安装gcc等依赖
手动下载了ubuntu server离线gcc、make等及其依赖链接如下 链接https://pan.baidu.com/s/1sK73grxfqokv0hADUS0DWg?pwddqz8 提取码dqz8 解压后直接dpkg -i *.deb即可默认ubuntu上好像没unzip命令。
记录一下直接下载某包及其依赖的命令
apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances --no-pre-depends libasan5:amd64 | grep -v i386 | grep ^\w)ubuntu server配置网络
如果安装的是桌面版可以选择图形化界面配置。 20.04最小化版本配置网络已不再/etc/network/interface中而在/etc/netplan/xxxx.yaml中以下是一个配置示例ipv6相关配置改4为6即可。
# This is the network config written by subiquity
network:ethernets:ens32:dhcp4: noaddresses: [192.168.8.6/24]optional: truegateway4: 192.168.8.2nameservers:addresses: [192.168.8.2]version: 2renderer: networkd参考
Ubuntu20.04下CUDA、cuDNN的详细安装与配置过程