Job

TensorStack AI 平台定义了一系列 CRD(称为 Job)以支持批处理(Batch Processing)计算任务,特别是 AI 领域的大规模分布式并行训练类型性质的计算。

t9k-job
图 1:Job 系统的基本原理。用户提交 Job 的定义;Job Controller 1)分析 Job 定义;2)请求计算资源(CPU、RAM、GPU、高速网络、存储...);3)启动、监控、暂停、继续 、终止、调试 Job。

Job 类型

为了支持不同框架的计算任务,TensorStack 提供了一系列 Job:

  • TrainingJob:一类使用分布式计算框架进行机器学习的 T9k Job。
  • MPIJob:MPIJob 使用户能够方便地在集群环境中使用 OpenMPI 进行并行计算。
  • BeamJob:用于在集群中通过 Apache Beam Python SDK 运行分布式计算任务,并支持多种底层计算引擎(例如 Apache Spark, Apache Flink)。
  • GenericJob:一个通用的 T9k Job 资源,支持各种并行计算场景及 T9k 高级调度策略。
    • GenericJob 十分灵活,用户可以使用 GenericJob 实现 MPIJob、PyTorchTrainingJob 等特定功能的 T9k Job;但其自动化程度低,需要手工设置很多参数。
    • GenericJob 的目的是提供一个总是可行的 “通用” 机制,以支持一些其他特定功能 T9k Job 还未支持的新的计算场景。

运行模式

T9k Job 支持多种运行模式(spec.runMode):

  • 立即(Immediate)模式:默认、基本模式。Job 被分配资源后,将会立即开始运行。
  • 调试(Debug)模式:帮助用户创建 Job 环境,但不立即执行,用户可以在训练环境中手动启动 Job 或者运行调试代码。
  • 暂停(Pause)模式:暂停执行 Job;在一些场合下(如集群资源不足),用户可随时暂停 Job,待条件允许再继续执行 Job。
  • 弹性(Elastic)伸缩模式:可以动态调整 Job 规模。

以下是各类型 Job 支持的模式列表:

Job 类型立即模式调试模式暂停模式弹性伸缩模式
GenricJob***
PyTorchTrainingJob****
TensorFlowTrainingJob***
XGBoostTrainingJob***
MPIJob***
ColossalAIJob***
DeepSpeedJob****
BeamJob*

各种模式的具体使用方式,请参考对应 Job 类型的文档。