文章目录
最近,我因深度学习相关的研究项目,需要搭建一台性能足够且预算有限的台式工作站。深度学习模型训练对计算资源要求极高,尤其是GPU的显存和算力。考虑到全新高端显卡(如NVIDIA RTX 5090)价格昂贵,而云服务器按小时计费长期使用成本不菲,我决定自行组装一台二手的"洋垃圾"服务器平台,主打极致性价比。我的核心需求是:能够流畅运行PyTorch、TensorFlow等框架,支持多卡并行训练,拥有大内存以处理大型数据集,并且整体稳定性要满足7x24小时不间断训练的要求。经过一番调研和淘换,最终确定了以下配置方案。

硬件和系统
淘来总花费:主板 350 元,CPU 80x2 元,CPU散热风扇50x2,内存条 254 元 × 2,电源 117 元,显卡 1099 x2元,亮机卡 69 元,固态硬盘 500 元,散热风扇 80 元,机箱 175 元,总共4257。
硬件清单:
- 主板:X99-08双路主板
- CPU:E5 2699 x2
- 内存:X99服务器内存条ECCREGDOR4 16g x2
- 电源:巨龙2000w
- 显卡:Tesla V100 16GB x2
- 亮机卡:GT 710
- 固态硬盘:M2固态 512g
- 机箱:威盛双路王360电竞机箱带散热风扇
系统使用:Ubuntu24.04
注意:主板 BIOS开启 Above 4G 选项,并将系统盘格式改为 GPT;安装Ubuntu系统时,要勾选额外的驱动安装,这样可自动安装V100显卡驱动。
远程控制设置
1、安装ssh
bash
sudo apt install openssh-server
sudo systemctl start ssh
sudo systemctl enable ssh
2、配置密钥实现免密登录
免密码登录的实现方式是,首先在客户机生成秘钥对,然后把公钥传给远程机。
首先在客户机终端键入以下命令,一路按回车键,生成客户机秘钥对
bash
ssh-keygen -t rsa
在目录自动创建一个隐藏文件夹 .ssh,并且生成两个文件,分别是私钥文件 id_rsa 和公钥文件 id_rsa.pub 。
打开Git Bash,通过 ssh-copy-id 传公钥给服务器
bash
ssh-copy-id root@192.168.XX.XX
传过去之后,只需要输入一次对端的密码,以后在客户机远程这台机器,都不需要输入密码。
3、vscode配置




连接远程主机


4、安装Docker
shell
# 安装Docker依赖包
sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release
# 添加阿里Docker源
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 更新源并安装Docker
# 双重更新确保源生效
sudo apt update
sudo apt-get update
# 安装Docker核心组件
sudo apt install docker-ce docker-ce-cli containerd.io
# 默认使用Docker需要sudo,添加当前用户到Docker用户组,实现免sudo操作
sudo groupadd docker
sudo gpasswd -a ${USER} docker
sudo service docker restart
# 设置可以远程root
sudo su - #先切换到root用户
sudo passwd -u root #解锁root用户
sudo passwd root #设置密码
vim /etc/ssh/sshd_config
#找到PermitRootLogin,将其改为yes并去掉前面的#号,保存退出
sudo service sshd restart
#运行以下命令,查看是否有root用户,如果有,后续就可以远程登录root的
ps -au|grep sshd
5、连接Docker容器
vscode先安装Docker和Dev Containers插件;
然后使用vscode远程连接服务的root用户;

点击左侧Docker就可以看到容器管理界面了

6、公网上远程连接
为能随时随地通过ssh访问这个电脑,这里使用frp进行内网穿透。frp分为frps(server)和frpc(client)两个包 ,其中前者安装到我们的云服务器上,后者安装在需要被外网访问到的各个设备上,这里就是指我们的深度学习工作站。
云服务器端:
连接云服务器端,下载frp软件,然后解压https://github.com/fatedier/frp/releases/download/v0.69.0/frp_0.69.0_linux_amd64.tar.gz
bash
cd /opt
wget https://bgithub.xyz/fatedier/frp/releases/download/v0.69.0/frp_0.69.0_linux_amd64.tar.gz
tar -zxvf frp_0.69.0_linux_amd64.tar.gz
cd frp_0.69.0_linux_amd64
编辑frps.toml,内容改为:
shell
[common]
bind_port = 7000 # frp服务的端口号,可以自己定
dashboard_port = 7500 # frp的web界面的端口号
dashboard_user = user # web界面的登陆账户,自己修改
dashboard_pwd = pass # web界面的登陆密码,自己修改
authentication_method = token
token = xxxxx # frp客户端连接时的密码,自己修改
保存配置后,使用该命令启动:
bash
./frps -c ./frps.toml
# 后台运行
nohup ./frps -c ./frps.toml> frps.log 2>&1 &
在浏览器输入 [云服务器的公网ip]:7500 即可访问到 frp的web管理界面。
注意,必须去云服务器控制台配置安全组规则 开放以上涉及到的端口,否则无法访问。
本地的深度学习服务器端:
下载相应版本的frpc软件包(跟刚刚一样的)https://github.com/fatedier/frp/releases/download/v0.69.0/frp_0.69.0_linux_amd64.tar.gz
bash
cd /opt
wget https://bgithub.xyz/fatedier/frp/releases/download/v0.69.0/frp_0.69.0_linux_amd64.tar.gz
tar -zxvf frp_0.69.0_linux_amd64.tar.gz
cd frp_0.69.0_linux_amd64
修改frpc.toml配置文件,内容如下:
bash
# 客户端配置
serverAddr = "123.123.123.123" # 这里必须是你的 frps 服务器公网IP/域名!!!
serverPort = 7000 # 服务端端口,默认7000
# 认证信息(必须和服务端 frps.toml 一致)
auth.token = "你的认证密码"
# 代理配置(示例:SSH 穿透)
[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 6000
注意:云服务器要开放
remotePort
保存配置后,使用该命令启动:
bash
./frpc -c ./frpc.toml
通过上面的脚本就可以把对于云服务器特定端口的访问给重定向到本地服务器的某个端口了,简单地讲就是:假如我用SSH客户端访问 [云服务器ip]:6000,就可以经过反向代理直接访问到[本地的训练服务器ip]:22。
添加开机自动启动的脚本,新建一个文件内容如下:
文件名/etc/systemd/system/frpc.service,注意修改其中的路径:
bash
vim /etc/systemd/system/frpc.service
bash
[Unit]
Description=FRP Client Service
After=network.target
[Service]
Type=simple
User=xsf-server
WorkingDirectory=/opt/frp_0.69.0_linux_amd64
ExecStart=/opt/frp_0.69.0_linux_amd64/frpc -c ./frpc.toml
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
然后执行以下命令启用脚本:
bash
sudo systemctl enable frpc.service
sudo systemctl start frpc.service
通过下面的命令查看服务状态,如果是running的话就说明可以了:
bash
sudo systemctl daemon-reload
sudo systemctl status frpc.service
ollama测试
实测运行速度还可以,就是有点费电,2个显卡满载跑起来功率达到800W。
1、拉取ollama容器
shell
sudo docker run -d --gpus all -v ollama:/root/.ollama -p 11434:11434 --name ollama docker.1ms.run/ollama/ollama
2、进入容器并拉取大语言模型
shell
ollama run qwen3.5:9b
3、测试效果
以下是单个V100 显卡的运行效果。

后续有更新会继续补充,希望对大家有帮助~
参考: