工作站考虑性价比和后续的扩展性,在二手平台搜索了几天,发现捡垃圾真香。
考虑到深度学习有多卡的需求,平台选择需要有足够多的 pcie 通道,平台选择了 Intel 十代 X 系列 CPU + X299 主板,能够提供 48 条 pcie lane,二手主板+CPU总价低于十四代 i9 CPU。大模型的显存需求比较大,魔改 22GB 显存的 2080ti 看起来很香,就先入手一块试试水,真香之后,再考虑组多卡(2080ti 支持 Nvlink)。另外内存硬盘电源这些还是要求稳,入手了新的。
配置如下:
作为开发机器用来自己捯饬,使用的是 Ubuntu 系统
使用的是 ultralOS 来制作 Ubuntu 的系统启动盘
安装系统,基本就是按部就班,网络上各种教程非常多,就不过多赘述了。
更换镜像源
# 备份镜像源列表
cp /etc/apt/sources.list /etc/apt/sources.list.bk
# 编辑镜像源列表文件,这里替换的是中科大的镜像源
# 中科大源
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
# 国内的其他源
# 阿里源
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
# 清华源
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
必要软件安装
# 更新软件列表
sudo apt-get update
sudo apt-get upgrade
# install software
sudo apt-get install vim
sudo apt-get install ssh
sudo apt install net-tools
sudo apt install git
配置 ssh
这里没有配置远程桌面,主要是两方面的考虑:
# 查看本机 IP
ifconfig
# 在 ~/.bashrc 中添加sshd自启动脚本,其他应用程序同理
# 下面的代码添加在 ~/.bashrc 末尾
# 初始化sshd
if pgrep -x "sshd" >/dev/null
then
echo " > sshd started"
else
sshd >/dev/null
echo " > sshd start success"
fi
安装 python 和 pip
sudo apt install python3
sudo apt install python3-pip
如果需要指定版本的 python,可以在后面安装完 conda 环境之后再安装,也方便管理
sudo vim ~/.pip/pip.conf
# 把文件内容修改为如下内容(清华源)
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple/
[install]
trusted-host = pypi.tuna.tsinghua.edu.cn
# 删除原来的python软链接
sudo rm /usr/bin/python
sudo rm /usr/bin/python3
# 新建软链接
sudo ln -s /usr/bin/python2 /usr/bin/python
sudo ln -s /usr/bin/pip3 /usr/bin/pip
sudo ln -s /usr/bin/python3 /usr/bin/python3
安装 NVIDIA 显卡驱动
在图形化界面安装比较方便
KaTeX parse error: Expected '}', got '&' at position 16: \boxed{software&̲update} \righta…
之后选择 NVIDIA 的最近新的驱动 apply 即可,稍等几分钟就可以安装完成
安装完成之后,更新软件列表
sudo apt update
sudo apt upgrade
此时运行 nvidia-smi
可能会报错,重启机器即可
安装 cuda
如果之前安装了旧版本的cuda和cudnn的话,需要先卸载后再安装:
sudo apt-get remove --purge nvidia*
然后按照前面的方法重新安装显卡驱动,安装好了之后开始安装CUDA,如果没有安装过 cuda,可以不卸载
chmod +x cuda_10.1.105_418.39_linux.run
sudo sh ./cuda_10.1.105_418.39_linux.run
安装过程中需要选择要安装选项,不要勾选第一个安装显卡驱动的,因为之前已经安装过了。 vim ~/.bashrc
# 在文件末尾添加
export CUDA_HOME=/usr/local/cuda-10.1/
export LD_LIBRARY_PATH=${CUDA_HOME}/lib64
export PATH=${CUDA_HOME}/bin:${PATH}
使环境变量生效 source ~/.bashrc
nvcc -V
cd NVIDIA_CUDA-10.1_Samples/1_Utilities/deviceQuery
make
./deviceQuery
若安装成功,会打印出显卡信息安装 CuDNN
在 CUDNN 官网下载 CUDNN:https://developer.nvidia.com/rdp/cudnn-download
tar -xzvf cudnn-10.1-linux-x64-v8.0.5.39.tgz
sudo cp cuda/lib64/* /usr/local/cuda-10.1/lib64
sudo cp cuda/include/* /usr/local/cuda-10.1/include/
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
安装 conda 环境
不同的训练框架和版本可能会需要不同的python版本相对应,而且有的包比如numpy也对版本有要求。频繁切换 python 和一些包的版本,容易造成包版本冲突的问题,conda 可以给每个配置建立一个虚拟的python环境,在需要的时候可以随时切换,而不需要的时候也能删除不浪费磁盘资源。
chmod +x Anaconda3-2023.09-0-Linux-x86_64.sh
./Anaconda3-2023.09-0-Linux-x86_64.sh
后续就一路 enter 安装下去即可。最后会问是否要初始化conda,输入yes确认,重开终端窗口之后,就可以看到conda环境可用了(base代表默认环境) conda create --name python_38 python=3.8
conda activate python_38
conda deactivate
安装 nvidia-docker
有时候不同的项目可能会用到不同的 gcc 版本的编译环境,或者是有不同的工具链需求。如果这些操作都在服务器本地上进行,那时间久了就会让服务器的文件系统非常杂乱,而且还会遇到各种软件版本冲突问题。
docker 可以理解为一个轻量化的虚拟环境,与服务器的本地环境隔离,可以在宿主服务器上新建很多个这种被称为容器的虚拟机,然后在里面配置我们的开发环境,且这些配置好的环境是可以打包成镜像的,方便随时做分享和重用。在使用完不需要的时候,可以直接删除容器。
Nvidia-Docker 可以把GPU暴露给Docker的容器。
sudo apt-get update
sudo apt-get install docker.io
systemctl start docker
systemctl enable docker
验证是否安装成功: docker version
##首先要确保已经安装了nvidia driver
# 2. 添加源
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
# 2. 安装并重启
sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker
安装完成后可以新建一个容器测试一下: sudo docker run -it --name test_nvidia_docker --gpus all nvidia/cuda:10.1-base
进入容器之后可以跑一下nvidia-smi命令看看 GPU 状态 tar -cvpzf ubuntu_backup@`date +%Y-%m+%d`.tar.gz --exclude=/proc --exclude=/tmp --exclude=/boot --exclude=/lost+found --exclude=/media --exclude=/mnt --exclude=/run /
可以得到一个名为backup.tgz的压缩文件,这个文件包含我们需要备份的系统的全部内容 sudo su
# 在tryUbuntu根目录下有media文件夹,里面是U盘文件夹和新安装的系统文件夹,在在里分别用(U盘)和(UBUNTU)表示
cd /media/(U盘)
mount -o remount rw ./
# 将新系统根目录下/boot/grub/grub.cfg文件备份到U盘中
sudo cp /media/(Ubuntu)/boot/grub/grub.cfg ./
# 将新系统根目录下/etc/fstab文件备份到U盘中,fstab是与系统开机挂载有关的文件,grub.cfg是与开机引导有关的文件,所以这一步至关重要
sudo cp /media/(UBUNTU)/etc/fstab ./
# 这一步删除新装ubuntu全部的系统文件,有用的fstab及grub.cfg已经备份
cd /media/(UBUNTU)
sudo rm -rf ./*
# 将U盘中backup.tgz复制到该目录下并解压缩
cp /media/(U盘)/backup.tgz ./
sudo tar xvpfz backup.tgz ./
# 创建打包系统时排除的文件
sudo mkdir proc lost+found mnt sys media