Volcano v1.14 重磅发布!迈向 AI 统一调度新纪元

0 阅读1分钟

Volcano[1] 社区 v1.14 现已正式发布。随着 AI 业务形态从单一的离线训练向在线推理、Agent 智能体等多元化场景延伸,调度系统面临着前所未有的挑战。v1.14[2] 通过架构级的创新,在保持大规模批量计算优势的同时,补齐了对延迟敏感型业务的调度短板,向着 “AI训推、RL、Agent全场景统一调度平台” 的目标迈出了坚实一步。

版本亮点

📌 v1.14.0 版本带来以下重磅更新:

统一调度平台架构

  • 多调度器架构升级:动态节点分片机制 (Alpha)

  • AI Agent 工作负载极速调度能力 (Alpha)

网络拓扑感知调度增强

  • HyperNode 级 Binpack 策略

  • SubGroup 级精细化拓扑感知

  • PodGroup 与 SubGroup 多层级 Gang Scheduling

  • Volcano Job 分区支持

混部能力增强

  • 全面支持通用操作系统(Ubuntu、CentOS 等)

  • Cgroup V2 全面适配

  • CPU 动态压制

  • 基于 Cgroup V2 的内存 QoS

  • 支持 CPU Burst

  • 支持 systemd driver 自动检测

异构硬件支持

  • 昇腾 vNPU 调度(支持 MindCluster 和 HAMi 模式)

Volcano Global 增强

  • HyperJob 多集群作业自动拆分

  • 数据感知多集群调度

Volcano Dashboard 增强

  • PodGroup 全景可视化

  • Job / Queue 全生命周期管理

▍多调度器架构升级:动态节点分片机制 (Alpha)

随着 Volcano 承载的工作负载类型日益丰富、规模持续扩大,单一调度器架构逐渐显露瓶颈。批量训练、AI Agent、微服务等不同类型的工作负载,对调度时延、资源利用模式的诉求各不相同。单调度器难以兼顾,而静态资源划分又会造成利用率低下。

新引入的 Sharding Controller 构建了一套可扩展的多调度器架构,能够根据集群实时状态,为每个调度器动态计算候选节点池。与传统的静态分区不同,Sharding Controller 采用动态计算的方式划分资源,而非强制硬隔离。这种灵活机制让 Volcano 真正成为"一个平台调度所有负载"的统一调度平台,同时保持高吞吐、低时延。

核心能力

  • 动态分片策略:支持多种策略来计算动态候选节点池。当前版本率先支持基于 CPU 利用率的分片策略,并采用了可扩展的架构设计,以便未来轻松集成更多分片算法。

  • 节点池化管理:引入 NodeShard CRD,为特定调度器管理专属的动态候选节点池。

  • 支持大规模集群:通过在多个调度器之间灵活分配负载,天然适配大规模集群场景。

  • 多调度器协同:支持多种调度器组合的无缝协作。无论是部署多个 Batch Scheduler 进行负载分担,还是混合部署 Agent Scheduler 与 Batch Scheduler 以应对不同业务需求,都能灵活适配。

配置示例:

# Sharding Controller 启动参数
--scheduler-configs="volcano:volcano:0.0:0.6:false:2:100,agent-scheduler:agent:0.7:1.0:true:2:100"
--shard-sync-period=60s
--enable-node-event-trigger=true

# 参数格式: name:type:min_util:max_util:prefer_warmup:min_nodes:max_nodes

🔗 相关 PR:github.com/volcano-sh/…

设计文档:Sharding Controller Design[3]

感谢社区开发者:@ssfffss, @Haoran, @qi-min

▍AI Agent 工作负载极速调度 (Alpha)

AI Agent 类业务对时延极度敏感,任务创建频繁且生命周期短,对调度器的响应速度和吞吐量提出了严苛要求。原生 Volcano Batch Scheduler 专为批量计算设计,按固定周期处理 Pod,难以满足 Agent 场景的毫秒级响应需求。

为打造兼容批量计算与延迟敏感型业务的统一调度平台,v1.14 引入了专用的 Agent Scheduler。它通过 Sharding Controller 与批量调度器协同工作,各司其职又无缝配合,真正实现"一个平台、多种负载"。

核心能力

  • 极速调度通道:专为延迟敏感型负载(如 AI Agent)打造的独立调度器,提供极致响应速度。

  • 多 Worker 并行处理:采用多 Worker 并发消费调度队列的架构,大幅提升调度吞吐量。

  • 乐观并发控制:引入 Conflict-Aware Binder 机制,在实际绑定前预先解决冲突,减少无效操作。

  • 增强型调度队列:优化队列机制,支持紧急任务重试,确保关键任务不阻塞。

  • 统一平台融合:通过 Sharding Controller 与批量调度器无缝协作,共享集群资源。

