科研服务器工作站使用指南

本文档面向新加入研究组的同学,帮助快速了解服务器的硬件配置、软件环境以及日常使用方法。


服务器硬件概览

项目 配置
操作系统 Ubuntu 24.04.3 LTS (Noble Numbat)
CPU Intel Core i9-14900K (32 线程,最高 6.0 GHz)
内存 128 GB DDR5
GPU NVIDIA GeForce RTX 3090 (24 GB VRAM)
硬盘 1.8 TB NVMe SSD
NVIDIA 驱动 535.274.02
CUDA 版本 12.2

服务器的日常状态在Lark的 @全体 频道每天上午7:00会准时推送,包括CPU、GPU状态等, 这个推送也可以理解为对服务器状态、网络状态甚至是逸夫楼供电状态的监控。

登录服务器

校内网络(实验室 / 校园 WiFi)

在学校内网环境下,直接通过 SSH 连接:

ssh 你的用户名@125.221.233.110

校外网络(寒暑假 / 在家 / 出差)

不在学校时,通过 frp 内网穿透 连接。服务器已配置 frpc 服务(开机自启),将 SSH 映射到了一台公网服务器上:

ssh 你的用户名@<公网IP> -p 6001

注意:校外连接走公网中转,网速会比校内慢一些,传输大文件建议回到校内操作。具体公网 IP 请在 Lark 群内查看或向管理员确认,勿对外传播。

快捷配置(推荐)

在你本地电脑的 ~/.ssh/config 中添加以下配置,之后用别名一键连接:

# 校内直连
Host lab
    HostName 125.221.233.110
    User 你的用户名
    Port 22

# 校外穿透
Host lab-out
    HostName <公网IP>
    User 你的用户名
    Port 6001

配置后使用方式:

ssh lab       # 校内
ssh lab-out   # 校外

首次登录后建议

  1. 修改默认密码:passwd
  2. 配置 SSH 密钥免密登录(推荐,校内校外各配一次):
# 在你的本地电脑上执行
ssh-keygen -t ed25519
ssh-copy-id lab       # 校内
ssh-copy-id lab-out   # 校外(同一台机器,配一次两个都生效)
  1. 使用 tmux 保持长时间运行的任务不中断(服务器已安装 tmux 3.4):
tmux new -s mysession     # 创建新会话
tmux attach -t mysession  # 重新连接
# Ctrl+B, D              # 临时分离(任务继续跑)

提示: 特别是校外连接时,网络不稳定容易断线,务必使用 tmux,否则训练任务会随 SSH 断开而终止。


Python 环境

环境总览

服务器使用 Miniconda 管理 Python 环境,base 环境已预装常用的科研工具包。

项目 版本
Conda 25.7.0
Python (base) 3.13.7
PyTorch 2.6.0+cu124
JupyterLab 4.4.7

已安装的主要 Python 包

深度学习框架:

  • torch 2.6.0+cu124, torchvision 0.21.0+cu124, torchaudio 2.6.0+cu124
  • torch-geometric 2.6.1

数据科学:

  • numpy 2.1.2, pandas 2.3.1, scipy 1.16.1
  • scikit-learn 1.7.1, matplotlib 3.10.5, seaborn 0.13.2

生信分析:

  • scanpy 1.11.4, anndata 0.12.2

开发工具:

  • jupyterlab 4.4.7

推荐工作流:创建自己的 Conda 环境

重要: 建议每个项目创建独立的 conda 环境,避免包冲突影响其他人。

# 创建新环境(指定 Python 版本)
conda create -n myproject python=3.11

# 激活环境
conda activate myproject

# 在新环境中安装需要的包
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu124
pip install numpy pandas scikit-learn matplotlib

# 退出环境
conda deactivate

# 查看所有环境
conda env list

# 删除不再使用的环境(请及时清理,节省磁盘)
conda env remove -n myproject

使用 JupyterLab

启动 JupyterLab 并通过 SSH 隧道在本地浏览器访问:

# 在服务器上启动(建议在 tmux 中运行)
jupyter lab --no-browser --port=8888

# 在本地电脑新开一个终端,建立 SSH 隧道
ssh -N -L 8888:localhost:8888 你的用户名@服务器IP

然后在本地浏览器打开 http://localhost:8888,输入终端显示的 token 即可。

GPU 使用

Lark里的 全体频道每5分钟会推送GPU的任务状态,如果GPU有动作(比如任务开始、任务结束)等,同学们可以根据推送也能辅助判断GPU的状态,从而辅助自己判断自己的程序是否执行完毕。

# 查看 GPU 使用情况
nvidia-smi

# 在 Python 中验证 CUDA
python -c "import torch; print(torch.cuda.is_available(), torch.cuda.get_device_name(0))"

GPU 使用礼仪:

  • 跑大模型/长训练前,先用 nvidia-smi 确认 GPU 空闲
  • 如果 GPU 被占用,请在群里协调
  • 训练结束后及时释放 GPU 显存(关掉 Python 进程)

