Slurm运行pytorch深度学习模型(小白版)

发布于:2024-05-08 ⋅ 阅读:(32) ⋅ 点赞:(0)
Slurm背景: 

Slurm 是一种开源的作业调度系统,它用于管理大型计算集群中的计算资源和作业。你可以把它想象成一个“交通管制员”,负责管理计算集群中的各种任务,确保它们按照用户设定的规则有序地执行。

Slurm 的主要功能包括:

  1. 作业调度和管理:Slurm 可以根据用户提交的作业需求,有效地分配计算资源,确保作业能够尽快地得到执行。

  2. 资源分配:它负责管理计算集群中的节点、核心和内存等资源,并根据作业需求动态地分配这些资源。

  3. 作业监控:Slurm 可以实时监控作业的执行情况,包括作业的状态、进度和资源使用情况等。

  4. 用户管理:它允许系统管理员管理用户和用户组,并为每个用户分配适当的权限和资源配额。

总的来说,Slurm 是一个帮助管理大型计算集群的工具,它能够有效地管理计算资源,提高系统的利用率,并为用户提供方便的作业提交和管理功能。

 一.如何运行及提交作业

- 本地创建好conda环境(假设conda名为myenv),并且保证conda已加入环境变量;

- 确定好自己可以访问分区名(假设分区名为ampere);

- 创建好自己想要运行的程序文件(假设为shell.py);

在自己要提交的项目文件夹下创建.sh脚本文件(假设脚本文件x.sh),在该脚本文件中编辑:

#!/bin/bash

#SBATCH --mem=200GB

#SBATCH --partition=ampere

#SBATCH --job-name=part1

#SBATCH --output=part1.out

#SBATCH --nodes=1

#SBATCH --tasks=1

#SBATCH --gres=gpu:1

#SBATCH --error=part1.err

source activate myenv

python shell.py

每次提交被视为一个job,--job-name为这次job的名称,--output指定这次运行结果的输出文件, --error指定这次运行如果出错,相关报错的输出文件。

--mem 为当前job指定内存空间

--nodes 为当前job指定运行节点个数

--tasks 为当前job指定运行任务个数

--gres 为当前job指定使用的gpu

二.slurm常用命令

查看某一分区(假设分区名称为name)作业运行情况

squeue --partition=name

查看某一用户(假设用户名称为user_name)的所有作业运行情况:

squeue --user=user_name

取消自己提交的某一作业(假设job id为7766)

scancel 7755