Slurm兼容工具 SCC | 大装置帮助中心
跳到主要内容

Slurm兼容工具 SCC

Slurm兼容工具简介

Slurm兼容工具是一个预置在云开发机内的CLI工具,帮助您从云开发机内无需切换配置或产品,直接使用高性能AI算力池的相关功能。

Slurm兼容工具由SenseCore自主研发,服务于习惯Slurm的用户,保留了Slurm命令行原生的语言习惯和语法,帮助您以最熟悉的命令来在容器化的高性能AI算力池架构上实现多机多卡训练任务发送,并实现训练任务的查看、管理,以及高性能AI算力池资源的查看。


Slurm兼容工具版本记录

版本号更新内容更新时间
Slurm兼容工具 v2.9.6sacct、squeue 命令增加了对分页的支持,新增参数page-size和page-token;修改srun的example,适配API 升级v2.0版本的参数更改;2024-09-30
Slurm兼容工具 v2.9.5新增训练框架--training-framework 枚举值:pytorch、tensorflow、senseparrots(新增)、mpi(新增);
下线--mpi选项,通过training-framework设置mpi类型的job;
下线--distributed选项,通过--Node数量判断是否为分布式,1表示单机,其余为分布式;

下线--begin= <yyyy-mm-ddThh:mm>定时任务功能

2024-08-30
Slurm兼容工具 v2.9.2针对acp任务数据量大时,执行sacct查看任务无返回bug修复;开发机开多个窗口多进程执行查看不同工作空间任务,出现频繁登录要求bug修复; 并发跑scc命令执行报错bug修复;并发跑出现token过期现象bug修复;2024-06-30
Slurm兼容工具 v2.6srun提交任务时增加挂载路径校验;优化实时日志因EOF被中断问题;srun提交命令后任务执行完成增加输出jobid字段,并返回任务执行成功/失败状态码;为优化体验将workspace-id参数改名成workspace-name,语义不变;2024-01-30
Slurm兼容工具 v2.5.1适配高性能AI算力池接口调整2023-12-30
Slurm兼容工具 v2.4.2适配高性能AI算力池接口调整2023-11-15
Slurm兼容工具 v2.4 sinfo -o增加workspace-name展示,sacct和squeue -o增加提交人展示,srun\sacct\squeue\scontrol任务优先级支持2023-10-30
Slurm兼容工具 v2.3 修复已知bug2023-9-30
Slurm兼容工具 v2.2 sinfo增加资源使用情况展示,squeue和sacct增加workspace-id展示2023-8-30
Slurm兼容工具 v2.0 配合算力池2.0,支持工作空间、集群。2023-07-26
Slurm兼容工具 v1.1 修复已知问题,下载链接更新。2023-05-11
Slurm兼容工具 GA 修复已知问题,下载链接更新。2023-03-31
Slurm兼容工具 RC新增MIG任务的提交,优化算力池资源、任务查看的信息,优化镜像查看字段和交互方式。2023-02-28
Slurm兼容工具 Beta新增Slurm兼容工具自动版本检测、安装更新,支持通过Sbatch提交批处理任务,支持设置定时任务、对任务进行暂停、恢复等操作,支持查看所有历史提交信息。2022-12-31
Slurm兼容工具 Alpha2支持用户在云开发机内更新Slurm兼容工具,对srun、scontrol、squeue、sinfo等命令支持更多任务配字段配置。2022-10-31
Slurm兼容工具 Alpha支持用户直接使用slurm原生或类slurm的命令行,如srun、scontrol、scancel、squeue,sinfo等命令进行任务的发起和管理。2022-09-30

Slurm兼容工具使用指南

Slurm兼容工具使用详情如下:

1. 身份验证

当您在云开发机的终端内首次使用Slurm兼容工具时,我们将对您的身份进行二次验证,您只需要输入您的租户信息,用户名和密码,即可完成身份验证,并在一定时间内保持对您身份的认证结果,避免您重复验证信息。(需要注意的是,您必须是SenseCore的IAM账号才能使用此功能,租户账号无法使用该功能)

如下图 alt 属性文本

  • Tenant Name:将鼠标移动至SenseCore网站右上角的头像,信息卡片中的租户标识是您的Tenant Name。
  • User Name&Password:您的IAM账号名和密码。

2. 作业配置&发送