R 环境

环境总览

R 已安装在系统级别,所有用户可以直接使用,无需各自配置。

项目 信息
R 版本 4.5.3 (2026-03-11)
路径 /usr/bin/R, /usr/bin/Rscript
CRAN 镜像 清华大学镜像(自动配置)
共享包目录 /usr/local/lib/R/shared-library
预装包数量 289 个

直接使用

# 启动交互式 R
R

# 运行 R 脚本
Rscript my_analysis.R

# 在 R 中使用预装包,直接 library() 即可
library(tidyverse)
library(DESeq2)
library(ggplot2)

预装 R 包分类

数据处理: tidyverse, dplyr, tidyr, readr, data.table, readxl, writexl, jsonlite, yaml, haven, lubridate, forcats, purrr, tibble, stringr

可视化: ggplot2, ggpubr, pheatmap, RColorBrewer, viridis, cowplot, patchwork, ggrepel, ggsci, ggforce, gridExtra, scales

统计分析: survival, survminer, lme4, broom, car, rstatix, lmtest

机器学习: caret, glmnet, randomForest, xgboost, e1071

生物信息学(Bioconductor): BiocManager, DESeq2, clusterProfiler, GenomicRanges, org.Hs.eg.db, Biobase, BiocGenerics, SummarizedExperiment, AnnotationDbi, DOSE, enrichplot, fgsea, GOSemSim, ggtree

开发工具: devtools, remotes, rmarkdown, knitr, testthat

安装额外的 R 包

如果需要的包不在预装列表中:

# 方式一:安装到个人目录(推荐,不影响他人)
install.packages("新包名")
# R 会自动提示创建个人库目录,选 yes 即可

# 方式二:安装到共享目录(需要 sudo 权限,请联系管理员)
# sudo Rscript -e "install.packages('新包名', lib='/usr/local/lib/R/shared-library')"

# 安装 Bioconductor 包
BiocManager::install("包名")

注意:R 路径问题

由于部分用户的 conda 环境中也有 R,请注意区分:

# 查看当前使用的是哪个 R
which R

# 如果显示的是 conda 下的 R(如 /home/xxx/miniconda/bin/R),
# 但你想用系统 R,可以指定完整路径:
/usr/bin/R
/usr/bin/Rscript my_script.R

# 或者临时取消 conda 的 PATH 优先级:
conda deactivate

网络代理(V2Ray)

服务器已配置 V2Ray 代理服务,用于访问 Google Scholar、GitHub、Hugging Face 等国内网络受限的资源。

代理概览

项目 信息
V2Ray 版本 5.38.0 (V2Fly)
HTTP 代理 127.0.0.1:1087
SOCKS5 代理 127.0.0.1:1080
服务状态 systemd 托管,开机自启
节点来源 Lark @AcrossGFWBot(每月推送)

日常使用

服务器的 .bashrc 中已配置了 proxy_on / proxy_off 快捷命令:

# 开启代理(当前终端生效)
proxy_on

# 关闭代理
proxy_off

# 查看代理状态
proxy_status

开启后,curlwgetpipgit cloneconda 等命令行工具会自动走代理。

使用场景举例:

# 从 Hugging Face 下载模型
proxy_on
pip install transformers
python -c "from transformers import AutoModel; AutoModel.from_pretrained('bert-base-uncased')"

# 克隆 GitHub 仓库
proxy_on
git clone https://github.com/some/repo.git

# 访问 Google Scholar(命令行测试)
proxy_on
curl -s https://scholar.google.com | head -5

在 Python 脚本中使用代理:

import os
os.environ["http_proxy"] = "http://127.0.0.1:1087"
os.environ["https_proxy"] = "http://127.0.0.1:1087"

# 之后的网络请求会自动走代理

在 R 中使用代理:

Sys.setenv(http_proxy = "http://127.0.0.1:1087",
           https_proxy = "http://127.0.0.1:1087")

# 之后 install.packages() 等联网操作会走代理

每月更新节点

Lark 上的 @AcrossGFWBot 每月会推送新的 vmess 链接。收到新链接后,使用服务器上的 update-v2ray 脚本一键更新:

# 一键更新(粘贴完整的 vmess:// 链接)
update-v2ray "vmess://eyJhZGQiOiJ4eHguLi4..."

# 脚本会自动完成:
#   1. 解析 vmess 链接
#   2. 备份旧配置
#   3. 生成新配置
#   4. 重启 V2Ray 服务
#   5. 测试连接

其他常用命令:

# 查看当前节点和服务状态
update-v2ray status

# 测试代理是否可用
update-v2ray test

# 手动管理服务
v2ray-control status    # 查看状态
v2ray-control restart   # 重启服务
v2ray-control logs      # 查看实时日志

