运行 PyTorchJob

运行 Kueue 调度的 PyTorchJob

此页面展示了在运行 训练操作符 PyTorchJob 时如何利用 Kueue 的调度和资源管理功能。

本指南适用于对 Kueue 有基本了解的 批处理用户。有关更多信息,请参阅 Kueue 概述

开始之前

查看 管理集群配额 以了解初始集群设置的详细信息。

查看 训练操作符安装指南

请注意,最低要求的训练操作符版本为 v1.7.0。

您可以 修改已安装版本的 kueue 配置,将 PyTorchJob 包含在允许的工作负载中。

PyTorchJob 定义

a. 队列选择

目标 本地队列 应在 PyTorchJob 配置的 metadata.labels 部分中指定。

metadata:
  labels:
    kueue.x-k8s.io/queue-name: user-queue

b. 在 PyTorchJob 中选择性设置暂停字段

spec:
  runPolicy:
    suspend: true

默认情况下,Kueue 将通过 webhook 将 suspend 设置为 true,并在 PyTorchJob 被接纳时取消暂停。

示例 PyTorchJob

此示例基于 https://github.com/kubeflow/training-operator/blob/855e0960668b34992ba4e1fd5914a08a3362cfb1/examples/pytorch/simple.yaml

apiVersion: kubeflow.org/v1
kind: PyTorchJob
metadata:
  name: pytorch-simple
  namespace: default
  labels:
    kueue.x-k8s.io/queue-name: user-queue
spec:
  pytorchReplicaSpecs:
    Master:
      replicas: 1
      restartPolicy: OnFailure
      template:
        spec:
          containers:
            - name: pytorch
              image: docker.io/kubeflowkatib/pytorch-mnist-cpu:v1beta1-21320b6
#              If you have gpu, pytorch-mnist-gpu would be helpful. pytorch-mnist-gpu is approximately 22GB
#              image: docker.io/kubeflowkatib/pytorch-mnist-cpu:latest
              imagePullPolicy: Always
              command:
                - "python3"
                - "/opt/pytorch-mnist/mnist.py"
                - "--epochs=1"
              resources:
                requests:
                  cpu: 1
                  memory: "200Mi"
    Worker:
      replicas: 1
      restartPolicy: OnFailure
      template:
        spec:
          containers:
            - name: pytorch
              image: docker.io/kubeflowkatib/pytorch-mnist-cpu:v1beta1-21320b6
#              If you have gpu, pytorch-mnist-gpu would be helpful. pytorch-mnist-gpu is approximately 22GB
#              image: docker.io/kubeflowkatib/pytorch-mnist-cpu:latest
              imagePullPolicy: Always
              command:
                - "python3"
                - "/opt/pytorch-mnist/mnist.py"
                - "--epochs=1"
              resources:
                requests:
                  cpu: 1
                  memory: "200Mi"