Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,4 @@ yarn-error.log*



volcano/
4 changes: 2 additions & 2 deletions blog/Volcano-1.10.0-release.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ Volcano introduced the elastic queue capacity scheduling feature in version v1.9

For detailed design information on elastic queue capacity scheduling, refer to the [Capacity Scheduling Design Document](https://github.com/volcano-sh/volcano/blob/master/docs/design/capacity-scheduling.md).

For a step-by-step guide on using the capacity plugin, see the [Capacity Plugin User Guide](/docs/UserGuide/user_guide_how_to_use_capacity_plugin).
For a step-by-step guide on using the capacity plugin, see the [Capacity Plugin User Guide](/docs/Scheduler/Plugins/capacity).

Configure each dimension deserved resource samples for the queue:

Expand All @@ -88,7 +88,7 @@ For instructions on using the `Device Plugin` to report various GPU models, plea

In version v1.10.0, the `capacity` plugin is the default for queue management. Note that the `capacity` and `proportion` plugins are incompatible, so after upgrading to v1.10.0, you must set the `deserved` field for queues to ensure proper functionality.

For detailed instructions, please refer to the [Capacity Plugin User Guide](/docs/UserGuide/user_guide_how_to_use_capacity_plugin).
For detailed instructions, please refer to the [Capacity Plugin User Guide](/docs/Scheduler/Plugins/capacity).

The `capacity` plugin allocates cluster resources based on the `deserved` value set by the user, while the `proportion` plugin dynamically allocates resources according to queue weight. Users can select either the `capacity` or `proportion` plugin for queue management based on their specific needs.

Expand Down
6 changes: 3 additions & 3 deletions blog/Volcano-1.13.0-release.md
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ Sincerely thanks to community developer: @[Wonki4](https://github.com/Wonki4)

Design documentation: [Ray Framework Plugin Design Doc](https://github.com/volcano-sh/volcano/blob/master/docs/design/distributed-framework-plugins.md).

Usage documentation: [Ray Plugin User Guide](/docs/UserGuide/user_guide_how_to_use_ray_plugin).
Usage documentation: [Ray Plugin User Guide](/docs/Controller/Plugins/ray).

## Introduce HCCL Plugin Support

Expand Down Expand Up @@ -189,7 +189,7 @@ Sincerely thanks to community developers: @[JesseStutler](https://github.com/Jes

NodeGroup design documentation: [NodeGroup Design.](https://github.com/volcano-sh/volcano/blob/master/docs/design/node-group.md)

NodeGroup usage documentation: [NodeGroup User Guide.](/docs/UserGuide/user_guide_how_to_use_nodegroup_plugin)
NodeGroup usage documentation: [NodeGroup User Guide.](/docs/Scheduler/Plugins/nodegroup)

## Introduce ResourceStrategyFit Plugin

Expand Down Expand Up @@ -274,7 +274,7 @@ Sincerely thanks to community developers: @[LY-today](https://github.com/LY-toda

Design documentation: [ResourceStrategyFit Design](https://github.com/volcano-sh/volcano/blob/master/docs/design/resource-strategy-fit-scheduling.md)

Usage documentation: [ResourceStrategyFit User Guide](/docs/UserGuide/user_guide_how_to_use_resource_strategy_fit_plugin)
Usage documentation: [ResourceStrategyFit User Guide](/docs/Scheduler/Plugins/resource_strategy_fit)

## Decouple Colocation from OS

Expand Down
2 changes: 1 addition & 1 deletion blog/Volcano-1.7.0-release-en.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ Other enhanced plugins include those for TensorFlow, MPI, and PyTorch Jobs. They
Volcano also provides an extended development framework for you to tailor Job plugins to your needs.

Design Documentation: [Pytorch-plugin](https://github.com/volcano-sh/volcano/blob/master/docs/design/distributed-framework-plugins.md#pytorch-plugin)<br />
User Guide: [Pytorch Plugin User Guide](/docs/UserGuide/user_guide_how_to_use_pytorch_plugin)<br />
User Guide: [Pytorch Plugin User Guide](/docs/Controller/Plugins/pytorch)<br />
Issue:[#2292](https://github.com/volcano-sh/volcano/issues/2292)<br />


Expand Down
2 changes: 1 addition & 1 deletion blog/Volcano-1.9.0-release.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ spec:
```

For a complete usage example of queue elastic capacity scheduling, please refer to:
[How to use capacity plugin](/docs/UserGuide/user_guide_how_to_use_capacity_plugin).
[How to use capacity plugin](/docs/Scheduler/Plugins/capacity).

For the elastic queue capacity design document, please refer to:
[Capacity scheduling Design](https://github.com/volcano-sh/volcano/blob/master/docs/design/capacity-scheduling.md).
Expand Down
2 changes: 1 addition & 1 deletion docs/Concepts/Queue.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ deserved indicates the expected resource amount for all PodGroups in this queue.

> **Note**:
>
> 1. This field can only be configured when the capacity plugin is enabled, and must be less than or equal to the capability value. The proportion plugin uses weight to automatically calculate the queue's deserved value. For more information on using the capacity plugin, see: [capacity plugin user guide](../UserGuide/user_guide_how_to_use_capacity_plugin.md)
> 1. This field can only be configured when the capacity plugin is enabled, and must be less than or equal to the capability value. The proportion plugin uses weight to automatically calculate the queue's deserved value. For more information on using the capacity plugin, see: [capacity plugin user guide](../Scheduler/Plugins/capacity.md)
> 2. If the allocated resources of a queue exceed its configured deserved value, the queue cannot reclaim resources from other queues

* weight, *optional*
Expand Down
2 changes: 1 addition & 1 deletion docs/Contribution/_category_.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{
"label": "Contribution",
"position": 9
"position": 10
}
7 changes: 7 additions & 0 deletions docs/Controller/Overview.md

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One sentence is a bit thin for what is now the landing page of the Controller section. Could you expand this a little — e.g. what the Job Controller actually reconciles (Job, PodGroup, tasks, lifecycle policies), how plugins hook into it (OnJobAdd / OnPodCreate / etc.), and a short index linking to each plugin page under ./Plugins/ (env, ssh, svc, tensorflow, mpi, pytorch, ray, hcclrank).

Also worth noting for a follow-up: the Controller section can later host a Policies page too (the lifecycle policies on Job/Task, e.g. PodEvicted / TaskCompleted / TaskFailed actions). No need to include that in this PR, just calling it out so we have a slot for it.

Same expansion needed on the matching i18n/zh-Hans/.../Controller/Overview.md.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i will be adding picture and more description, but this pr is getting too long so i will fix it in next pr. or i can add in this pr your call.

Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
title: Overview
---

## Introduction

The Volcano Job Controller manages the lifecycle of jobs and dynamically configures job environments using plugins such as SSH, SVC, MPI, and PyTorch.
4 changes: 4 additions & 0 deletions docs/Controller/Plugins/_category_.json
Comment thread
hemantch01 marked this conversation as resolved.
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"label": "Plugins",
Comment thread
hemantch01 marked this conversation as resolved.
"key": "controller-plugins"
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
title: "Volcano Job Plugin -- Env User Guide"
title: Env

---

Expand Down
59 changes: 59 additions & 0 deletions docs/Controller/Plugins/hcclrank.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
---
title: HCCLRank
---

## Introduction

In distributed AI training, particularly when using Ascend NPUs (Neural Processing Units) or MindSpore frameworks, the compute nodes need a deterministic rank or index to communicate over HCCL (Huawei Collective Communication Library).

The **HCCLRank Plugin** is a Volcano Job plugin that automatically injects a `hccl/rankIndex` annotation into the Pods of a Volcano Job. It calculates a unique rank for each pod based on its task type (`master` or `worker`) and its replica index.

## Mechanism

During the Pod creation phase (`OnPodCreate`), the HCCLRank Plugin intercepts the pod and adds the `hccl/rankIndex` annotation to it.

The calculation is as follows:
- **Master Role**: Rank = Pod Index
- **Worker Role**: Rank = (Total Master Replicas) + Pod Index

If the Pod already has a `RANK` environment variable defined in its container specifications, the plugin will use that value instead and simply map it to the `hccl/rankIndex` annotation.

## Configuration

To enable the HCCLRank plugin, configure it within the Volcano job controller's configuration or add it to the `plugins` field of your `VolcanoJob` spec.

```yaml
apiVersion: batch.volcano.sh/v1alpha1
kind: Job
metadata:
name: ascend-distributed-training
spec:
minAvailable: 3
schedulerName: volcano
plugins:
hcclrank:
- --master=master
- --worker=worker
tasks:
- replicas: 1
name: master
template:
spec:
containers:
- name: master
image: my-ascend-image
- replicas: 2
name: worker
template:
spec:
containers:
- name: worker
image: my-ascend-image
```

### Arguments

The HCCLRank plugin supports overriding the default task names used to identify master and worker roles:

- **`--master`**: The name of the master role task in your Job spec. Default is `master`.
- **`--worker`**: The name of the worker role task in your Job spec. Default is `worker`.
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
title: "MPI Plugin User Guide"
---
title: Message Passing Interface (MPI)

---

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
title: "Pytorch Plugin User Guide"
title: Pytorch
---


Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
title: "Ray Plugin User Guide"
---
title: Ray
Comment thread
hemantch01 marked this conversation as resolved.
---


Expand Down Expand Up @@ -29,9 +29,9 @@ The Ray Plugin will do three things:
| 2 | worker | string | worker | No | Name of Worker Task in Volcano Job | --worker=worker |
| 3 | headContainer | string | head | No | Name of Main Container in a head task | --headContainer=head |
| 4 | workerContainer | string | worker | No | Name of Main Container in a worker task | --workerContainer=worker |
| 5 | port | string | 6379 | No | The port to open for the GCS | --port=6379 |
| 6 | dashboardPort | string | 8265 | No | The port to open for the Ray dashboard | --dashboardPort=8265 |
| 7 | clientServerPort | string | 10001 | No | The port to open for the client server | --clientServerPort=10001 |
| 5 | port | int | 6379 | No | The port to open for the GCS | --port=6379 |
| 6 | dashboardPort | int | 8265 | No | The port to open for the Ray dashboard | --dashboardPort=8265 |
| 7 | clientPort | int | 10001 | No | The port to open for the client server | --clientPort=10001 |

## Examples
> This guide is based on the instructions provided in the [RayCluster Quick Start.](https://docs.ray.io/en/master/cluster/kubernetes/getting-started/raycluster-quick-start.html#step-4-run-an-application-on-a-raycluster)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
title: "Volcano Job Plugin -- SSH User Guide"
---
title: Secure Shell (SSH)

---

Expand All @@ -26,6 +26,7 @@ and subdomain.
| 1 | `ssh-key-file-path` | String | `/root/.ssh` | N | The path used to store ssh private and public keys. | ssh: ["--ssh-key-file-path=/home/user/.ssh"] |
| 2 | `ssh-private-key` | String | DEFAULT_PRIVATE_KEY | N | The input string of the private key. | ssh: ["--ssh-private-key=-----BEGIN RSA PRIVATE KEY-----\nMIIEpAIBAAKCAQEAyeyZjWDx5Na9bw1f61M4s+QlLT/kyrB37AR2j5Sb/A9hvJak\nLNQQpNC+KVfYNl4jePG+6lwHqye//pcC9+0SWsHWwgaahjMLnAthR2k8JAakNA9x\nV/wHz0YU99OKEetaOuxXpWZPXCHX0zuQO87YbdKzRbgxACirM3Phkwr7XLtQtWZk\nyXG34CQXZQWgBIS1Fl+PlGOpVpOPnWoZPMpbAK74i/Tz4sP8Zhqc6dya1hrbUwY3\nYfMZNYXpaAw7wWVjq8grfs0+Fl3SxHrzTXge2m+eZAZ6iPJ8cX4uYKxi0ZmxpM/a\ngI6Mmjq0MU75Vxpq22LaUvHIpOfX5UxhkrsxlwIDAQABAoIBAQDGOuIb6zpNn4rl\nBMpPqamW4LimjX08hrWUHGWQWyIu96LJk1GlOKMGSm8FA1odNZm5WApG5QYaPrG7\na+DcJ/7G3ljIrdbxPBd/n6RmiKcj7ukwuqBY8fFwyKo5CZEYOmagRfldRO1P02Gf\n22+jZ1MNrbWVElf4gfRgVLj0s+lEhFkzhi+QGMmMpjEJnnG98xxVGEvWMw1rnKJm\n3Gi771Gltbg3GuEPs3IeoBgba3EaHmSxJnBivAL4zsO8UUCAXB13cUiXx8qO7y1e\nCSWSenRmK2ugbL6v0co12O0n0pxF9xlJ6fALdRWzpJsFlN3ttkY9N5GrQc/pVjOa\nvqa172RRAoGBAOSAIMNLT6QjgYDk5Z7ZxjNnxH/lMso+cx6bxk9YMKRrw0fDQh8m\ncBAihXhuntCPDGhrzQ+Anqx4jJVDFqac0xBck90a8LmmzD0q72eDTCYPouDWe6DL\nJQAc/HDmIC13sADEXmGW3c0Qn4hjBnMd89ouYj7ZajU2sED2irPPc/HLAoGBAOI5\nruL4Q0FarGrP3a9z9EDrVJsK2OfSTaJ7rhZ+uvB838svbHU+4mEYPhx4PCwvrYyi\nFn4hyau003ZmLc1qTABjmwcO/PPiYyoRHJDUIIhiIyIL+id/G53uG2eTzqYtU6uS\nnAIB2rKwwhU8ek+zbJBLu5uxuxlf4mdZITdkwtXlAoGBALH3RQ02A9JgQQYFwP2G\nucLhx/6goX05RGoLg1na4w+8Sr0Cy+X9BvzaFkAlUBY5w700cOLpFyxXO48pUGP1\n8sFkiVmFGQZPbfUaEpn5ff6K4R3ijyk97xR2fvrjkR44gOEoECZL3XZQwx/zmFti\nccF1rNksdnb5oC8IliDTq4cfAoGANyy6asECJj5nLuXju5ccS3kZ+XZ70I6KQMbJ\nftMJ5P2P146JdU8RB31SKL9qbZxzR4mA0uKKvUYtDQN+yErUnoOsm9wb9Z+RcAEc\nZnZWOO02hGdHa7qkkbAxHuH91KnZbk8jnZm2LT7PFz7Y1fd80vSlnSOL7nRkU7B5\nWXlJy8ECgYA4g0wc0Jq8c1Q0FulMkOQqYRDXaDo34987L+mZ70i/RtdkKjK/IKJ9\n18UDCyEaDPD0BWBJGPejZkY8UD6FBG/5k7wNIbT7hHLRSRlw4iRmVX2hRVXrXzD8\nvc86Qyg2iG0JqkMAvRdH40amPKp5bW4VcfcvQo4TSsI972u12rgwtg==\n-----END RSA PRIVATE KEY-----\n"] |
| 3 | `ssh-public-key` | String | DEFAULT_PUBLIC_KEY | N | The input string of the public key. | ssh: ["--ssh-public-key=ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDJ7JmNYPHk1r1vDV/rUziz5CUtP+TKsHfsBHaPlJv8D2G8lqQs1BCk0L4pV9g2XiN48b7qXAerJ7/+lwL37RJawdbCBpqGMwucC2FHaTwkBqQ0D3FX/AfPRhT304oR61o67FelZk9cIdfTO5A7ztht0rNFuDEAKKszc+GTCvtcu1C1ZmTJcbfgJBdlBaAEhLUWX4+UY6lWk4+dahk8ylsArviL9PPiw/xmGpzp3JrWGttTBjdh8xk1heloDDvBZWOryCt+zT4WXdLEevNNeB7ab55kBnqI8nxxfi5grGLRmbGkz9qAjoyaOrQxTvlXGmrbYtpS8cik59flTGGSuzGX root@aiplatform"] |
| 4 | `ssh-port` | int | 22 | N | The SSH port to use for connections. | ssh: ["--ssh-port=22"] |

## Note:
* `DEFAULT_PRIVATE_KEY` and `DEFAULT_PUBLIC_KEY` are not fully listed for they are too long. Please refer to the examples
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
title: "Volcano Job Plugin -- SVC User Guide"
---
title: Service (SVC)
---

## Background
Expand Down Expand Up @@ -139,13 +139,13 @@ metadata:
spec:
containers:
- command:
- sh
- -c
- |
PS_HOST=`cat /etc/volcano/ps.host | sed 's/$/&:2222/g' | sed 's/^/"/;s/$/"/' | tr "\n" ","`; ## Get host domain from host files generated
WORKER_HOST=`cat /etc/volcano/worker.host | sed 's/$/&:2222/g' | sed 's/^/"/;s/$/"/' | tr "\n" ","`;
export TF_CONFIG={\"cluster\":{\"ps\":[${PS_HOST}],\"worker\":[${WORKER_HOST}]},\"task\":{\"type\":\"ps\",\"index\":${VK_TASK_INDEX}},\"environment\":\"cloud\"};
python /var/tf_dist_mnist/dist_mnist.py
- sh
- -c
- |
PS_HOST=`cat /etc/volcano/ps.host | sed 's/$/&:2222/g' | sed 's/^/"/;s/$/"/' | tr "\n" ","`; ## Get host domain from host files generated
WORKER_HOST=`cat /etc/volcano/worker.host | sed 's/$/&:2222/g' | sed 's/^/"/;s/$/"/' | tr "\n" ","`;
export TF_CONFIG={\"cluster\":{\"ps\":[${PS_HOST}],\"worker\":[${WORKER_HOST}]},\"task\":{\"type\":\"ps\",\"index\":${VK_TASK_INDEX}},\"environment\":\"cloud\"};
python /var/tf_dist_mnist/dist_mnist.py
env:
- name: VK_TASK_INDEX
value: "0"
Expand Down
Loading