Volcano

Obtaining Cluster Scheduling Component Information

  • The VolcanoJob API is provided by the open-source component Volcano. MindCluster has modified the Annotations field of the VolcanoJob API, as shown in Table 1. Other APIs remain unchanged. For details about open-source Volcano, see the Volcano open-source community.

    Table 1 Annotations

    Parameter Description Value
    distributed Written and used by Resilience Controller to mark whether a job is a distributed task. true
  • The following describes the interfaces exposed by the volcano-scheduler and volcano-controller component Pods (defined by the open-source components themselves).

    Table 2 List of interfaces exposed by MindCluster Volcano

    Access Method Protocol Method Description Component
    http://podIP:11251/healthz http Get Health check port volcano-controller
    http://podIP:11251/healthz http Get Health check port volcano-scheduler
    http://volcano-scheduler-serviceIP:8080/metrics http Get Prometheus metrics collection port volcano-scheduler

    Note

    • To ensure normal access to the Volcano health check port and the Prometheus metrics collection port, set the --enable-healthz and --enable-metrics parameters to true in the YAML file when installing Volcano. For details about how to modify these parameters, see "Step 7" in Installing Volcano.
    • The HUAWEI CLOUD CCI service provides more detailed VolcanoJob instructions. For details, see the "Creating a VolcanoJob" section in Cloud Container Instance.

PodGroup

Table 1 PodGroup labels used by cluster scheduling components

Name Description Value Component
ring-controller.atlas Identifies Atlas Pods
  • ascend-npu
  • ascend-910
  • ascend-{xxx}b
Ascend Device Plugin, Ascend Operator, Volcano
fault-scheduling Rescheduling upon job faults grace, force, off Volcano, Resilience Controller
elastic-scheduling Job elastic scheduling on Volcano, Resilience Controller
fault-retry-times Number of times a job can be rescheduled when a service plane fault occurs 0-100 Volcano, Ascend Operator
tor-affinity Switch affinity policy
  • normal-schema
  • large-model-schema
  • null
Volcano
npu-310-strategy Marks the scheduling policy for inference servers (with Atlas 300I inference cards)
  • card
  • chip
Volcano
pod-rescheduling Enable Pod-level rescheduling.
  • on: Enable Pod-level rescheduling
  • Other values or if this field is not used: Disable Pod-level rescheduling
Volcano
process-recover-enable Enable process-level rescheduling.
  • on: Enable process-level rescheduling
  • Other values or if this field is not used: Disable process-level rescheduling
Volcano
subHealthyStrategy Sub-health handling policy.
  • ignore: Ignore the sub-healthy node. Subsequent jobs will not prioritize this node in affinity scheduling.
  • graceExit: Do not use the sub-healthy node. Save the checkpoint file and then perform rescheduling. Subsequent jobs will not be scheduled to this node.
  • forceExit: Do not use the sub-healthy node. Exit the jobs without saving and perform rescheduling. Subsequent jobs will not be scheduled to this node.
  • hotSwitch: Perform a hot switching. After the backup Pod is started, pause the training jobs and use a new node to restart training.
Volcano
huawei.com/scheduler.softShareDev.aicoreQuota Percentage of AICore requested by the soft partitioning job. [1, 100] Volcano
huawei.com/scheduler.softShareDev.hbmQuota Amount of high-bandwidth memory requested by the soft partitioning job.

[1, maxHBM]

maxHBM is the HBM value in HBM-Usage(MB) queried using the npu-smi info command.

Volcano
huawei.com/scheduler.softShareDev.policy Policy for the soft partitioning job.
  • fixed-share
  • elastic
  • best-effort
Volcano

Table 2 PodGroup annotations used by cluster scheduling components

Name

Description

Value

Component

sp-block

Specifies the number of chips in a logical SuperPoD.

Integer

Volcano, Ascend Operator

huawei.com/schedule_policy

Specifies the scheduling policy.

Currently supports the configurations in Table 3.

Volcano

sp-fit

SuperPoD scheduling policy.

  • idlest: Logical SuperPoDs are scheduled to more idle physical SuperPoDs.
  • Non-idlest: Logical SuperPoDs preferentially fill up physical SuperPoDs.

