Linux 服务器配置
最近想自己配置一台 AI 服务器,但是因为预算不够,希望能用最低的成本配置一台即可以用来部署 Stable Diffusion 又可以用来部署一个私有的大模型。搜索了一下常见的方案,一般一台人工智能服务器,不用显卡都在六七千左右,算上显卡需要在一万以上。这显然远远超过我的预期成本。后来经过多方的了解,最后使用 3000 元左右配置了一台足够运行这些内容的服务器。
服务器配置
服务器配置中,最重要的就是显卡,最近因为大模型的原因,许多显卡的价格都有所上涨,在显卡选择的时候,最主要的就是显存需要足够大,然后就是便宜,最后比较合适的是二手的 Tesla P100 16G 和 Tesla P40 24G ,这两个显卡中最好的选择是使用 P40 因为显存足够在,而且价格上也相差不多,但是因为 SD 本身比较火的原因,很难买到价格合适的 P40 显卡了,许多都上浮了 100-300 元,所以最后选择是 P100 显卡,然后买了一个 3D 打印的接口加一个风扇共花了 828 元。
然后就是主板、 CPU 和内存,因为预算不够,所以在选择的时候都使用了比较常见的 精粤X99 主板和 E5 2680V4 CPU ,主打一个便宜管饱。内存则选择了 2 块 32G 的三星 DDR4 2400T 的内存,在选择上没有太多的主要考虑内存和主板配套即可。硬盘选择的是七彩虹的 M2 1T 固态硬盘,后面如果使用多了,会考虑增加一块机械硬盘,主打量大管饱即可。
配件 | 主板 + CPU | 内存 | 硬盘 | 显卡 | 电源 | 机箱 | 亮机显卡 | CPU 风扇 |
---|---|---|---|---|---|---|---|---|
选择 | 精粤X99-TITANIUMD4 + E5 2680V4 | 三星 DDR4 32G 2400T *2 | 七彩虹 M.2 1T | Tesla P100 16G + 风扇 | 鑫谷全模组850W | 开放机箱 | Quadro K620 2G | 乔思伯 HX6240 塔式 |
价格 | 425 | 260 *2 | 439 | 828 | 387 | 39 + 15 | 145 | 220 |
3018 |
本来选择的是 X99-Plus 版本,后来选择换成了 X99T 版本,有三个 PCI-E 16 的插口,可以插三个显卡,这样可以最大效能的使用这块主板的能力。
需要注意的是,在虽然有三个 PCI-E 16 插口,但并不是所有的插口都是 X16 的,X99T 板只有一个插口是 X16 的速度,需要使用 lspci 命令查看对应的访问速度。
另外在配置机器的过程中需要注意亮机卡和计算卡间的兼容问题。最开始使用的是 GTX710 作为亮机卡,但是在使用过程中发现只能按装低版本的驱动。这里使用的是 Fedora 39 Workstation 系统,所以需要从 rpmfusion.org 上下载驱动。这里需要注意的 2014 年后的 GeForce/Quadro/Tesla 显卡都是使用最新版本的驱动的 CUDA ,但我之前选择的 GTX710 正好是在 2014 年之后,使用是的 CUDA11.3 版本。
在查找显卡的时候,发现 Quadro 的 P600/P620 和 K620 显卡是比较便宜且好用的,所以最后选择的是 K620 2G 版本的显卡,安装驱动的命令如下,具体的流程见下节。
sudo dnf update -y # and reboot if you are not on the latest kernel
sudo dnf install akmod-nvidia # rhel/centos users can use kmod-nvidia instead
sudo dnf install xorg-x11-drv-nvidia-cuda #optional for cuda/nvdec/nvenc support
安装 Nvidia 驱动
在安装 Nvidia 的驱动之前,需要先了卸载掉 Linux 下开源的驱动程序 nouveau 。但是因为显卡的驱动本身是存在于启动项的,如果直接卸载掉,再重启的话,会导致系统黑屏。所以在安装之前需要先禁用掉启动项。但是在卸载之后,是没有显驱,所以 Linux 是无法正常进入到图形界面形式的。
因此在更换驱动到 Nvidia 官方提供的驱动前,需要先做 4 件事:
禁用 nouveau 驱动
禁用 nouveau 的驱动主要做两件事,加入黑名单并重新生成启动项。
touch /etc/modprobe.d/nouveau-blacklist.conf
然后向其中写入:
blacklist nouveau
options nouveau modeset=0
之后再将禁用命令加入到引导程序命令行中:
vi /etc/default/grub
增加 rd.driver.balcklist=nouveau
到 grub 文件中的 GRUB_CMDLINE_LINUX 参数中。
然后重新生成启动文件:
grub2-mkconfig -o /boot/grub2/grub.cfg
切换到 root 权限
启用 root 用户需要先设置对应的密码。
sudo passwd root
然后查看 nouveau 是否已经禁用
lsmod | grep nouveau
禁用图形界面服务启动项
service graphical.target stop
切换默认设置为命令行模式
对于 Fedora 来说,退切图形界面非常简单,将默认配置修改为多用户状态即可:
systemctl set-default multi-user.target
按上节提到的命令进行安装对应的显卡驱动和 CUDA 驱动即可。
最后需要再切回图形界面:
systemctl set-default graphical.target
然后重启系统,正常进入系统之后,使用 nvidia-smi
命令可以正常查看显卡的状态即可。
系统更新后修复
最近 fedora 从 39 更新到 40 版本,启动时会提示: Nvidia kernel module missing, Falling back to nouveau 。然后进入到图形界面时,会发现分辨率变低了,使用 lsmode | grep nouveau
查看,可以看到 nouveau 的驱动还是启动状态,查看对应的禁用项,发现配置都没有问题。
经过分析是因为更新系统后, nvidia 的驱动版本不匹配了,需要重新安装。先执行卸载驱动。
dnf remove \*nvidia\*
dnf remove akmod-nvidia
dnf remove nvidia-gpu-firmware
然后更新系统:
dnf upgrade
最后重新安装对应驱动:
dnf install akmod-nvidia
dnf install xorg-x11-drv-nvidia-cuda
最后再将启动方式修改到图形界面: systemctl set-default graphical.targe
然后重启即可。
使用 Cuda 替代 nvidia-driver
之前安装驱动的时候是使用的 nvidia-driver 但是这在更新时经常会出现版本和内核差异导致的更新失败,经过几次分析之后发现可以使用 cuda 安装对应的驱动来替代直接安装 driver ,同时能保证各个模块间的相对匹配。
具体的安装方法可以看 How to CUDA 。
安装方法如下:
sudo dnf config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/fedora39/x86_64/cuda-fedora39.repo
sudo dnf clean all
sudo dnf module disable nvidia-driver
sudo dnf -y install cuda
之后重启系统即可正常使用了。
Linux 基础配置
这时虽然已经安装好了显卡驱动,可以开始进行开发和使用了,但是系统在使用起来还是有点奇怪的状态,按自己的习惯做以下配置。
切换系统目录
因为默认是使用的中文环境,所以系统默认目录都是中文的,但是在使用过程中感觉不太习惯,特别是输入法未安装好之前。
export LANG=en_US
xdg-user-dirs-gtk-update
这样就可以装默认的目录改成英文了,之后再修改回中文语言环境。
export LANG=zh_CN.UTF-8
安装中文输入法
Fedora 默认是使用的 ibus 输入法,这里我习惯使用的 RIME 输入法,需要安装 rime 输入法:
dnf install ibus-rime
然后重启系统,同时编写用户配置文档:
vi ~/.config/ibus/rime/default.custom.yaml
配置文档如下:
patch:
schema_list:
- schema: wubi86
- schema: wubi_pinyin
- schema: pinyin_simp
menu:
page_size: 5
这里因为我是五笔用户,所以首选的输入法是五笔 86 版,然后配合五笔拼音和简化字拼音两个输入法作为日常输入使用。
配置完成后,可以使用下面的命令进行重新部署,或者在输入法选项页选择部署。
touch ~/.config/ibus/rime; ibus restart
安装日常工具 Emacs
作为一个多年的 Emacs 老用户,已经配置好了一套自己配置文件,在此只需要在 Fedora 中安装即可。
dnf isntall emacs
然后下载 .emacs.d/ 配置项目,即可正常安装 elpa/ 包,但是需要注意的是,需要额外执行一下 nerd fonts 的命令来启用一些图标。
在 Emacs 中执行 M-x nerd-icons-install-fonts 即可。
安装 Git 并配置
Git 也是一样的,默认使用 dnf 安装即可(一般都是安装好的)。然后需要做以下的配置:
git config --global core.edit "vim"
git config --global user.name "<your_name>"
git config --global user.email "<your_email>"
然后是一些 Git 的配置小技巧,特别是在使用 Git 拉取大文件时,有时会报错文件传输失败,Curl 报错 128 等,开启下面的配置:
git config --global http.postBuffer 52428800
git config --global http.lowSpeedLimit 100
git config --global http.lowSpeedTime 10
git config --global core.cmpression -1
安装 zsh 和 ohmyzsh
在大多数 Linux 系统上默认的 shell 环境都是 bash ,但是 bash 使用和配置却没有 zsh 简单和易用,特别是在 Mac 电脑上,配合 iterm2 和 tmux 包,可以非常方便的使用终端环境。
sudo dnf install -y zsh
chsh -s /bin/zsh
这样就将默认的 Shell 环境切换到 zsh 上了。然后就可以通过清化源进行配置和安装了。
git clone https://mirrors.tuna.tsinghua.edu.cn/git/ohmyzsh.git
cd ohmyzsh/tools
REMOTE=https://mirrors.tuna.tsinghua.edu.cn/git/ohmyzsh.git sh install.sh
然后再将常用的一些 zsh 的插件安装将启用,就获得了一个非常好用的 zsh 环境。
然后可以按自己的想法启用内置的插件了,比较常用的是 copy* 系列。
在 Fedora 中如果想使用 copy* 命令,需要安装 xclip 包才行,
dnf install xclip
这样就可以使用 copypath 等命令来直接操作终端了。
另外比较好用的插件是自动填充和高亮两个插件。
git clone https://github.com/zsh-users/zsh-syntax-highlighting ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
git clone https://github.com/zsh-users/zsh-autosuggestioins ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestioins
下载利器 aria2
Fedora 下依然是使用 dnf 进行安装。但是对于 aria2 和 windows 下的下载工具不同,其需要使用命令行进行下载。
截图工具 flameshot
Linux 下比较好用的截图工具,可以直接使用 dnf install flameshot
命令进行安装,使用时直接右键即可打开进行截图和保存。
安装工具扩展 flatpak
使用 dnf install flatpak
命令进行安装。
配置对应的镜像:
sudo flatpak remote-modify flathub --url=https://mirror.sjtu.edu.cn/flathub
如果想更新 flatpak 安装的包,直接使用 flatpak update
即可。
安装的工具
在 Mac 上使用 homebrew 安装, Linux 上可以使用 snap 或者 flatpak ,但是 snap 用起来很麻烦,经常出错,所以改使用 flatpak 。
- dbeaver
flatpak install flathub io.dbeaver.DBeaverCommunity
总结
至此一台 Fedora 系统的低成本人工能力服务器配置好了。与一般的思路不太一样,这台机器可以作为开发和工具的主力机来使用的。
后面如果再有新的内容,就再更新。
另外一个必不可少的具,虽然有安装,但是并不适合放上来说,大家开心就好啦。