GPU 使用¶
申请 GPU¶
使用 --gres=gpu:<数量> 申请 GPU:
srun --input=none -N1 -n1 --gres=gpu:1 nvidia-smi
批处理脚本中:
#SBATCH --gres=gpu:1
CUDA_VISIBLE_DEVICES¶
Slurm 会为作业设置 CUDA_VISIBLE_DEVICES。程序应只看到分配到的 GPU。
srun --input=none -N1 -n1 --gres=gpu:1 bash -lc 'echo $CUDA_VISIBLE_DEVICES'
PyTorch 单卡示例¶
srun --input=none -N1 -n1 --gres=gpu:1 python - <<'PY'
import torch
print(torch.cuda.is_available())
print(torch.cuda.get_device_name(0))
PY
多节点训练¶
多节点训练建议使用 torchrun、MPI、Ray 或 Dask,并通过 Slurm 分配节点。具体启动方式取决于训练框架。
基本原则:
不要在登录 shell 中直接长期占用 GPU。
不要假设多台机器的显存会自动合并成一块显存。
日志和 checkpoint 写到
/cluster/home/<username>或合适的共享目录。