Volcano

huawei.com/schedule_minAvailable

Minimum number of replicas required for a job to be scheduled.

Integer

Volcano

huawei.com/recover_policy_path

Job rescheduling policy.

pod: Only supports Pod-level rescheduling, and will not escalate to the Job level. (When using vcjob, you need to configure this policy: policies: -event:PodFailed -action:RestartTask)

Volcano

huawei.com/schedule_enable_dequeue

Enables or disables the job dequeue function (transitioning from Inqueue to Pending state). Manual configuration is required.

  • "on": Enable
  • Other values: Disable

If not configured, it is disabled by default.

Volcano

huawei.com/schedule_dequeue_frequency

Records the number of times a job is dequeued. Automatically updated by Volcano.

This value increments by 1 each time the job is dequeued.

This value is deleted when the job is not in the Inqueue or Pending state.

Volcano

huawei.com/schedule_enqueue_time

Records the time when a job is enqueued (transitioning from Pending to Inqueue state). Automatically updated by Volcano.

Millisecond-level timestamp.

  • If a job has been enqueued for more than 5 minutes and the dequeue function is enabled, when other jobs need to be enqueued, this job will be dequeued to release resources so that other jobs can be enqueued.
  • This value is deleted when the job is not in the Inqueue state.

Volcano

huawei.com/affinity-config

Configures the affinity hierarchy for multi-level scheduling of jobs.

level1=x,level2=y,...

Where x, y... are the subjob sizes for the corresponding network hierarchy.

The format must be a concatenation of strings in the format leveli=ni, separated by commas. Here, i is the network hierarchy sequence number, and ni is the number of replicas for the subjob at that network hierarchy. For example, for a job with a total of 8 replicas, "level1=2,level2=4" means that every 2 Pods in the job are assigned to nodes with the same level1 label, and every 4 Pods are assigned to nodes with the same level2 label.

The network hierarchy configuration must meet the following requirements:

  • When the job hierarchy has more than 1 level, the value of level n must be an integer multiple of n-1.
  • The total number of job replicas must be an integer multiple of all hierarchy levels.
  • The job hierarchy configuration must start from level1 and be consecutive in ascending order.

Volcano

Table 3 huawei.com/schedule_policy configurations

Configuration Description
chip4-node8 1 node with 8 chips, every 4 chips form an interconnect ring. For example, Atlas 800 training server (model 9000)/Atlas 800 training server (model 9010)/Atlas 350 PCIe card has 8 chips total, every 4 chips are connected via UB mezzanine.
chip1-node2 1 node with 2 chips. For example, the Atlas 300T training card supports up to 1 chip, and 1 node supports up to 2 chips.
chip4-node4 1 node with 4 chips, forming 1 interconnect ring, for example, Atlas 800 training server (models 9000, 9010) half-configuration chip scenario.
chip8-node8 1 node with 8 chips. All 8 chips form 1 interconnect ring. For example, Atlas 800T A2 training server/Atlas 850 series hardware products.
chip8-node16 1 node with 16 chips, every 8 chips on 1 interconnect ring. For example, Atlas 200T A2 Box16 heterogeneous subrack.
chip2-node8 1 node with 8 chips, every 2 chips on 1 interconnect ring.
chip2-node16 1 node with 16 chips, every 2 chips on 1 interconnect ring. For example, Atlas 800T A3 SuperPoD.
chip2-node8-sp 1 node with 8 chips, every 2 chips on 1 interconnect ring. Multiple servers form a SuperPoD, for example, Atlas 9000 A3 SuperPoD cluster computing system.
chip2-node16-sp 1 node with 16 chips, every 2 chip on 1 interconnect ring. Multiple servers form a SuperPoD, for example, Atlas 900 A3 SuperPoD.
chip4-node16 1 node with 16 chips, every 4 chips on 1 interconnect ring. For example, Atlas 350 PCIe card with 16 chips total, every 4 chips connected via UB mezzanine.
chip1-node8 1 node with 8 chips, no interconnect between chips. For example, Atlas 350 PCIe card with 8 chips total, no interconnect between chips.
chip1-node16 1 node with 16 chips, no interconnect between chips. For example, Atlas 350 PCIe card with 16 chips total, no interconnect between chips.
chip8-node8-sp 1 node with 8 chips, all 8 chips on 1 interconnect ring. Multiple servers form a SuperPoD, for example, Atlas 850 SuperPoD.
chip8-node8-ra64-sp 1 node with 8 chips, all 8 chips on 1 interconnect ring, 64 nodes form a computing cabinet. Multiple cabinets form a SuperPoD, for example, Atlas 950 SuperPoD.
chip1-softShareDev Dedicated scheduling policy for soft partition-based virtualization.
multilevel Used in multi-level scheduling scenarios. For details on how to use multi-level scheduling, see Multi-level Scheduling.

