首页 > 解决方案 > 使用 SLURM 进行单 GPU Pytorch 训练 - 如何设置“ntasks-per-node”?

问题描述

我想通过 SLURM 在服务器上使用单个 GPU 对变压器模型进行一些简单的微调。我以前没有使用过 SLURM,而且我不是计算机科学家,所以我对该领域的理解有点有限。我做了一些研究并创建了下面的脚本。

你能否确认它是否适合目的?

据我了解,一个节点对应一台计算机,“--gres=gpu:1”将使用单个gpu。我唯一不清楚的是“ntasks-per-node”。我理解它的方式,因为我将运行单个python脚本,这可以等于1。正确吗?

#! /bin/bash

#SBATCH --job-name 'SQuAD'
#SBATCH --output squad_job%J.out
#SBATCH --error squad_error%J.err
#SBATCH --nodes=1
#SBATCH --gres=gpu:1
#SBATCH --ntasks-per-node=1
#SBATCH --partition=normal
#SBATCH --time=72:00:00

python3 fine_tune_squad.py

标签: pythonpytorchslurm

解决方案


是的,它将请求 1 个 GPU 来运行任务。如文档中所述:

默认是每个节点一个任务 [...]

因此,默认值--ntasks-per-node已经是1,这意味着您甚至不需要定义它。事实上,甚至--nodes有一个默认值1。尽管如此,有些人认为明确定义它们以避免问题是一种很好的做法,所以我会像你一样留下它们。


推荐阅读