1 基础知识
1.1 Volcano的介绍
– Volcano中文翻译为火山
– Volcano是一个面向高性能工作负载的云原生系统
– Volcano已被云原生计算基金会(CNCF)认可为首个且唯一官方容器批处理调度项目
– Vocano支持Spark、TensorFlow、PyTorch、Flink、Argo、MindSpore、PaddlePaddle和Ray等主流计算框架
– Vocano支持多种调度功能,包括异构设备调度、网络拓扑感知调度、多集群调度、在线/离线工作负载共存等
1.2 Vocano的功能
– 支持多种调度算法
– 更高效的调度
– 对主流计算框架的非侵入式支持
– 支持多框架计算
1.3 Vocano的特性
1.3.1 统一排班
– 支持原生Kubernetes工作负载调度
– 通过VolcanoJob为pyTorch、TensorFlow、Spark、Flink、Ray等框架提供全面支持
– 统一调度在线微服务和离线批处理作业,以提高集群资源利用率
1.3.2 丰富的调度策略
– 组队调度,确保作业中的所有任务同时启动,适用于分布式训练和大数据场景
– 装箱调度,通过紧凑的任务分配优化资源利用率
– 异构设备调度,高效共享GPU资源,支持GPU调度CUDA和MIG模式,以及NPU调度。
– 比例/容器调度,基于队列配额的资源共享、抢占、回收
– 节点组调度,支持节点组亲和型调度,实现队列与节点组之间的绑定
– DRF调度,支持多维资源的公平调度
– 服务水平协议(SLA)调度,基于服务质量的调度保证
– 任务拓扑调度,支持任务拓扑感知调度,优化通讯密集型应用的性能
– NUMA感知调度,支持NUMA架构的调度,优化多喝处理器上任务的资源分配,提高内存访问效率和计算性能
– 其他调度策略此处不再一一列举
1.3.3 队列资源管理
– 支持多维度资源配额控制(CPU、内存、GPU等)
– 提供多级队列结构和资源继承
– 支持队列见的资源借用、回收和抢占
– 实现做租户资源隔离和优先级控制
1.3.4 多架构计算
– x86
– Arm
– Kunpeng
– Ascend
– GPU
— 支持多种GPU虚拟化技术,实现灵活的资源管理
— 支持动态MIG,支持NVIDIA多实例GPU(MIG)的动态分区,提供硬件级别隔离,将物理GPU分割称多个独立的实例
— 支持vCUDA虚拟化,在软件层面将物理GPU虚拟化为多个vGPU设备,以实现资源共享和隔离
— 细粒度资源调度控制,为每个GPU实例提供专用内存和计算资源分配
— 东容器共享,允许多个容器安全地共享单个GPU,从而最大限度地提高利用率
— 统一监控,为所有GPU实例提供统一的监控和指标收集
1.3.5 网络拓扑感知调度
– 支持网络拓扑感知和调度,充分考虑节点间的网络带宽和特性
– 网络拓扑感知调度能够有效优化通讯密集型分布训练任务的数据传输,显著降低通讯开销、提供模型训练速度和整体效率。
1.3.6 在线和离线工作负载托管
– 支持在线和离线工作负载共存
– 通过统一调度、动态资源超额分配、CPU突发和资源隔离来提高资源利用率,同时确保在线工作负载的服务质量。
1.3.7 多集群调度
– 支持跨集群作业调度
– 跨集群作业调度可实现大规模资源池管理和负载均衡
1.3.8 取消日程
– 支持动态调度,以优化集群负载分配并提供系统稳定性
– 详细请参阅取消排版器
1.3.9 监测和可观测性
– 完整的日志系统
– 丰富的监控指标
– 提供仪表盘、方便用户进行图形界面操作
1.3.10 生态系统
Volcano以成为批量计算场景的事实标准,并广泛应用于以下高性能计算框架
– Spark
– TensorFlow
– PyTorch
– Flink
– Argo
– Ray
– MindSpore
– PaddlePaddle
– OpenMPI
– Horovod
– MXNet
– Kubeflow
– KubeGene
– Cromwell
参阅文档
=================
官方首页
———
https://volcano.sh/zh/
https://volcano.sh/en/
volcano github
—————
https://github.com/volcano-sh/volcano
官方文档
—————
https://volcano.sh/en/docs/
没有评论