Pod

Table 1 Pod labels used by cluster scheduling components

Name

Description

Value

Component

ring-controller.atlas

Identifies the Atlas Pod

  • ascend-910
  • ascend-{xxx}b
  • huawei.com/npu

Ascend Device Plugin, Ascend Operator, Volcano

fault-scheduling

Switch for job rescheduling upon faults

grace, force, off

Volcano, Resilience Controller

elastic-scheduling

Switch for job elastic scheduling

on

Resilience Controller, Volcano

fault-retry-times

Number of times a job can be rescheduled when a service-plane fault occurs

0-100

Volcano, Ascend Operator

tor-affinity

Switch affinity policy

  • normal-schema
  • large-model-schema
  • null

Volcano

npu-310-strategy

Marks the scheduling policy for the inference server (with Atlas 300I inference card)

  • card
  • chip

Volcano

pod-rescheduling

Whether to enable Pod-level rescheduling.

  • on: Enable Pod-level rescheduling
  • Other values or when this field is not used: Disable Pod-level rescheduling

Volcano

process-recover-enable

Whether to enable process-level rescheduling.

  • on: Enable process-level rescheduling
  • Other values or when this field is not used: Disable process-level rescheduling

Volcano

subHealthyStrategy

Sub-health handling strategy

  • ignore: Ignore the sub-healthy node, and subsequent jobs will not prioritize this node in affinity scheduling.
  • graceExit: Do not use the sub-healthy node, save the dying gasp CKPT file, and then perform rescheduling. Subsequent jobs will not be scheduled to this node.
  • forceExit: Do not use the sub-healthy node, exit the job directly without saving, and perform rescheduling. Subsequent jobs will not be scheduled to this node.
  • hotSwitch: Perform a hot switching, start the backup Pod, pause the training job, and use a new node to restart the training.

Volcano

Table 2 Pod annotations used by cluster scheduling components

Name

Description

Value

Component

sp-block

Specifies the number of chips in a logical SuperPoD.

Integer

Volcano, Ascend Operator

huawei.com/schedule_policy

Specifies the scheduling policy.

Currently supports the configurations in Table 3.

Volcano

sp-fit

SuperPoD scheduling policy.

  • idlest: The logical SuperPoD is scheduled to a more idle physical SuperPoD.
  • Non-idlest: The logical SuperPoD preferentially fills up a physical SuperPoD.

Volcano

huawei.com/schedule_minAvailable

The minimum number of replicas required for the job to be scheduled.

Integer

Volcano

huawei.com/recover_policy_path

Job rescheduling policy.

pod: Only Pod-level rescheduling is supported, and it will not be escalated to the Job level. (When using vcjob, you need to configure this policy: policies: -event:PodFailed -action:RestartTask)

Volcano

huawei.com/affinity-config

Configures the affinity hierarchy for multi-level scheduling of the job.

level1=x,level2=y,...

Where x, y... are the subjob sizes at the corresponding network hierarchy.

The format must be a concatenation of strings in the format leveli=ni, separated by commas. Here, i is the network hierarchy sequence number, and ni is the number of replicas for the subjob at that network hierarchy. For example, for a job with a total of 8 replicas, "level1=2,level2=4" means that every 2 Pods in the job are assigned to nodes with the same level1 label, and every 4 Pods are assigned to nodes with the same level2 label.

The network hierarchy configuration must meet the following requirements:

  • When the job hierarchy has more than 1 level, the value of level n must be an integer multiple of n-1.
  • The total number of job replicas must be an integer multiple of all hierarchy levels.
  • The job hierarchy configuration must start from level1 and be consecutive from small to large.