注意事项

  • 代理仅在本机可用(监听 127.0.0.1),不会暴露到外网
  • proxy_on 只对当前终端会话生效,新开终端需要重新执行
  • 如果代理连不上,可能是节点过期了,请联系管理员更新或自行用 update-v2ray 更新
  • 不要滥用代理流量,仅用于科研相关的资源访问
  • 节点信息每月更新,过期后需要用 @AcrossGFWBot 推送的新链接重新配置

代理不工作时的排查

# 1. 检查服务是否在运行
v2ray-control status

# 2. 检查端口是否在监听
ss -tuln | grep -E '1080|1087'

# 3. 测试连接
update-v2ray test

# 4. 如果服务挂了,尝试修复
fix-v2ray

# 5. 如果节点过期,用新链接更新
update-v2ray "vmess://新链接..."

常用开发工具

工具 版本 用途
git 2.43.0 版本控制
gcc/g++ 13.3.0 C/C++ 编译器
cmake 3.28.3 构建工具
tmux 3.4 终端复用
vim 9.1 文本编辑器

单机与服务器协作开发

代码协作

小组在 176 这台机器上有自己的代码协作仓库(Gitea,访问地址请向管理员或在 Lark 群内获取),每个同学会拥有自己的 git 账号。建立仓库时请把所有者设置为 research,这样其它同学能够一起针对仓库进行迭代开发,最主要的协作者是导师。当协作者对仓库进行修改时,在 Lark 的 @全体 频道里面会有推送。

文件上传与下载

推荐优先使用 scp / rsync,也可以使用图形化工具(FileZilla、XFTP)。

# 本地上传目录到服务器
scp -r ./project 你的用户名@125.221.233.110:~/

# 服务器下载文件到本地
scp 你的用户名@125.221.233.110:~/result.csv ./

# 增量同步(推荐,适合大项目)
rsync -avzP ./project/ 你的用户名@125.221.233.110:~/project/

如果你更习惯图形化操作,可在 FileZilla/XFTP 中配置同样的主机、端口、用户名和密码后拖拽传输。

VS Code / Cursor 远程开发(推荐)

本地安装 Remote SSH 扩展后,可直接连接服务器并远程编辑代码,常见流程如下:

  1. 先在本地验证 SSH(ssh labssh lab-out
  2. 在 VS Code / Cursor 中使用 Remote SSH 连接
  3. 打开服务器上的项目目录
  4. 在远程终端中激活 conda 环境并运行代码
  5. 配合 Jupyter 或 Python 调试器进行远程调试

这种方式通常比纯命令行更高效,也更适合长期项目维护。

R 与 Python 混合开发

如果一个项目同时需要 R 的统计能力和 Python 的深度学习生态,推荐以下方式:

  • 在 R 中调用 Python:reticulate
  • 在 Python 中调用 R:rpy2
  • 在同一个 Notebook 中混写:Jupyter(分 cell 使用不同内核)

实践建议:把数据处理和模型训练拆成清晰的脚本阶段,减少跨语言状态耦合,便于复现和排错。


磁盘空间管理

服务器总共 1.8 TB,是大家共享的资源。请注意:

# 查看自己的目录占用
du -sh ~

# 查看磁盘总体使用
df -h /

清理建议:

  • 定期清理不用的 conda 环境:conda env remove -n 环境名
  • 清理 conda 缓存:conda clean --all
  • 清理 pip 缓存:pip cache purge
  • 训练完成后,删除不需要的 checkpoint 文件
  • 大型数据集用完及时删除或移到外部存储

常见问题

pip install 时报错 permission denied?

不要使用 sudo pip install。应该在自己的 conda 环境中安装:

conda activate myenv
pip install 包名

CUDA out of memory?

# 查看谁在用 GPU
nvidia-smi

# 如果是自己之前的僵尸进程,可以 kill 掉
kill -9 <PID>

R 的 library() 找不到包?

确认你用的是系统 R 而不是 conda 里的 R:

which R  # 应该是 /usr/bin/R

如果不是,先 conda deactivate 再运行 R。

在家连不上服务器?

校外需要走 frp 穿透,注意端口是 6001:

ssh 你的用户名@<公网IP> -p 6001

如果仍连不上,可能是公网服务器或 frpc 服务异常,请联系管理员。具体公网 IP 见 Lark 群或向管理员确认。

pip install 或 git clone 很慢/超时?

可能需要开代理:

proxy_on
pip install transformers
# 或
proxy_on
git clone https://github.com/xxx/yyy.git

如果 proxy_on 后仍不行,运行 update-v2ray test 检查代理是否可用,可能节点需要更新。

长时间任务怎么跑?

使用 tmux,防止 SSH 断开后任务终止:

tmux new -s training
python train.py
# Ctrl+B, D 分离
# 之后用 tmux attach -t training 重新连接

联系与协作

  • 有问题请先查阅本文档
  • 需要安装系统级软件或共享 R 包,请联系管理员 (chenx)
  • GPU 使用请在群里协调,避免冲突
  • 请保持良好的磁盘卫生,及时清理不用的数据和环境

最后更新:2026-04-10  |  维护人:chenx