Slurm兼容工具支持您通过Srun、Sbatch来进行任务的配置和管理,您只需对任务的基本信息作基本的脚本式输入,我们便会为您自动封装解析,发送至高性能AI算力池进行训练。

自动预测功能:当您输入命令时,我们会根据您的历史提交任务,以及当前的环境变量信息,为您预测推荐相应的任务配置,您可以简单交互确认,无需多次重复输入framework字段。您也可以在提交任务配置时,选择跳过自动预测环节。

需要的配置和字段信息如下:

命令内容及配置参数缩写是否必填命令说明
srun [options] <usr-cmd>//提交一个任务到高性能AI算力池(2.0+版本为集群),任务命令放到最后
--job-name-j为任务取一个名字,如果没有指定,默认从用户命令中取
--partition-id-p第一次必填,之后非必填指定提交的高性能AI算力池(2.0+版本为集群ID)的ID,用户首次提交必需此字段,后续会沿用上一次的算力池ID,用户可通过sinfo来查看可用的高性能AI算力池的ID
--workspace-name/(仅限2.0+版本)指定任务所属工作空间,当前版本workspace-name跟之前workspace-id,语义一样
--framework-f指定训练任务的训练框架,可以是pytorch、tensorflow、senseparrots(新增)、mpi(新增)
--force-y指是否要跳过自动推测功能
--resource <xxx>-r指定任务所需的资源规格,仅支持高性能AI算力池当前支持的规格和配比,详见sinfo
--priority <xxx>/指定任务优先级,可选字段包括normal、high、highest,工作空间所有者以上权限支持配置high、highest优先级
--Node-n指以上资源规格的数量,如以上规格为8卡,n为2,则该任务总计16卡
--container-image=<xxx:tag>/指定任务所用的镜像名称,不填充时默认使用当前云开发机实例所使用的镜像。需要注意的是私有镜像需要指明命名空间,如:--container-image=/namespace/image_name:1.0
--container-mounts=<xxx:xxx,xxx:xxx>/指定任务挂载的共享存储路径,不填充时默认使用当前云开发机实例所挂载的所有共享存储路径。可以指定多个文件存储进行挂载。如:--container-mounts=volume1_id:path1,volume2_id:path2
--transom/(仅限2.0+版本) 开启训练任务容错功能,开启后我们会在任务运行前或出错时为您检测GPU以及通信是否征程
--restarttimes-max/(仅限2.0+版本)开启容错后,您可以配置允许执行容错的最大次数,可接受0-100的整数,默认值为3
--async-a异步提交任务,任务提交后cli退出,日志存储在当前/指定路径下
--output-o任务日志输出在指定路径下
--version-v查看srun的当前版本
--help-h查看srun的相关使用说明

Sbatch可配置的字段与Srun相同。需要注意的是,Sbatch需要在每一个配置的选项前输入#SBATCH 且需要换行输入。

3. 作业管理

Slurm兼容工具支持您通过Scontrol和Scancel对已创建的任务进行查看和管理,新版本支持用户通过Scontrol进行任务的状态变更,详细如下:

任务查看

命令内容及配置参数缩写命令说明
scontrol show job <jobid>/查看任务详细信息,返回默认结果
--format-o以json/yaml/xml格式输出至终端
scontrol show image/查看当前可用的镜像情况,包括镜像名称,镜像来源,镜像适配的资源类型,是否使用mpi,适用的框架等信息
scontrol show log/查看可用的训练日志
scontrol show -h/查看scontrol show相关的使用说明
--follow-f未结束的任务的日志以流的方式持续输出
--version-v查看scontrol的当前版本
--help-h查看scontrol的相关使用说明
--page-size/限制获取任务条数,范围:1~500,page size 默认值:10
--page-token/跳转到第几页,默认值:1

任务暂停/重启

命令内容及配置参数缩写命令说明
scontrol suspend/resume job <jobid>/暂停/重启指定ID的任务
--partition-id-p需要暂停的任务所在的高性能AI算力池(2.0+版本为集群ID)
--workspace-name/
scontrol suspend/resume -v/查看scontrol suspend/resume的当前版本
scontrol suspend/resume -h/查看scontrol suspend/resume相关的使用说明

注:只有运行中的任务可被暂停,只有被暂停的任务可被重启。重启后的任务将重新进入排队队列。

任务更新