Volcano

huawei.com/skip-ascend-plugin

Allows some special jobs (such as jobs that do not require NPU resources) to bypass the default check logic of Ascend-for-volcano.

Not set or set to "enabled"

Volcano

Table 3 PodGroup Status.Conditions used by cluster scheduling components

Type

Status

Reason

Message

Unschedulable

True

JobEnqueueFailed

The job failed to enqueue due to insufficient cluster NPU resources.

Unschedulable

True

JobValidateFailed

job validation failed, typically due to an insufficient number of pods, non-compliant resource requests, or an unsupported job type.

Unschedulable

True

NodePredicateFailed

Node filtering failed, containing detailed node filtering error information.

Unschedulable

True

BatchOrderFailed

Batch node ordering failed, containing detailed ordering error information.

Job Information

tor-share-cm

Table 1 tor-share-cm

Name

Description

Value

Remarks

IsHealthy

Switch status corresponding to the node

String

-

IsSharedTor

Switch attribute corresponding to the node

String

-

NodeIP

Node IP

String

-

NodeName

Node name

String

-

JobName

Job name

String

-

vcjob-fault-npu-cm

Table 2 vcjob-fault-npu-cm field description

Name

Description

Value

Remarks

fault-node

Faulty node information

-

-

- NodeName

Node Name

String

-

- UpdateTime

-

64-bit integer

-

- UnhealthyNPU

Set of faulty chips on the faulty node

String slice

-

- NetworkUnhealthyNPU

Set of chips with network faults on the faulty node

String slice

-

- NodeDEnable

Whether the node status detection switch is enabled

  • True
  • False

-

- NodeHealthState

Node health status

String

-

FaultDeviceList

-

-

-

- fault_type

Fault type object

  • CardUnhealthy: Chip fault
  • CardNetworkUnhealthy: Chip network fault
  • NodeUnhealthy: Node Failure

-

- npu_name

Name of the faulty chip. Empty in case of a node failure.

String

-

- fault_level

Fault handling type. Empty in case of a node failure.

  • NotHandleFault: No handling
  • RestartRequest: Re-execute inference requests for inference scenarios; re-execute training services for training scenarios
  • RestartBusiness: Re-execute the service
  • FreeRestartNPU: Affects service execution. Reset the chip when it becomes idle.
  • RestartNPU: Directly reset the chip and re-execute the service
  • SeparateNPU: Isolate the chip
  • PreSeparateNPU: Pre-isolate the chip. Determine whether to reschedule based on the actual running status of the training task.
  • The fault_level, fault_handling, and large_model_fault_level parameters have the same functionality. It is recommended to use fault_handling.
  • If an inference task subscribes to fault information and a RestartRequest fault occurs on the inference card used by the task, and the fault duration does not exceed 60 seconds, task rescheduling will not be performed. If the fault duration exceeds 60 seconds and is not recovered, the chip will be isolated and task rescheduling will be performed.

- fault_handling

- large_model_fault_level

- fault_code

Fault code. A string concatenated by commas.

String

  • Disconnected: Chip network disconnection fault.
  • heartbeatTimeOut: Node status loss fault

remain-retry-times

Remaining reschedulable information for the job

-

-

- UUID

Task UID

String

-

- Times

Remaining reschedulable times for the job

Integer

-

reset-config-<job-name>

The MindCluster cluster scheduling component writes information such as device and training task status into the reset-config-<job-name> ConfigMap through K8s and maps it into the container. The Elastic Agent reads it and performs corresponding fault detection and processing.

Table 3 reset-config-<job-name>

Field Name

Name

Description

Value

Remarks

reset.json

RankList

Chip list

-

-

RankId

Rank information used by the faulty task

Integer

-

LogicId

Chip logic ID

32-bit integer

-

Status

Chip status

  • unrecovered: Not recovered
  • recovered: Recovery succeeded
  • failed: Recovery failed

-

Policy

Hot reset policy

  • empty: No fault
  • ignore: Ignore the fault
  • restart_request: Re-execute the current request
  • restart: Re-execute the training task
  • free_reset: The device needs to be restarted when there is no task on the NPU
  • reset: The device needs to be restarted
  • isolate: The device needs to be isolated

