超算平台 GPU 进阶使用指南(5090/A100 多卡实测版)

记录当前超算平台上 RTX 5090/4090/3090 及 A100 GPU 的申请技巧,并分享基于 Zsh 与 Mamba 的秒开优化工作流。

在超算(HPC)环境中,登录节点(Login Node) 只能用来修改代码或简单编译,绝对不能直接运行深度学习训练。一旦你开始 import torch 并进行计算,就必须申请计算节点(Compute Node)

提示:这篇笔记记录了在当前超算平台上使用 GPU 的最新命令与环境优化方案。 目前平台不仅拥有 A100 40G,还支持 RTX 5090 / 4090 / 3090 等顶级算力卡。 经过 I/O 优化实测,目前最丝滑的交互式进入方式为:

1
srun --gres=gpu:1 -p gpu_5090 --pty zsh

一、平台算力矩阵

根据当前实际测试,该平台具有以下特点与资源:

  1. 多层级 GPU 资源:支持 gpu_5090gpu_4090gpu_3090 以及 A100 等多种算力节点。
  2. 需要指定分区:针对特定显卡,通过 -p 参数指定队列名称能更精准地获取资源。
  3. 禁止手动指定内存:系统会自动分配内存,不允许手动写 --mem 参数,否则会报错。
  4. 共享存储 I/O 瓶颈:由于使用网络文件系统 (NFS),在计算节点初始化大型 Python 环境会非常慢,推荐使用 按需懒加载 策略(见下文)。

二、交互式申请 GPU (Zsh 秒开流)

交互式申请非常适合:调试代码、测试环境、检查 CUDA/PyTorch 以及 小规模实验

1. 精准申请指定显卡

我们现在推荐直接以 zsh 启动,获取最佳的终端体验:

  • 申请 1 张 RTX 5090srun --gres=gpu:1 -p gpu_5090 --pty zsh
  • 申请 2 张 A100srun --gres=gpu:2 -p a100 --pty zsh (此处分区名请根据实际情况替换)
  • 增加 CPU 核心数srun --gres=gpu:1 -p gpu_5090 --cpus-per-task=8 --pty zsh

2. 💡 进阶技巧:配置快捷命令 (Alias)

为了避免每次手敲冗长的申请命令,建议在 ~/.zshrc 中配置快捷键:

1
2
alias run5090='srun --gres=gpu:1 -p gpu_5090 --pty zsh'
alias runA100='srun --gres=gpu:2 --pty zsh'

配置好后,只需在终端输入 run5090 即可一键排队并跳入计算节点。


三、检查 GPU 状态

成功申请并进入节点后,终端提示符会发生改变。建议第一时间运行:

1
nvidia-smi

实测输出应包含类似如下信息,确认你抽到了想要的“盲盒”:

  • GPU 0: NVIDIA GeForce RTX 5090 (高达 32GB+ 显存,极速体验)
  • GPU 1: NVIDIA A100-PCIE-40GB

四、超算环境加载(极致优化版)

超算环境的软件(如 Miniforge / Conda)如果设置在终端启动时自动加载,会因为网络硬盘 I/O 导致严重的卡顿。

最佳实践:把环境初始化封装成一个函数,用到的时候再加载(懒加载)。

在你的 ~/.zshrc 中添加以下快捷键(假设你的 Mamba 装在 /data/apps/miniforge3/26.1):

1
2
# 快捷键 dl (Deep Learning): 瞬间初始化 Mamba 环境
alias dl='module load miniforge3/26.1 > /dev/null 2>&1 && eval "$(mamba shell hook --shell zsh)" && echo "✅ 环境初始化完成,现在可以 activate 了"'

五、完整交互式工作流示例

适合在正式跑 WSI 处理或训练模型前,先检查环境和代码是否能跑通:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# 1. 申请计算节点并进入
run5090

# 2. 按需加载底层环境 (极速秒开)
dl

# 3. 激活具体的深度学习环境
mamba activate pytorch

# 4. 检查环境与 GPU
nvidia-smi
python -c "import torch; print('CUDA 可用:', torch.cuda.is_available())"

# 5. 运行训练脚本
python train_mclam.py

测试完毕后,输入 exit 即可退出计算节点并释放 GPU。


六、批处理提交任务 (sbatch)

如果是正式训练(比如跑几十个 Epoch 的生存分析模型),绝对不建议一直开着交互式终端。应写成脚本后用 sbatch 提交后台运行。

1. 新建任务脚本 (train_5090.sh)

编写后台脚本时,记得使用 mamba 专用的 bash 钩子来初始化环境:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/bin/bash
#SBATCH -J train_mclam
#SBATCH -p gpu_5090
#SBATCH --gres=gpu:1
#SBATCH -o %j.out
#SBATCH -e %j.err

# 清理并加载超算基础模块
module purge
source /etc/profile.d/modules.sh
module load miniforge3/26.1

# 关键:初始化 Mamba 后台运行环境
eval "$(mamba shell hook --shell bash)"

# 激活深度学习环境
mamba activate pytorch

# 打印节点信息记录日志
echo "当前运行节点: $SLURMD_NODENAME"
nvidia-smi

# 执行训练任务
python train_mclam.py

2. 提交与管理任务

  • 提交任务sbatch train_5090.sh (会返回一个任务号,如 280708)
  • 查看个人任务squeue -u $USER (或使用配置好的 sq 别名)
  • 取消某个任务scancel 280708

3. 查看后台日志

任务运行时的输出会重定向到脚本中定义的 .out.err 文件:

1
2
3
4
5
# 实时查看标准输出日志
tail -f 280708.out

# 实时查看报错日志
tail -f 280708.err

七、总结

结合 5090 的极速算力和 Zsh 的按需加载,目前的超算工作流可以总结为:

  1. 调试阶段run5090 秒进节点 -> dl 初始化环境 -> mamba activate pytorch 跑通流程 -> exit
  2. 正式训练:编写标准 sbatch 脚本,将任务扔到后台,使用 tail -f 喝茶看日志。
使用 Hugo 构建
主题 StackJimmy 设计