Ubuntu 22.04 安装深度学习服务器全纪录
制作启动盘
- 参考链接:https://blog.csdn.net/lyx_ok/article/details/129308753
安装 Ubuntu 22.04
-
将U盘插到服务器上,开机按F11键(具体什么键跟主板型号有关)选择启动项进入临时的 Ubuntu 系统,在图形界面中选择 Install Ubuntu ,所有配置都可以使用默认的,改一下用户名和密码即可。
-
进入系统后设置一下root账户密码:
sudo passwd root
同时为了避免每次sudo都要输入密码,这里配置一下visudo:
sudo visudo
在文件最后加上一句( name 改为自己的用户名):
name ALL=(ALL) NOPASSWD: ALL
重装 Ubuntu 22.04
- 制作 Ubuntu 22.04 启动盘,操作如上。
- 开机按F11键,进入 BIOS 系统。
- 点击
One-shot UEFI Menu
,在Select UEFI Boot Option
中选择自己的 USB 启动盘。 - 进入安装系统,点击
try or Install Ubuntu
。
服务器备份
- 此处使用的备份方法是使用 rsync 与群晖同步,定期备份数据。
- 安装 rsync:
sudo apt-get install rsync # 安装 rsync rsync -V # 检查版本
- 登录群晖服务器,点击套件中心,点击 Active Backup for Business:
- 点击文件服务器——添加服务器——选择rsync服务器——下一步:
- 填写远程服务器信息,并为此添加备份任务.
- 选择备份模式,此处选择增量模式。
- 选择备份目录:此处选择的是:boot,dev,etc,home,opt,root,sys,tmp,usr,var。
- 创建本地路径,填写任务名称和目的地的路径,以及执行任务的时间和频次。
- 立即备份。
配置国内镜像软件源
- 备份原来的源:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
- 将源的内容设置为清华镜像:
将其中内容改为:sudo apt install vim sudo rm /etc/apt/sources.list sudo vim /etc/apt/sources.list
此处强烈建议使用清华源,阿里源的包不全,之后有一个安装问题折腾我好久,换了清华源就好了!!!# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释 deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse # 预发布软件源,不建议启用 # deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse 作者:贝拉的海 https://www.bilibili.com/read/cv17891624?spm_id_from=333.999.0.0 出处:bilibili
- 更新软件列表:
sudo apt update sudo apt upgrade
Python 相关设置
- Ubuntu 22.04 系统默认自带 Python3.10 ,有版本需求的话也可以自己安装一下,此处不再自己安装。
- 更换 pip 清华源:
python -m pip install --upgrade pip pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
配置 SSH
- 在安装完新系统后,先执行更新操作确保在当前Ubuntu系统上安装和启用SSH不会发生冲突,使用sudo来执行更新操作
sudo apt update && sudo apt upgrade -y
- 最新的 Ubuntu 22.04 LTS 系统默认没有安装和启用 SSH 服务,因此首先在终端中运行以下命令,执行安装操作:
安装完后,使用systemctl启动SSH服务:sudo apt install openssh-server -y
sudo systemctl enable --now ssh
- 然后检查SSH服务运行状态,确保服务正常运行并且没有错误输出(显示active running表示服务正常):
sudo systemctl status ssh
按 q 退出预览。 - SSH 默认使用 22 端口,检查防火墙状态:
之后就可以通过 XShell 等工具远程连接服务器。sudo ufw enable # 打开防火墙 sudo ufw status
配置远程桌面
MS-RDP 方法
- 需要注意的是,该方法需要 Ubuntu 账户登录后,才可远程连接,若 Ubuntu 用户注销则无法连接。经过测试,该远程方式实际上为远程控制方式,其实不适用于深度学习服务器的配置。
- 开启 Ubuntu 的共享功能:
设置——共享——开启远程桌面。
认证栏下方的用户名和密码是远程登录时需要填写的用户名和密码,可以和 Ubuntu 系统登录的用户名和密码不一致。但是这里的密码初始时是随机生成,第一次使用时需要修改。 - 防火墙允许 xrdp 端口:
sudo ufw allow from any to any port 3389 proto tcp
- 此时,可以通过 win10 自带的远程连接工具连接服务器了。
xrdp 方法
- 首先在 Ubuntu 系统中设置永不息屏。
- 执行如下命令:
如果多 Linux 用户使用服务器,建议关闭防火墙:sudo apt update sudo apt install xrdp sudo apt-get install xfce4 sudo systemctl enable --now xrdp # 启动xrdp服务,并设置为开机自启 sudo ufw allow from any to any port 3389 proto tcp # 防火墙允许xrdp服务端口
sudo ufw disable
- 经过测试,远程登录前,需要先注销 ubuntu 系统的登录;结束远程桌面前,也需要先注销登录,不然直接登录 ubuntu 系统时会黑屏。
xrdp 疑难杂症解决办法
经过测试,上述操作已经可以解决远程连接问题,若有其他报错,可参考下述方法。
- 解决 Job for xrdp.service failed because the control process exited with error code.xrdp 启动错误:
sudo touch /var/log/xrdp.log sudo chown xrdp:adm /var/log/xrdp.log sudo chmod 640 /var/log/xrdp.log sudo reboot
- 解决 nding ogin info to session manager, please wait…login failed for display 0 启动错误:
将 allowed_users=console 改为 allowed_users=anybody:sudo vi /etc/X11/Xwrapper.config
安装 CUDA
-
进入系统的图形桌面,打开软件更新器,可以看到标签栏有一个附加驱动,选择第一个安装 Nvidia 官方驱动(第二个是开源驱动)即可,安装完重启服务器:
-
重启完之后更新一下软件:
sudo apt update sudo apt upgrade
-
通过nvidia-smi查看当前显卡驱动版本:
-
通过https://docs.nvidia.cn/cuda/cuda-toolkit-release-notes/index.html找到与之对应的 CUDA 版本:
-
再通过https://developer.nvidia.cn/cuda-toolkit-archive下载该版本的 CUDA :
wget https://developer.download.nvidia.com/compute/cuda/12.0.1/local_installers/cuda_12.0.1_525.85.12_linux.run sudo sh cuda_12.0.1_525.85.12_linux.run --override
报的警告选择 continue :
根据提示选择安装选项,注意不要勾选第一个安装显卡驱动( driver )的,因为之前已经安装过了:
安装完成后提示: -
根据上图提示需要配置环境变量:
nano ~/.bashrc
再文件最后加入以下语句(加入的具体内容请将上述输出):
export CUDA_HOME=/usr/local/cuda-12.0 export LD_LIBRARY_PATH=${CUDA_HOME}/lib64 export PATH=${CUDA_HOME}/bin:${PATH}
然后使其生效:
source ~/.bashrc
-
可以使用命令nvcc -V查看安装的版本信息:
-
进入https://developer.nvidia.cn/rdp/cudnn-archive下载对应 CUDA 的 cuDNN :
-
下载好解压:
tar xvf cudnn-linux-x86_64-8.9.2.26_cuda12-archive.tar.xz
-
进入解压后的目录运行以下命令:
sudo cp include/cudnn*.h /usr/local/cuda/include sudo cp lib/libcudnn* /usr/local/cuda/lib64 sudo chmod a+r /usr/local/cuda/include/cudnn*.h sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
-
拷贝完成之后,可以使用以下命令查看CUDNN的版本信息:
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
表示版本信息为8.9.2。
使用 LXD 实现多人共用
-
在系统
软件和更新
中的附加驱动中安装 NVIDIA 驱动:
查看驱动版本:nvidia-smi
-
安装 lxd、zfs 及 bridge-utils:
sudo snap install lxd sudo apt install zfsutils-linux bridge-utils
-
初始化 lxd:
sudo lxd init
初始化的具体内容如下:
Would you like to use LXD clustering? (yes/no) [default=no]: Do you want to configure a new storage pool? (yes/no) [default=yes]: Name of the new storage pool [default=default]: lxd_pool Name of the storage backend to use (ceph, dir, lvm, zfs, btrfs) [default=zfs]: Create a new ZFS pool? (yes/no) [default=yes]: Would you like to use an existing empty block device (e.g. a disk or partition)? (yes/no) [default=no]: Size in GiB of the new loop device (1GiB minimum) [default=30GiB]: 600 Would you like to connect to a MAAS server? (yes/no) [default=no]: Would you like to create a new local network bridge? (yes/no) [default=yes]: What should the new bridge be called? [default=lxdbr0]: What IPv4 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]: What IPv6 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]: Would you like the LXD server to be available over the network? (yes/no) [default=no]: Would you like stale cached images to be updated automatically? (yes/no) [default=yes]: Would you like a YAML "lxd init" preseed to be printed? (yes/no) [default=no]:
-
创建容器,我的宿主机是ubuntu22.04,可以按需更改:
sudo lxc launch ubuntu:22.04
查看容器列表:
lxc list
-
为了后续方便辨识,修改容器名,原始容器名通过上述的
lxc list
查看:sudo lxc stop intense-raptor sudo lxc rename intense-raptor ubuntu22-tmp sudo lxc start ubuntu22-tmp
-
为容器添加设备和权限:
sudo lxc config device add ubuntu22-tmp gpu gpu sudo lxc config set ubuntu22-tmp security.nesting true sudo lxc config set ubuntu22-tmp security.privileged true
如果服务器或者电脑有多张显卡,这里一定要指定GPU的索引号 id=xxx,例如:
sudo lxc config device add ubuntu22-tmp gpu-tmp gpu id=0
-
进入容器 ubuntu22-tmp:
sudo lxc exec ubuntu22-tmp bash
容器默认用户名为 ubuntu ,此处修改为 ubuntu22-tmp:
usermod -l ubuntu22-tmp -d /home/ubuntu22-tmp -m ubuntu groupmod -n ubuntu22-tmp ubuntu
此时 /home 文件夹下只剩下 ubuntu22-tmp目录。
更改 ubuntu22-tmp 用户的密码:passwd ubuntu22-tmp
修改 root 用户密码:
passwd root
配置容器的 SSH 连接:
apt install openssh-server vim /etc/ssh/sshd_config
将其中的 PasswordAuthentication 改为 yes,退出编辑后重启 SSH 服务:
systemctl restart sshd
此时可以用 exit 命令退出到宿主机中,用 SSH 命令远程连接容器:
sudo ssh ubuntu22-tmp@10.22.118.222
输入密码,能登录则没问题。
此处针对宿主容器,应该继续进行一系列的 Python 配置、pip 配置、软件源配置、等,后续以该容器为模板进行复制时,会将这些配置信息一并复制。 -
以 ubuntu22-tmp 为模板复制容器:
lxc copy ubuntu22-tmp yhl
启动容器,自动分配 ip:
lxc start yhl
重复上述步骤,修改新容器的密码,之后就可以使用 SSH 连接:
sudo lxc exec yhl bash usermod -l yhl -d /home/yhl -m ubuntu groupmod -n yhl ubuntu passwd yhl passwd root
-
容器内换源:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak sudo vim /etc/apt/sources.list
将内容更改为:
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释 deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse deb http://security.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse # deb-src http://security.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse # 预发布软件源,不建议启用 # deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse # # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
更新源:
sudo apt update sudo apt upgrade
-
设置共享文件夹:
# 新建共享文件夹 mkdir sharefile # 设置权限 sudo chmodsudo chmod 777 sharefile
# 在宿主机内创建共享区域 sudo lxc profile create share-host sudo lxc profile set share-host security.privileged true
检查是否创建成功:
sudo lxc profile show share-host
将文件夹添加到指定 LXD 容器 yhl 中:
lxc config device add yhl share-host disk source=/home/super/sharefile path=/sharefile
-
容器内安装显卡驱动:
从官网挑选符合要求的驱动:https://www.nvidia.com/download/index.aspx,下载后放入上述的共享文件夹中,执行脚本,安装选项都选择 no :sudo bash ./NVIDIA-Linux-x86_64-535.129.03.run --no-kernel-module
查看是否安装成功以及版本是否合适:
nvidia-smi
安装 pytorch:
pip3 install torch torchvision torchaudio
验证是否可以调用显卡,显示 true 则成功:
import torch print(torch.cuda.is_available())
-
端口转发实现所有用户通过 SSH 连接容器,此处端口设置为 6001,connect 后面接的是容器 ip :
lxc config device add ubuntu22-tmp proxy1 proxy listen=tcp:192.168.3.123:6001 connect=tcp:10.13.153.83:22 bind=host
安装 docker
sudo apt-get update
# 安装证书
sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
# 验证是否安装成功
sudo docker -v
docker run hello-world
sudo groupadd docker
# 增加当前用户入docker组中
sudo groupadd docker
sudo gpasswd -a $USER docker
newgrp docker
# 再次验证
$ docker ps
$ docker run hello-world
安装 Anaconda
- 事先说明,我安装的深度学习服务器是公司服务器,因此有多用户使用 anaconda 的需求,以下的安装过程和网上其他教程不同点在于我将 anaconda 安装到了 /usr/local/anaconda3 下,这样的好处是使得每个用户都可以访问 anaconda ,且每个用户创建的虚拟环境相互不影响。若无此需求,只需执行最基本的安装命令即可,它会在用户目录下新建一个 anaconda3 目录。
- 根据本机选择 anaconda 安装包:https://repo.anaconda.com/archive/?C=M&O=A
- 安装 Anaconda3:
在下方自定义安装路径:sudo bash Anaconda3-2023.07-1-Linux-x86_64.sh
- 设置环境变量:
在文本末尾添加:vim ~/.bashrc
更新环境变量:# Anaconda environment export ANACONDA_HOME=/usr/local/anaconda3 export PATH=$ANACONDA_HOME/bin:$PATH
重启命令行即可。source ~/.bashrc
卸载 Anaconda
- 在安装目录下删除文件夹:
rm -r anaconda3 rm -r .conda rm -r .anaconda
- 检查和 conda 有关的隐藏文件是否全部删除:
ls -a
- 删除环境变量:
在文件最后删除从>>> conda initialize >>> 到<<< conda initialize <<<中间的有关 conda 初始化的内容:vim ~/.bashrc
- 更新环境变量:
source ~/.bashrc
解决 Ubuntu22.04 无法输入中文的问题
- 搜索语言支持”,然后里面选择中文,一般情况下安装ubuntu22.04系统时候,就直接是这个配置。
- 命令行输入:
之后再重新打开“语言支持”,"键盘输入法系统"选择“fcitx5”:sudo apt install fcitx5 \ fcitx5-chinese-addons \ fcitx5-frontend-gtk3 fcitx5-frontend-gtk2 \ fcitx5-frontend-qt5 kde-config-fcitx5
- 卸载 ibus 以及安装输入法:
sudo apt-get --purge remove ibus sudo apt install fcitx5 fcitx5-frontend-qt5 fcitx5-frontend-gtk3 fcitx5-frontend-gtk2 fcitx5-chinese-addons
- 完成上述操作后,会出现三个拿笔的小企鹅,选择“fcitx5配置”:
通过“鼠标选中“和中间的“上下左右“操作,调整输入法排序: - 重启系统。
安装 ChatGLM2
git clone https://github.com/THUDM/ChatGLM2-6B
cd ChatGLM2-6B
pip install -r requirements.txt
使用 fastllm 推理加速
sudo apt install make
sudo apt-get install g++
git clone https://github.com/ztxz16/fastllm.git
cd fastllm
mkdir build
cd build
cmake .. -DUSE_CUDA=ON # 如果不使用GPU编译,那么使用 cmake .. -DUSE_CUDA=OFF
make -j
cd tools && python setup.py install
然后只需要在原本的推理程序中加入两行即可使用 fastllm 加速:
# 这是原来的程序,通过huggingface接口创建模型
from transformers import AutoTokenizer, AutoModel
tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm2-6b", trust_remote_code = True)
model = AutoModel.from_pretrained("THUDM/chatglm2-6b", trust_remote_code = True)
# 加入下面这两行,将huggingface模型转换成fastllm模型
from fastllm_pytools import llm
model = llm.from_hf(model, tokenizer, dtype = "float16") # dtype支持 "float16", "int8", "int4"
安装闻达环境
-
建议先下载懒人包,后面用到的模型和各种文件都在懒人包当中:https://pan.baidu.com/s/1idvot-XhEvLLKCbjDQuhyg?pwd=wdai
-
clone 项目并安装通用依赖:
git clone https://github.com/wenda-LLM/wenda.git pip install -r requirements/requirements.txt
-
将模型放入主目录下的 model 文件夹,设置好文件夹名称:
-
在主目录下创建 txt 文件夹,用于存放 txt 格式的知识库,需要 UTF-8 编码:
-
在主目录修改 exmple.config.yml 为 config.yml ,并在其中修改模型类别及模型位置:
-
在 model 文件夹下存放 M3E-BASE 知识库索引模型:
-
在 wenda 环境预先构建索引:
python plugins/gen_data_st.py
-
主目录下运行 sh 文件即可启动闻达:
sh run_GLM6B.sh
目前似乎不会自动打开浏览器,请手动输入浏览器的前半部分:
文章来源:https://www.toymoban.com/news/detail-600460.html
参考链接
https://blog.csdn.net/m0_70331483/article/details/130168108文章来源地址https://www.toymoban.com/news/detail-600460.html
到了这里,关于Ubuntu22.04 安装深度学习服务器全纪录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!