-

InitialPolicy

Initial hot reset policy

  • empty: No fault
  • ignore: Ignore the fault
  • restart_request: Re-execute the current request
  • restart: Re-execute the training task
  • free_reset: The device needs to be restarted when there is no task on the NPU
  • reset: The device needs to be restarted
  • isolate: The device needs to be isolated

-

ErrorCode

Decimal fault code

64-bit integer array

-

GracefulExit

Manages training processes

0 or 1

  • Value 1: Terminate all training processes
  • Value 0: No action

-

FaultFlushing

Informs Elastic Agent whether a fault is currently being flushed

Value is true or false

  • true: Indicates that a fault is being flushed
  • false: Indicates that no fault is being flushed

Elastic Agent needs to wait until this field is false and the fault RankList does not contain a fault for this node before starting the training process

RestartFaultProcess

Informs Elastic Agent whether to restart only the faulty process on this node

Value is true or false

  • true: When a fault occurs on this node, restart only the faulty process on this node
  • false: When a fault occurs on this node, exit all processes on this node and exit Elastic Agent

This field takes effect only when the fault RankList contains a fault for this node

ErrorCodeHex

Hexadecimal fault code

String

-

restartType

-

Type of reset.json update

podReschedule or hotReset

The value is podReschedule for single Pod rescheduling, and hotReset for hot recovery scenarios

mindx-dl/job-reschedule-reason

This ConfigMap is used to record the historical information of job rescheduling. By default, it saves the ten most recent rescheduling records of a job. When the ConfigMap content exceeds 950 KB, the earliest record of each job will be deleted in sequence.

Table 4 Job field description

Field

Name

Description

Value

Remarks

Job namespace/Job name

-

Marks the name of the job that performs rescheduling.

String

-

JobID

Job ID

String

-

TotalRescheduleTimes

The total number of rescheduling times recorded for this job in the current lifecycle of Volcano

Integer

-

RescheduleRecords

Records the specific information of the rescheduling of this task.

-

-

Table 5 RescheduleRecords description

Field Name

Name

Description

Value

Remarks

RescheduleRecords

LogFileFormatTime

Rescheduling time recorded in Volcano log format

String

-

RescheduleTimeStamp

Timestamp when rescheduling occurred

String

-

ReasonOfTask

Records the specific information of this rescheduling.

-

-

Table 6 ReasonOfTask Description

Field Name

Name

Description

Value

Remarks

ReasonOfTask

RescheduleReason

Reason for rescheduling

String

-

PodName

The pod that first triggered this rescheduling

String

-

NodeName

Node name

String

The node that first triggered this rescheduling.

NodeRankIndex

The rank of the node that first triggered this rescheduling in the training

String

-

Parameter Plane Network Topology

basic-tor-node-cm

Table 1 basic-tor-node-cm

Name

Description

Value

Remarks

version

Version of basic-tor-node-cm

1.0

-

tor_count

Number of nodes under the switch in the cluster

Integer

-

server_list

Collection of cluster nodes grouped by switch

-

-

- tor_id

Sequence number of the switch

Integer

-

- tor_ip

IP address of the switch

String

-

server

Node information under the switch

-

-

- server_ip

IP address of the node

String

-

- npu_count

Number of NPU chips on the node

Integer

-

- slice_id

Sequence number of the node under the switch

Integer

-

Volcano Configuration

volcano-scheduler-configmap

Table 1 Field description of volcano-scheduler-configmap

Name

Description

Value

Remarks

actions

Actions used in the scheduling process

String

ascend-volcano-plugin uses three scheduling actions: enqueue, allocate, and backfill

plugins

Set of plugins used in the scheduling process

-

-

- name

Name of the plugin in use

String

ascend-volcano-plugin uses

the following scheduling plugins: priority, gang, conformance, volcano-npu_{version}_linux-{arch}, drf, predicates, proportion, nodeorder, and binpack

configurations

Configuration information for scheduler initialization

-

-

- name

Configuration information name

init-params

-

- arguments

Configuration information content

Key-value pair set

-