在超算(HPC)环境中,登录节点(Login Node) 只能用来修改代码或简单编译,绝对不能直接运行深度学习训练。一旦你开始 import torch 并进行计算,就必须申请计算节点(Compute Node)。
提示:这篇笔记记录了在当前超算平台上使用 GPU 的最新命令与环境优化方案。 目前平台不仅拥有 A100 40G,还支持 RTX 5090 / 4090 / 3090 等顶级算力卡。 经过 I/O 优化实测,目前最丝滑的交互式进入方式为:
1srun --gres=gpu:1 -p gpu_5090 --pty zsh
一、平台算力矩阵
根据当前实际测试,该平台具有以下特点与资源:
- 多层级 GPU 资源:支持
gpu_5090、gpu_4090、gpu_3090以及A100等多种算力节点。 - 需要指定分区:针对特定显卡,通过
-p参数指定队列名称能更精准地获取资源。 - 禁止手动指定内存:系统会自动分配内存,不允许手动写
--mem参数,否则会报错。 - 共享存储 I/O 瓶颈:由于使用网络文件系统 (NFS),在计算节点初始化大型 Python 环境会非常慢,推荐使用 按需懒加载 策略(见下文)。
二、交互式申请 GPU (Zsh 秒开流)
交互式申请非常适合:调试代码、测试环境、检查 CUDA/PyTorch 以及 小规模实验。
1. 精准申请指定显卡
我们现在推荐直接以 zsh 启动,获取最佳的终端体验:
- 申请 1 张 RTX 5090:
srun --gres=gpu:1 -p gpu_5090 --pty zsh - 申请 2 张 A100:
srun --gres=gpu:2 -p a100 --pty zsh(此处分区名请根据实际情况替换) - 增加 CPU 核心数:
srun --gres=gpu:1 -p gpu_5090 --cpus-per-task=8 --pty zsh
2. 💡 进阶技巧:配置快捷命令 (Alias)
为了避免每次手敲冗长的申请命令,建议在 ~/.zshrc 中配置快捷键:
|
|
配置好后,只需在终端输入 run5090 即可一键排队并跳入计算节点。
三、检查 GPU 状态
成功申请并进入节点后,终端提示符会发生改变。建议第一时间运行:
|
|
实测输出应包含类似如下信息,确认你抽到了想要的“盲盒”:
GPU 0: NVIDIA GeForce RTX 5090(高达 32GB+ 显存,极速体验)GPU 1: NVIDIA A100-PCIE-40GB
四、超算环境加载(极致优化版)
超算环境的软件(如 Miniforge / Conda)如果设置在终端启动时自动加载,会因为网络硬盘 I/O 导致严重的卡顿。
最佳实践:把环境初始化封装成一个函数,用到的时候再加载(懒加载)。
在你的 ~/.zshrc 中添加以下快捷键(假设你的 Mamba 装在 /data/apps/miniforge3/26.1):
|
|
五、完整交互式工作流示例
适合在正式跑 WSI 处理或训练模型前,先检查环境和代码是否能跑通:
|
|
测试完毕后,输入 exit 即可退出计算节点并释放 GPU。
六、批处理提交任务 (sbatch)
如果是正式训练(比如跑几十个 Epoch 的生存分析模型),绝对不建议一直开着交互式终端。应写成脚本后用 sbatch 提交后台运行。
1. 新建任务脚本 (train_5090.sh)
编写后台脚本时,记得使用 mamba 专用的 bash 钩子来初始化环境:
|
|
2. 提交与管理任务
- 提交任务:
sbatch train_5090.sh(会返回一个任务号,如 280708) - 查看个人任务:
squeue -u $USER(或使用配置好的sq别名) - 取消某个任务:
scancel 280708
3. 查看后台日志
任务运行时的输出会重定向到脚本中定义的 .out 和 .err 文件:
|
|
七、总结
结合 5090 的极速算力和 Zsh 的按需加载,目前的超算工作流可以总结为:
- 调试阶段:
run5090秒进节点 ->dl初始化环境 ->mamba activate pytorch跑通流程 ->exit。 - 正式训练:编写标准
sbatch脚本,将任务扔到后台,使用tail -f喝茶看日志。