作业训练示例
简介与架构
炎扉集群的作业系统旨在提供灵活的集群资源调度能力,支持单机单卡、单机多卡、多机多卡等多种作业调度模式。在平台中,作业是用户自定义的、具有生命周期的进程,其特点是作业完成后进程自动结束并释放资源。
该作业系统包含 单机作业、多机作业 和 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 集群资源调度系统的用户。 | 这里 |

