在超算(HPC)环境中,登录节点(Login Node) 只能用来修改代码或简单编译,绝对不能直接运行深度学习训练。一旦你开始 import torch 并进行计算,就必须申请计算节点(Compute Node)。
结合你之前的报错和环境,这里是加入“申请节点”后的完整操作手册:
1. 交互式申请:边调边练 (srun)
如果你想在终端里像在自己电脑上一样运行代码,使用 srun 命令。这会直接把你带到一台带 GPU 的机器上。
执行命令:
|
|
- 参数说明:
-p指定分区,--gres=gpu:1申请一张卡,--pty bash表示进入该节点的交互式终端。 - 注意:进入节点后,必须重新执行
module load和conda activate(除非你已写进.bashrc)。
2. 离线提交:正式跑实验 (sbatch)
这是最推荐的方式。写一个脚本交给系统排队,跑完后结果会自动存入 .out 文件,你不用盯着屏幕。
创建一个文件,比如 run_job.sh:
|
|
提交任务:
|
|
3. 全流程避坑总结(终极版)
| 步骤 | 操作内容 | 关键点 |
|---|---|---|
| 1. 登录 | ssh user@cluster |
此时在 Login Node,别跑大程序! |
| 2. 申请 | srun (交互) 或 sbatch (离线) |
此时系统分配 Compute Node。 |
| 3. 环境 | module load cudnn/... |
解决你之前的 libcudnn.so.8 报错。 |
| 4. 激活 | conda activate my_gpu_env |
进入你的 Python 环境。 |
| 5. 运行 | python main.py |
此时程序在 GPU 上起飞。 |
4. 几个常用的“救命”命令
- 查看排队情况:
squeue或squeue -u <你的用户名> - 查看节点显卡状态:
sinfo(看看哪些节点是空的) - 取消错误的任务:
scancel <任务号> - 查看报错详情:
cat <任务号>.err(如果import torch还是报错,看这个文件)