🔗 相关 PR:

github.com/volcano-sh/…4804,

github.com/volcano-sh/…,

github.com/volcano-sh/…

设计文档:Agent Scheduler Design[4]

感谢社区开发者:@qi-min, @JesseStutler, @handan-yxh

▍网络拓扑感知调度增强

Volcano v1.14.0 对网络拓扑感知调度进行了进一步增强,满足分布式工作负载(包括 LLM 训练、推理、HPC 和其他网络密集型应用)日益增长的需求。

核心增强

  • SubGroup 级精细化拓扑感知:支持在 SubGroup / Partition 粒度设置网络拓扑约束,调度颗粒度更精细。

  • 灵活的网络层级约束:新增 highestTierName,支持按名称指定允许跨越的最高网络层级。

  • 多层级 Gang Scheduling:同时支持 PodGroup 级别和 SubGroup 级别的 Gang Scheduling,确保分布式任务的整体性。

  • Volcano Job 分区:支持将 Job 拆分为多个分区(Partition),便于管理 TP/PP/DP 等并行策略,并优化网络亲和性。

  • HyperNode 级 Binpacking:在 HyperNode(如交换机、机架)层级进行资源装箱,减少网络碎片,提升通信效率。

配置示例 - Volcano Job:

apiVersion:batch.volcano.sh/v1alpha1
kind:Job
metadata:
  name:llm-training-job
spec:
  networkTopology:
    mode:hard
    highestTierAllowed:2   # 整个 Job 最多跨越 Tier 2 HyperNode
  tasks:
  - name:trainer
    replicas:8
    partitionPolicy:
      totalPartitions:2    # 拆分为 2 个分区
      partitionSize:4      # 每个分区 4 个 Pod
      minPartitions:2      # 至少需要 2 个分区
      networkTopology:
        mode:hard
        highestTierAllowed:1    # 单个分区必须在 Tier 1 内
    template:
      spec:
        containers:
        - name:trainer
          image:training-image:v1
          resources:
            requests:
              nvidia.com/gpu:8

🔗 相关 PR:

github.com/volcano-sh/…,

github.com/volcano-sh/…,

github.com/volcano-sh/…,

github.com/volcano-sh/…,

github.com/volcano-sh/…

设计文档:Network Topology Aware Scheduling[5]

感谢社区开发者:@ouyangshengjia, @3sunny, @zhaoqi, @wangyang0616, @MondayCha, @Tau721

▍混部能力全面升级:支持通用操作系统

本次发布对 Volcano 的混部能力进行了全面改进,其中一个重要里程碑是:Volcano 混部能力正式支持通用操作系统(Ubuntu、CentOS 等),不再局限于 OpenEuler。这意味着更多用户可以使用 Volcano Agent 实现在离线混部,提升集群整体资源利用率。

CPU 动态压制 (CPU Suppression)

在线业务流量通常具有潮汐特性。为了在保障在线业务 SLA 的同时最大化资源利用,离线 Pod 的 CPU 配额需要随在线用量动态调整:在线用量高时压制离线配额,用量回落时逐步恢复,实现自适应的资源分配。

核心设计:

  • 根据节点可分配 CPU 和实时用量,动态调整 BestEffort root cgroup 的 CPU 配额。

  • 采用"监控-事件-处理"架构,并实施保守更新策略,有效抑制抖动。

配置示例:

cpuThrottlingConfig:
  enable:true
  cpuThrottlingThreshold:80      # BE 配额上限为可分配 CPU 的 80%
  cpuJitterLimitPercent:1        # 配额变化超过 1% 才触发更新
  cpuRecoverLimitPercent:10      # 单次恢复上限 10%

内存 QoS (Cgroup V2)

基于 Cgroup V2 实现混部场景的内存隔离。新增 ColocationConfiguration CRD,支持为指定工作负载配置内存 QoS 策略。

核心能力:

  • New API:通过标签选择器定义内存隔离策略的 ColocationConfiguration CRD

  • 动态计算

  • memory.high = pod.limits.memory * highRatio %

  • memory.low = pod.requests.memory * lowRatio %

  • memory.min = pod.requests.memory * minRatio %

  • 统一接口:可靠检测和支持 Cgroup V2 环境

使用示例:

apiVersion:config.volcano.sh/v1alpha1
kind:ColocationConfiguration
metadata:
  name:colo-config1