命令内容及配置参数缩写命令说明
scontrol update job <jobid>/更新指定运行中的任务
--priority/需要更新的任务的优先级,如,指定--priority=high
--begin/需要更新的任务的定时时间,可指定现在=now,或指定时间,如=2023-01-02T15:04
--partition-id-p需要暂停的任务所在的高性能AI算力池(2.0+版本为集群ID)
--workspace-name/
scontrol update -v/查看scontrol update的当前版本
scontrol update -h/查看scontrol update相关的使用说明

任务取消

命令内容及配置参数缩写命令说明
scancel <jobid...>/指定任务id取消任务,可以传多个jobid,上限为30个。
--partition-id-p需要暂停的任务所在的高性能AI算力池(2.0+版本为集群ID)
--workspace-name/
--force-y确认多个任务批量取消
--version-v查看scancel的当前版本
--help-h查看scancel的相关说明

通过scancel删除任务,记录也会一并被删除,sacct也不会查询到该记录。

4. 高性能AI算力池(2.0为集群)查看

Slurm兼容工具支持您通过sinfo和squeue来查看当前高性能AI算力池的资源情况和排队任务情况,详细如下:

高性能AI算力池信息

命令内容及配置参数缩写命令说明
sinfo/用户有权限的集群和工作空间的信息,返回默认结果字段
--format-o指定查看的字段
--Node-N展示用户有权限的工作空间所关联的集群中的节点
--partition-id-P需要结合-N使用,展示指定集群的节点
--workspace-name/查看某一个工作空间关联的所有集群的信息以及这些集群的总容量、已用资源和剩余资源,包括GPU、vCPU和内存
--states-t需要结合-N使用,展示指定状态的节点,支持DISABLE ENABLED UNKNOW
--version-v查看sinfo的当前版本
--help-h查看sinfo的相关使用说明

sinfo的默认展示字段为

  • PARTITION_ID(有权限的工作空间所关联的所有集群ID)
  • PARTITION_NAME(有权限的工作空间所关联的所有集群名称)
  • WORKSPACE_ID(有权限的工作空间ID)
  • WORKSPACE_NAME(有权限的工作空间NAME)
  • RESOURCE(该集群可以支持的任务规格的ID,在提交训练任务时为resource字段赋值)
  • DESCRIPTION(该集群可以支持的任务规格的描述)

用户亦可对以上字段进行配置和指定查看。

排队情况

命令内容及配置参数缩写命令说明
squeue/该用户的所有Running/Pending/Suspended状态的任务,返回默认结果字段
--workspace-name/(仅限2.0+版本)任务是属于工作空间的,因此必须指定查看某一个工作空间下的任务的排队情况
--format-o指定查看的字段
--all-a指定所有状态的任务
--version-v查看squeue的当前版本
--help-h查看squeue的相关使用说明

squeue的默认展示字段为

  • Partition-id(高性能AI算力池ID,2.0+版本为集群ID)
  • WORKSPACE_NAME (工作空间名称)
  • User(用户名)
  • JobID(任务ID)
  • JobName(任务名称)
  • Resource(申请资源规格)
  • Node(节点数量)
  • State(任务状态)
  • FrameWork(任务框架类型)
  • SubmitTime(创建时间)
  • ElapsedTime(运行时长)
  • a(查看所有状态任务,对pending的任务做置顶排序)

用户亦可对以上字段进行配置和指定查看。

历史任务提交情况

命令内容及配置参数缩写命令说明
sacct/该用户的历史提交的最近50条记录,返回默认结果字段
--workspace-name/(仅限2.0+版本)任务是属于工作空间的,因此必须指定查看某一个工作空间下的任务的排队情况
--submit=<yyyy-mm-ddThh:mm>/查看指定时间以后提交的任务,如=2022-12-22T15:04
--format-o指定查看的字段
--version-v查看sacct的当前版本
--help-h查看sacct的相关使用说明

sacct的默认展示字段为

  • JobID(任务ID)
  • User(用户名)
  • Partition-id(高性能AI算力池ID,2.0+版本为集群ID)
  • WORKSPACE_NAME (工作空间名称)
  • JobName(任务名称)
  • Resource(申请资源规格)
  • Node(节点数量)
  • State(任务状态)
  • FrameWork(任务框架类型)
  • ElapsedTime(运行时长)
  • SubmitTime(创建时间)

5. 更新安装

若您使用的是新版本算力池产品,那么您需要升级SCC版本,以通过以下链接手动更新安装下载:https://scc.aoss.cn-sh-01.sensecoreapi-oss.cn/latest/install.sh

