Volcano 社区 v1.8.0 版本正式发布


Volcano 社区 v1.8.0 版本正式发布,此次版本增加了以下新特性:

  • 支持vGPU调度及隔离

  • 支持vGPU和用户自定义资源的抢占能力

  • 新增JobFlow工作流编排引擎

  • 节点负载感知调度与重调度支持多样化的监控系统

  • 优化Volcano对通用服务调度的能力

  • 优化Volcano charts包的发布与归档

支持vGPU调度及隔离

自 ChatGPT 爆火之后,AI大模型的研发层出不穷,不同种类的AI大模型也相继推出,由于其庞大的训练任务需要大量算力,以 GPU 为核心的算力供给已成为大模型产业发展的关键基础设施。在实际使用场景中,用户对于 GPU 资源的使用存在资源利用率低,资源分配不灵活等痛点问题,必须采购大量冗余的异构算力才能满足业务需求,而异构算力本身成本高昂,为企业的发展带来了很大的负担。

从 1.8版本开始,Volcano 为可共享设备(GPU、NPU、FPGA...)提供一个抽象的通用框架,开发者可以基于该框架自定义多种类型的共享设备;当前,Volcano 已基于该框架实现 GPU 虚拟化特性,支持 GPU 设备复用、资源隔离等能力,详情如下:

  • GPU共享:每个任务可以申请使用一个 GPU 卡的部分资源,GPU 卡可以在多个任务之间共享。

  • 设备显存控制:GPU 可以按照设备显存分配(比如:3000M)或者按比例分配(比如:50%),实现 GPU 虚拟化资源隔离能力。

关于 vGPU 的更多信息,参考:

  • 如何使用 vGPU 功能:https://github.com/volcano-sh/volcano/blob/master/docs/user-guide/how_to_use_vgpu.md
  • 如何增加新的异构算力共享策略:https://github.com/volcano-sh/volcano/blob/master/docs/design/device-sharing.md

支持vGPU和用户自定义资源的抢占能力

当前 Volcano 支持 CPU、Memory 等基础资源抢占功能,对于 GPU 资源和用户基于 Volcano 框架二次开发调度插件,并自主管理的资源(如:NPU、网络资源等)尚不能很好的支持抢占能力。

在1.8版本中,Volcano 对节点过滤相关处理( PredicateFn 回调函数)进行重构,返回结果中增加 Status 类型,用于标识在调度、抢占等场景下,当前节点是否满足作业下发条件。GPU 抢占功能已基于优化后的框架实现发布,用户基于Volcano 进行二次开发的调度插件可以结合业务场景适配升级。

关于支持扩展资源抢占的更多信息,参考:https://github.com/volcano-sh/volcano/pull/2916

新增JobFlow工作流编排引擎

工作流编排引擎广泛应用于高性能计算、AI 生物医药、图片处理、美颜、游戏AGI、科学计算等场景,帮助用户简化多个任务并行与依赖关系的管理,大幅度提升整体计算效率。

JobFlow 是一种轻量化的任务流编排引擎,专注于 Volcano 的作业编排,为Volcano 提供作业探针、作业完成依赖,作业失败率容忍等多样化作业依赖类型,并支持复杂的流程控制原语,具体能力如下:

  • 支持大规模作业管理以及复杂任务流编排

  • 支持实时查询到所有关联作业的运行情况以及任务进度

  • 支持作业自动运行、定时启动释放人力成本

  • 支持不同任务可以设置多种动作策略,当任务满足特定条件时即可触发对应动作,如超时重试、节点故障漂移等

JobFlow 任务运行演示如下:

关于 JobFlow 的更多信息,参考:https://github.com/volcano-sh/volcano/blob/master/docs/design/jobflow/README.md

节点负载感知调度与重调度支持多样化的监控系统

Kubernetes 集群状态随着任务的创建和结束实时变化,在某些场景(如:增加、删除节点,Pod、Node 的亲和性改变,作业生命周期动态变化等),出现集群节点间资源利用率不均衡,节点性能瓶颈掉线等问题,此时基于真实负载的调度与重调度可以帮助我们解决上述问题。

Volcano 1.8版本之前,真实负载调度与重调度的指标获取仅支持 Prometheus,从1.8版本开始,Volcano 优化监控指标获取框架,新增 ElasticSearch 监控系统支持,并支持以较小适配工作量平滑对接更多类型监控系统。

关于支持多种监控系统的更多信息,参考:

  • 基于节点负载感知调度:https://github.com/volcano-sh/volcano/blob/master/docs/design/usage-based-scheduling.md
  • 重调度:https://github.com/volcano-sh/volcano/blob/master/docs/design/rescheduling.md

优化Volcano对微服务调度的能力

增加Kubernetes默认调度器插件开关

Volcano 是一个统一的融合调度系统,不仅支持 AI、BigData 等计算类作业,也支持微服务工作负载,兼容 Kubernetes 默认调度器的 PodTopologySpread、VolumeZone、VolumeLimits、NodeAffinity、PodAffinity等调度插件,Kubernetes 默认调度插件能力在 Volcano 中默认开启。

自 Volcano 1.8 版本开始,Kubernetes 默认调度插件可以通过配置文件的方式自由选择打开和关闭,默认全部打开,如果选择关闭部分插件,比如:关闭PodTopologySpread 和 VolumeZone插件,可以在 predicate 插件中将对应的值设置为 false,配置如下:

actions: "allocate, backfill, preempt"
tiers:
- plugins:
- name: priority
- name: gang
- name: conformance
- plugins:
- name: drf
- name: predicates
arguments:
predicate.VolumeZoneEnable: false
predicate.PodTopologySpreadEnable: false
- name: proportion
- name: nodeorder

更多信息,可参考:https://github.com/volcano-sh/volcano/issues/2748

增强ClusterAutoscaler兼容性

在 Kubernetes 平台中,Volcano 除了作为批量计算业务的调度器之外,也被越来越多的用作通用服务的调度器。Node 水平伸缩(ClusterAutoscaler)是Kubernetes 的核心功能之一,在面对用户业务量激增和节省运行成本方面发挥重要作用。Volcano 优化作业调度等相关逻辑,增强与 ClusterAutoscaler 的兼容互动能力,主要为以下两个方面:

  • 调度阶段进入 pipeline 状态的 pod 及时触发扩容
  • 候选节点分梯度打分,减少集群 terminating pod 对调度负载的影响,避免pod 进入无效 pipeline 状态,从而导致集群误扩容

更多信息,参考:

  • https://github.com/volcano-sh/volcano/issues/3000
  • https://github.com/volcano-sh/volcano/issues/2782

精细化管理Node资源,增强韧性

当节点中由于某种原因比如 device-plugin 上报信息异常,出现节点的某种资源总量小于已分配资源量时,Volcano 认为该节点数据不一致,会隔离节点,停止向该节点调度任何新的工作负载。在1.8版本中,对于节点资源进行精细化管理,比如:当节点的 GPU 总资源容量小于已分配资源量时,申请 GPU 资源的 pod 禁止再调度至该节点,申请非 GPU 资源的作业,将仍然允许正常向该节点调度。

更多信息,参考:https://github.com/volcano-sh/volcano/issues/2999

优化Volcano charts包的发布与归档

随着 Volcano 在用户越来越多的生产环境和云环境中使用,简洁标准的安装动作至关重要。自1.8版本开始,Volcano 优化 charts 包发布归档动作,标准化安装使用流程,并完成历史版本(v1.6、v1.7)向新 helm 仓库的迁移,使用方式如下:

  • 添加 Volcano charts 仓地址
helm repo add volcano-sh https://volcano-sh.github.io/helm-chart
  • 查询所有可安装的 Volcano 版本
helm search repo volcano -l
  • 安装最新版 Volcano
helm install volcano volcano-sh/volcano -n volcano-system --create-namespace
  • 安装指定版本 Volcano,比如:1.7.0
helm install volcano volcano-sh/volcano -n volcano-system --create-namespace --version 1.7.0

关于 Volcano charts 包的更多信息,参考:https://github.com/volcano-sh/helm-charts


相關推薦

2022-06-19

Volcano社区v1.6.0版本已正式发布。此次版本增加了弹性作业管理、基于真实负载的动态调度、 基于真实负载的重调度、Volcano Job插件——MPI等多个新特性。 Volcano v1.6.0 关键特性介绍 1.弹性作业调度 v1.6.0版本新增了弹性作业

2023-09-23

务实现,应用一跳入云,实现业务敏捷、高效创新。 2.Volcano特性升级,新能力释放大模型计算潜力 大模型时代,以GPU为核心的算力供给已成为大模型产业发展的关键基础设施,用户对于GPU资源的使用存在资源利用率低、资源

2023-06-22

还是期望使用旧版的admin系统可以使用admin-old.yml, 在后续版本中镜像将不会继续构建旧版admin,如果你有什么需求是需要旧版admin但是新版admin没有支持的,请尽快开启issue告知我们 优化了聊天页面的字体,美化在windows平台上

2024-03-16

京墨 v1.8.0 已经发布,古诗词文 APP 此版本更新内容包括: 更新日志 优化诗文同步,实现“续传”功能; 优化诗文搜索查询; 添加诗文注释赏析; 添加【诗文】、【诗文名句】、【成语】小组件; 修复暗黑模式下应

2024-03-22

现。libgit2 v1.8.0 “Das Fliegende Klassenzimmer” 现已发布。此版本包括对调用 OpenSSH 进行获取和推送的可选实验性支持、执行git commit默认行为的更简单机制,并对工作树进行了许多改进。此版本还包括许多其他新功能和错误修复。

2022-09-21

以及应用 MVVM 模式和 ReactiveUI 数据绑定的能力。 最新发布的 1.8.0 修复了许多问题: 修复 #1943:鼠标 ButtonShift 无法保留选中文本的问题 将 main 合并到 develop 确保 isButtonShift flag 在所有情况下都被禁用 修

2022-10-01

开发者信息 软件名称:JavaWeb 敏捷开发框架 EleVue 版本 官网网址:http://www.javaweb.vip 文档网址:http://docs.vue.pro.javaweb.vip 系统演示 演示地址:http://manage.vue.pro.javaweb.vip 版本说明 版本名称 说明 地址

2022-10-27

好的。   空间是什么?   我们在这个版本引入了空间的概念,一个空间一般是一个团队,我们可以往空间里添加队友:     加入后就可以一起愉快地共享 API 和环境等空间内数据啦~

2023-07-11

及如何实现数据联合治理等话题有兴趣,欢迎加入我们的社区,了解更多解决方案的详细信息! GitHub repo:https://github.com/apache/eventmesh Gitee repo:https://gitee.com/WeBank/EventMesh Website:https://eventmesh.apache.org/ 微信群小助手 ID:EventMe

2024-04-18

结中的拼写错误:Eeasy -> Easy (#8475) Miscellaneous 将版本升级至 1.7.1 将 taichi 版本升级到 v1.8.0 (#8458) 详情可查看更新说明:https://github.com/taichi-dev/taichi/releases/tag/v1.7.1

2022-07-12

题。 近日 Dapr 1.8 正式发布,这是自 2021 年 2 月发布 1.0 版本以来的第八次小版本更新,更新内容如下: 分布式锁 API(alpha) 分布式锁提供了从一个应用程序对共享资源的互斥访问。在这个版本中,一个新的 alpha API 被引入

2024-01-10

StaxRip v2.32.0 现已发布。StaxRip 是一个开源的视频转换工具,可以将蓝光光盘或 DVD 中的视频转换成 PC 常用的视频格式,具有一系列解复用器,复用器,编码器和解码器。需要在 .NET Framework 和 DirectX 的 Windows 环

2023-01-06

12月, eKuiper 团队继续专注于 1.8.0 版本新功能的开发。我们重构了外部连接(source/sink) 的格式机制,更加清晰地分离了连接、格式和 Schema,同时支持了格式的自定义;受益于新的格式机制,我们大幅完善了文件源(file source)

2023-10-21

tag.length > 5 ? 'geekblue' : 'green'; if (tag === 'loser') { color = 'volcano'; } return ( <Tag color={color} key={tag}> {tag.toUpperCase()} </Tag> ); })} </> ), } ]; const data: Account[] = [ { key: '1', name: 'John Brown', age: 32, address: 'New York No. 1 Lake Park', tags