Skip to content

作业训练示例 ​

简介与架构 ​

炎扉集群的作业系统旨在提供灵活的集群资源调度能力,支持单机单卡、单机多卡、多机多卡等多种作业调度模式。在平台中,作业是用户自定义的、具有生命周期的进程,其特点是作业完成后进程自动结束并释放资源。

该作业系统包含 单机作业、多机作业 和 Slurm 作业。

  • 单机作业:运行在集群中的单个计算节点上,使用 Shell 命令进行调度。
  • 多机作业:分为 Kubernetes 多机作业 和基于 Determined 调度的多机作业。可利用 PyTorch 的 DDP、Accelerate、DeepSpeed、Horovod 等框架作为分布式底层调度器,执行深度学习 AI 训练任务。
  • Slurm 作业:为习惯使用 Slurm 集群的用户提供的一种特殊的作业模式。

如图所示是作业的整体调度逻辑:

工作流程与优势 ​

工作流程 ​

用户只需完成作业代码工程和数据集的准备(可通过文件管理系统上传),并选择合适的分布式作业镜像。

  • 启动容器:平台会在宿主机上启动相应的作业容器。
  • 数据挂载:数据集通过挂载方式映射到作业容器内部。
  • 资源回收:作业完成后,容器自动回收,资源自动释放。
  • 结果查看:用户可在 Web 页面进行模型权重的下载与训练日志的查看。

平台优势 ​

使用平台的作业系统能提供一套灵活的资源调度方式,实现了相关资源的动态申请与释放,并适应不同的用户群体。

平台主要特性包括:

  • 简化环境配置:集成了最先进的多机多卡训练技术,提供大量分布式作业镜像,减少用户配置深度学习环境的时间。
  • 模板工程:提供作业的模板工程,用户只需实现对应函数,无需进行 local_rank、rank、通信库等分布式框架配置即可进行多机作业。
  • 平台兼容性:支持 PyTorch、Tensorflow 等多个深度学习平台,内置 MMDetection 目标检测框架。
  • 提高研发效率:提供训练过程可视化 (TensorBoard)、日志管理、权重管理、超参数搜索等高级功能。
  • Slurm 适配:提供基于 Slurm 的资源调度方式,基于分层管理与插件化设计,能够灵活适配不同的计算需求与调度策略,适用于 HPC 环境。

类型详细介绍 ​

炎扉集群的单机作业和多机作业结构如图:

单机作业 ​

单机作业由 Determined 框架提供。

  • 基础用户:对于不了解 Determined 框架的用户,只需输入 entrypoints(需要运行的命令),并选择合适的资源(数据挂载、镜像、GPU等)即可。
  • 高级用户:对于了解 Determined 的用户,可以自定义代码,通过实现对应的继承类,运行如下命令:
    python3 -m determined.launch.torch_distributed --trial model_def:MyTrial

多机作业 ​

多机作业分为基于 Kubernetes 的多机作业和基于 Determined 的多机作业。

  • 调度原则:多机作业以整台机器为调度单位,即运行作业的节点上不能有其他类型的资源占用(容器或作业)。
  • Kubernetes 多机作业:用户需要了解至少一种多机多卡的启动方式,例如 torchrun、deepspeed、accelerate 等。
  • Determined 多机作业:请参考平台提供的相关文档。

Slurm 作业 ​

Slurm 作业基于开源的 Slurm 集群资源管理与作业调度系统。用户需要对 Slurm 有一定的了解。

快速入门 ​

作业类型适用人群/特点文档参考
单机作业简单易用,新手推荐。这里
Kubernetes 多机作业适合了解分布式启动命令(如 torchrun)的用户。这里
Determined 多机作业对 Kubernetes 作业的高级封装,提供超参数搜索、断点训练、参数可视化等高级功能,需要修改代码继承基类,有一定门槛。这里
Slurm 作业适合熟悉 Slurm 集群资源调度系统的用户。这里