wget或curl均支持,如:

export SCC_ENV=cn
export SCC_ZONE=cn-sh-01a
curl https://scc.aoss.cn-sh-01.sensecoreapi-oss.cn/latest/install.sh | bash

export SCC_ENV=cn
export SCC_ZONE=cn-sh-01a
wget https://scc.aoss.cn-sh-01.sensecoreapi-oss.cn/latest/install.sh
chmod +x install.sh
./install.sh

当您成功完成安装更新后,应在终端内看到如下提示:

Installed successfully, use srun/sinfo/scancel/squeue/scontrol command to show more info.

并显示当前CLI的最新版本号。

Slurm兼容工具命令示例

当您刚进入云开发机使用Slurm兼容工具时,我们推荐您先使用sinfo,来查看确认当前可用的高性能AI算力池资源,以及相应的高性能AI算力池ID,再根据以上信息提交任务。

  • partition10 的集群和workspace10的工作空间中,运行一个名为 vpname1 的pytorch任务,使用mpi通信方式,使用默认资源规格,用在/training目录下的demo.py 文件训练,并设置batchsize=16,epoch=100
srun --partition-id partition10 --workspace-name workspace10 -j vpname1  -m -r --framework pytorch python training/demo.py --batch-size=16 --epoch=100
  • 一个分布式代码的示例:
srun -p b181a053-8c87-4e7d-a924-9bc0d1390ed5 \
--workspace-name workspace10 \
-j in1k -r 8xA100-80GB --framework pytorch \
--output out.log \
bash -c " \
conda init bash && \
conda activate cloud-ai-lab && \
PYTHONPATH="$(dirname $0)/.":$PYTHONPATH && \
python -m torch.distributed.run \
--nnodes=1 \
-node rank=$RANK \
--master addr=$MASTER_ADDR \
-nproc_per_node=$WORLD_SIZE \
--master_port=$MASTER_PORT \
$(dirname "$0")/tools/train.py \
$CONFIG \
--launcher pytorch "
  • 查看一个在工作空间workspace10,高性能AI算力池(集群) partition101 指定任务ID为 pt-2igx7wif 的任务情况并以json的格式返回,
show job pt-2igx7wif -p partition101 --workspace-nam workspace10 -o json
  • 查看命令说明(sinfo、sbatch、srun、scancel、squeue、sacct、scontrol)
man sinfo/sbatch/srun/scancel/sacct/squeue/scontrol

FAQ

Q1: Slurm兼容工具当前支持的资源规格是怎么样的,是否可以自己配置gpu、cpu和mem?

A1: 当前因算力池仅支持以固定的资源规格提交,slurm兼容工具的规格遵循算力池的定义,可以使用sinfo查看不同集群对应的可提交任务规格(resource字段)

用户可通过配置N(容器)的数量。

Q2: 为什么我在Slurm上用的脚本和代码无法直接复用?

A2: Slurm兼容工具尽可能从功能和命令语法层面来还原用户在Slurm上的使用体验。但因为SenseCore底层采用了基于k8s的容器化高性能AI算力池管理技术,与Slurm系统本身有根本性的差异,有些k8s必须配置的字段是在Slurm使用时无需输入的,也有部分Slurm系统可以直接获取到的配置需要在k8s的系统上用户指定输入。

比如您需要在任务的启动命令里输入一些虚拟环境的激活命令,并配置其他环境变量信息,Slurm兼容工具默认会获取云开发机当前的镜像、环境信息。

Q3: 我在开发机里安装了很多包和工具,为什么在送去高性能AI算力池训练的时候无法生效?

A3: 我们暂时无法实时获取您在开发机内做的所有变动并在高性能AI算力池发起任务的时候复现这些配置。 您可以在云开发机内完成环境的配置后,在云开发机的控制台发起对当前开发机的状态的保存。完成保存后,您将获得一个开发机镜像的快照,并且可在Slurm兼容工具内,通过scontrol查看镜像时,查看到这个您刚创建的镜像快照。 因此您可以后续在提交任务时,配置基于该镜像快照,向算力池提交任务,从而实现开发机的配置状态在算力池内进行复现的效果,减少环境对齐时的工作。


如果您关于Slurm兼容工具有任何疑问或建议,请欢迎随时联系我们。您的支持和反馈是我们进步最大的动力!