spec:
  selector:
    matchLabels:
      app:offline-test
  memoryQos:
    highRatio:100   # memory.high = memory.limits * 100%
    lowRatio:50    # memory.low = memory.requests * 50%
    minRatio:0     # memory.min = memory.requests * 0%

CPU Burst 与 Cgroup V2 全面支持

CPU Burst 能力已扩展至通用操作系统。同时,Volcano Agent 现已全面适配 Cgroup V2 环境,支持自动检测 Cgroup 版本及驱动类型(如 systemd driver),无需人工干预即可在现代 Linux 发行版上无缝运行。

🔗 相关 PR:

github.com/volcano-sh/…,

github.com/volcano-sh/…,

github.com/volcano-sh/…,

github.com/volcano-sh/…

设计文档:CPU Throttle Design[6], Agent Cgroup V2 Adaptation[7]

感谢社区开发者:@Haibara-Ai97, @JesseStutler, @ouyangshengjia

▍昇腾 vNPU 调度

v1.14 原生集成了昇腾 vNPU(虚拟 NPU)调度能力,实现昇腾 AI 处理器在多个工作负载之间的高效算力复用。提供两种模式,灵活适配不同部署场景。

支持模式

1. MindCluster 模式

2. HAMi 模式

  • 由 HAMi 社区开发

  • 同时支持昇腾 310 和 910 系列

  • 支持异构昇腾集群(910A、910B2、910B3、310P)

调度器配置:

# MindCluster 模式
- name:deviceshare
  arguments:
    deviceshare.AscendMindClusterVNPUEnable:true

# HAMi 模式
- name:deviceshare
  arguments:
    deviceshare.AscendHAMiVNPUEnable:true
    deviceshare.SchedulePolicy:binpack  # 或 spread

🔗 相关 PR:

github.com/volcano-sh/…,

github.com/volcano-sh/…

使用文档:How to Use vNPU[8]

感谢社区开发者:@JackyTYang, @DSFans2014

▍Volcano Global 增强

Volcano Global v0.3.0 引入了两个重要功能,通过基于计算资源和数据局部性的智能调度,显著扩展了 Volcano Global 对 AI/ML 和大数据工作负载的能力。

HyperJob:多集群作业自动拆分

随着 AI 训练工作负载规模和复杂性的增长,企业越来越面临跨多个异构集群管理大规模训练作业的挑战。HyperJob 是构建在 Volcano Job 之上的更高级抽象。它组合多个 Volcano Job 模板,将训练能力扩展到单集群边界之外,同时保留每个集群内现有 Volcano Job 的全部能力。

核心能力

  • Karmada 深度集成:自动生成 PropagationPolicy,精准配置集群亲和性与副本调度。

  • 状态统一聚合:将各集群子任务状态汇总为统一的 HyperJob 状态,全局可观测。

  • 自动资源生成:根据 ReplicatedJob 定义自动创建 VCJob 和 PropagationPolicy。

HyperJob 资源示例(跨 2 个集群拆分大规模训练作业,共 256 个 GPU):

apiVersion:training.volcano.sh/v1alpha1
kind:HyperJob
metadata:
  name:llm-training
spec:
  replicatedJobs:
  - name:trainer
    replicas:2
    templateSpec:
      tasks:
      - name:worker
        replicas:128
        template:
          spec:
            containers:
            - name:trainer
              image:training-image:v1
              resources:
                requests:
                  nvidia.com/gpu:1

数据感知调度

在 AI 训练和大数据分析等高性能计算场景中,任务执行不仅依赖计算资源,还严重依赖数据资源。在多集群环境中,调度器可能会将任务分派到与数据源物理距离较远的集群,导致跨地域带宽成本过高和 I/O 延迟过高。

数据感知调度框架引入 DataDependencyController,打通了逻辑数据需求与物理集群分布的壁垒。通过外部插件(如 Amoro)实时获取数据分布信息,自动将调度约束注入 Karmada,实现"计算随数据而动"的全自动工作流。

核心能力

  • 插件化架构:可扩展支持 Amoro、Hive、S3 等多种数据系统。

  • 声明式 API:DataSourceClaim / DataSource CRD,采用"声明-缓存"模式。

  • 自动亲和注入:将数据局部性转化为 ClusterAffinity 约束,注入 ResourceBinding。

详见: Volcano Global v0.3.0 Release Notes[9]

感谢社区开发者:@JesseStutler, @fx147, @Monokaix, @zhoujinyu, @anryko, @tanberBro

▍Volcano Dashboard v0.2.0

Volcano Dashboard v0.2.0 对资源管理能力进行了重大增强,使得通过 Web 界面管理 Volcano 资源更加便捷。

核心增强

  • PodGroup 全景可视化:跨命名空间查看、搜索、过滤 PodGroup,支持 YAML 语法高亮。

  • Job 生命周期管理:直接在界面创建、删除 Volcano Job,操作更便捷。

  • Queue 管理增强:在线编辑 Queue 配额、权重,支持 YAML 直接修改。

  • 安全加固:默认配置 SELinux、Seccomp、非 root 运行及禁止提权,保障生产安全。

详见: Volcano Dashboard v0.2.0 Release Notes[10]

感谢社区开发者:@vzhou-p, @Shrutim1505, @JesseStutler, @karanBRAVO, @Sayan4444, @jayesh9747, @Alivestars24, @kuldeep, @Monokaix

▍调度器稳定性与性能提升

Reclaim 重构与增强

对 Reclaim Action 进行了全面重构,并修复了 Capacity Plugin 中的关键逻辑问题,大幅提升多租户集群资源回收的准确性、稳定性和性能。

主要改进:

  • Reclaim Action 重构:重构了 reclaim 工作流,提高代码可读性、可维护性和测试覆盖率。

  • 增强的 Capacity Plugin 逻辑:修复了 reclaimableFnpreemptiveFn,正确处理标量资源并防止错误的抢占决策。

  • 稳定性提升:解决了资源计算中的边缘情况,防止调度死循环和误驱逐。

🔗 相关 PR:

github.com/volcano-sh/…,

github.com/volcano-sh/…,

github.com/volcano-sh/…

感谢社区开发者**:@guoqinwill, @hajnalmt**

▍支持 Kubernetes 1.34

Volcano 版本紧跟 Kubernetes 社区。v1.14 已全面支持最新的 Kubernetes v1.34,并通过完整的单元测试和 E2E 测试保障功能与稳定性。

🔗 相关 PR:github.com/volcano-sh/…

感谢社区开发者:@suyiiyii, @tunedev

总结:Volcano v1.14.0 — AI 时代的统一调度平台

Volcano v1.14 是一个里程碑式的版本。通过引入多调度器架构和 Agent Scheduler,Volcano 正式迈入统一调度平台新阶段,既能高效处理批量 AI 训练,又能满足 AI Agent 的极致时延要求。网络拓扑感知增强、通用操作系统混部支持、昇腾 vNPU 集成,进一步夯实了 Volcano 在 AI 基础设施领域的领先地位。

同时,Volcano Global v0.3.0 通过 HyperJob 实现大规模分布式训练和数据感知调度,扩展了多集群能力。Volcano Dashboard v0.2.0 通过全面的资源管理功能显著改善了用户体验。

立即体验 Volcano v1.14,共启 AI 时代统一调度新篇章!

v1.14.0 发布地址:github.com/volcano-sh/…

Volcano Global v0.3.0 发布地址:github.com/volcano-sh/…

Volcano Dashboard v0.2.0 发布地址:github.com/volcano-sh/…

致 谢

Volcano v1.14 生态版本(含 Volcano Global v0.3.0、Dashboard v0.2.0)共有 55 位社区贡献者参与。衷心感谢每一位贡献者:

相关链接

[1] Volcano:volcano.sh/en/

[2] Volcano v1.14.0:[

github.com/volcano-sh/…

](github.com/volcano-sh/…
](github.com/volcano-sh/…)
[3] Sharding Controller Design:[

github.com/volcano-sh/…

](github.com/volcano-sh/…
](github.com/volcano-sh/…)
[4] Agent Scheduler Design:[

github.com/volcano-sh/…

](github.com/volcano-sh/…
](github.com/volcano-sh/…)
[5] Network Topology Aware Scheduling:[

github.com/volcano-sh/…

](github.com/volcano-sh/…
](github.com/volcano-sh/…)
[6] CPU Throttle Design:[

github.com/volcano-sh/…

](github.com/volcano-sh/…
](github.com/volcano-sh/…)
[7] Agent Cgroup V2 Adaptation:[

github.com/volcano-sh/…

](github.com/volcano-sh/…
](github.com/volcano-sh/…)
[8] How to Use vNPU:[

github.com/volcano-sh/…

](github.com/volcano-sh/…
](github.com/volcano-sh/…)
[9] Volcano Global v0.3.0 Release Notes:[

github.com/volcano-sh/…

](github.com/volcano-sh/…
](github.com/volcano-sh/…)
[10] Volcano Dashboard v0.2.0 Release Notes:[

github.com/volcano-sh/…

](github.com/volcano-sh/…)