
将U盘插到服务器上,开机按F11键(具体什么键跟主板型号有关)选择启动项进入临时的 Ubuntu 系统,在图形界面中选择 Install Ubuntu ,所有配置都可以使用默认的,改一下用户名和密码即可。
进入系统后设置一下root账户密码:
sudo passwd root同时为了避免每次sudo都要输入密码,这里配置一下visudo:
sudo visudo在文件最后加上一句( name 改为自己的用户名):
name ALL=(ALL) NOPASSWD: ALLOne-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 upgradeUbuntu 22.04 系统默认自带 Python3.10 ,有版本需求的话也可以自己安装一下,此处不再自己安装。
更换 pip 清华源:
python -m pip install --upgrade pip
或者 sudo apt install python3-pip
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple在安装完新系统后,先执行更新操作确保在当前Ubuntu系统上安装和启用SSH不会发生冲突,使用sudo来执行更新操作
sudo apt update && sudo apt upgrade -y最新的 Ubuntu 22.04 LTS 系统默认没有安装和启用 SSH 服务,因此首先在终端中运行以下命令,执行安装操作:
sudo apt install openssh-server -y安装完后,使用systemctl启动SSH服务:
sudo systemctl enable --now ssh然后检查SSH服务运行状态,确保服务正常运行并且没有错误输出(显示active running表示服务正常):
sudo systemctl status ssh
按 q 退出预览。
SSH 默认使用 22 端口,使 22 端口通过防火墙:
sudo ufw allow 22/tcp启用并重新加载防火墙:
sudo ufw enable && sudo ufw reload之后就可以通过 XShell 等工具远程连接服务器。
需要注意的是,该方法需要 Ubuntu 账户登录后,才可远程连接,若 Ubuntu 用户注销则无法连接。经过测试,该远程方式实际上为远程控制方式,其实不适用于深度学习服务器的配置。
开启 Ubuntu 的共享功能: 设置——共享——开启远程桌面。


认证栏下方的用户名和密码是远程登录时需要填写的用户名和密码,可以和 Ubuntu 系统登录的用户名和密码不一致。但是这里的密码初始时是随机生成,第一次使用时需要修改。
防火墙允许 xrdp 端口:
sudo ufw allow from any to any port 3389 proto tcp此时,可以通过 win10 自带的远程连接工具连接服务器了。
首先在 Ubuntu 系统中设置永不息屏。
执行如下命令:
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服务端口如果多 Linux 用户使用服务器,建议关闭防火墙:
sudo ufw disable经过测试,远程登录前,需要先注销 ubuntu 系统的登录;结束远程桌面前,也需要先注销登录,不然直接登录 ubuntu 系统时会黑屏。
经过测试,上述操作已经可以解决远程连接问题,若有其他报错,可参考下述方法。
解决 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进入系统的图形桌面,打开软件更新器,可以看到标签栏有一个附加驱动,选择第一个安装 Nvidia 官方驱动(第二个是开源驱动)即可,安装完重启服务器:

重启完之后更新一下软件:
sudo apt update
sudo apt upgrade通过nvidia-smi查看当前显卡驱动版本:

通过https://docs.nvidia.cn/cuda/cuda-toolkit-release-notes/index.html找到与之对应的 CUDA 版本:

再通过https://developer.nvidia.com/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。
在系统 软件和更新 中的附加驱动中安装 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使用nvidia-smi查看GPU的索引号:

进入容器 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更新并安装依赖项:
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common添加 Docker 官方 GPG 密钥:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg添加 Docker 官方软件源:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu jammy stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null更新软件源并安装 Docker:
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io启动 Docker 并设置开机自启:
sudo systemctl start docker
sudo systemctl enable docker修改镜像地址:
vim /etc/docker/daemon.json修改内容如下:
{
"registry-mirrors" : ["https://docker.registry.cyou",
"https://docker-cf.registry.cyou",
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi",
"https://dockertest.jsdelivr.fyi",
"https://mirror.aliyuncs.com",
"https://dockerproxy.com",
"https://mirror.baidubce.com",
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn",
"https://docker.mirrors.ustc.edu.cn",
"https://mirror.iscas.ac.cn",
"https://docker.rainbond.cc",
"https://do.nark.eu.org",
"https://dc.j8.work",
"https://dockerproxy.com",
"https://gst6rzl9.mirror.aliyuncs.com",
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"http://mirrors.ustc.edu.cn/",
"https://mirrors.tuna.tsinghua.edu.cn/",
"http://mirrors.sohu.com/"
],
"insecure-registries" : [
"registry.docker-cn.com",
"docker.mirrors.ustc.edu.cn"
],
"debug": true,
"experimental": false
}更新镜像:
systemctl daemon-reload
systemctl restart docker增加当前用户入 Docker 组中:
sudo groupadd docker
sudo gpasswd -a $USER docker
newgrp docker验证 Docker 安装:
sudo docker run hello-world
事先说明,我安装的深度学习服务器是公司服务器,因此有多用户使用 anaconda 的需求,以下的安装过程和网上其他教程不同点在于我将 anaconda 安装到了 /usr/local/anaconda3 下,这样的好处是使得每个用户都可以访问 anaconda ,且每个用户创建的虚拟环境相互不影响。若无此需求,只需执行最基本的安装命令即可,它会在用户目录下新建一个 anaconda3 目录。
经过测试,不建议在默认的 root 目录下安装 anaconda,这会导致只能在 root 权限下使用 conda 环境,而非普通用户。
根据本机选择 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初始化 conda:
conda init重启命令行即可。
使用清华源:
vim ~/.condarc添加的内容详见 https://mirror.tuna.tsinghua.edu.cn/help/anaconda/。
查看换源后的内容:
conda config --show-sources在安装目录下删除文件夹:
rm -r anaconda3
rm -r .conda
rm -r .anaconda检查和 conda 有关的隐藏文件是否全部删除:
ls -a删除环境变量:
vim ~/.bashrc在文件最后删除从>>> conda initialize >>> 到<<< conda initialize <<<中间的有关 conda 初始化的内容:

更新环境变量:
source ~/.bashrc搜索语言支持”,然后里面选择中文,一般情况下安装ubuntu22.04系统时候,就直接是这个配置。

命令行输入:
sudo apt install fcitx5 \
fcitx5-chinese-addons \
fcitx5-frontend-gtk3 fcitx5-frontend-gtk2 \
fcitx5-frontend-qt5 kde-config-fcitx5之后再重新打开“语言支持”,"键盘输入法系统"选择“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配置”:

通过“鼠标选中“和中间的“上下左右“操作,调整输入法排序:

重启系统。
git clone https://github.com/THUDM/ChatGLM2-6B
cd ChatGLM2-6B
pip install -r requirements.txtsudo 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目前似乎不会自动打开浏览器,请手动输入浏览器的前半部分:
