AI 应用:永不满足的计算饕餮
想象一下,我们正处在一个由数据构成的奇妙世界里,这里的居民是各式各样的AI应用,它们拥有无尽的好奇心和对知识的渴望。从深邃的机器学习海洋到高耸的深度学习山峰,这些AI居民们正进行着一场场前所未有的探险。然而,这些探险需要巨大的能量——计算资源,它们就像是AI世界中的食物和水,是推动探险不断前行的燃料。
随着AI居民们的探险越来越深入,它们对计算资源的需求也日益增长。每一个新的算法,每一次模型的训练,每一项数据分析,对计算资源的需求永无止境。它们需要更多的资源来挖掘数据的宝藏,更快的处理器来解开复杂的谜题,更大的存储空间来记录它们的发现。
Kubernetes:高效调度员
Kubernetes(简称K8s)就像是一个高效的调度员,负责将计算资源——这个AI世界中的食物和水——分配给需要它们的AI应用。
GPU算力调度作为AI探险中的核心需求,与K8s之间的关系紧密而复杂:
资源优化管理:
在K8s环境中,管理GPU等计算资源不仅仅是分配硬件。它还涉及到资源的最优使用,确保各个作业可以高效运行。这通常需要对容器进行适当的资源限制和请求配置,以平衡负载并避免资源浪费。
调度策略:
K8s需要能够理解和处理GPU资源。这意味着调度器需要被适当配置,以识别哪些节点拥有GPU资源,并将需要这些资源的工作负载智能地分配到这些节点上。这种类型的调度策略比起常规的CPU或内存资源调度要复杂得多。
多租户和安全:
在多租户的AI开发环境中,确保GPU资源的安全隔离和公平调度是非常关键的。这涉及到复杂的权限管理和策略设定,以确保各租户之间不会相互干扰,同时又能充分利用GPU资源。
此外还有插件、动态管理、弹性等因素。这里面我们先聊调度策略。
常用的调度策略有哪些?
1.共享GPU调度——市面最常见的调度策略
随着深度学习和高性能计算等资源密集型应用的兴起,GPU资源的管理和调度变得尤为重要。然而传统的K8s调度器主要基于资源分配的静态信息进行决策,这可能无法充分利用GPU资源,特别是在多任务共享同一GPU时。为了解决这一问题,引入了共享GPU调度:它将多个实例运行在同一张GPU卡上,进而提升GPU的利用率。
它主要应用于小模型推理服务,训推一体,GPU的在离线混部等场景。例如NVIDIA多实例 GPU(Multi-Instance GPU,简称 MIG)。它可以将一个 GPU 可划分成多个大小不同的 MIG 实例。例如,在 NVIDIA GB200 上,管理员可以创建两个各有 95GB 显存的实例、四个各有 45GB 的实例,或七个各有 23GB 的实例。

适用场景:
共享GPU调度适合于模型推理和轻量级训练任务。在资源受限或成本敏感的环境中,共享GPU可以大幅提升硬件的利用率。特别是对于那些计算需求较小的任务,如小型神经网络或批量处理的推理任务,共享GPU策略能够在不牺牲太多性能的前提下,极大地节省成本。
2、拓扑感知调度
拓扑感知往往要涉及硬件和网络结构的优化,以提高计算资源(如GPU)间的通信效率。可以将这种网络改造理解为类似要升级工厂内部的输送带系统,使其能够更快更高效地运送材料到各个加工站。这种升级虽然需要前期的投资和调整,但长期来看,它能显著提高整个工厂的生产效率和输出质量。因为成本较高,目前只有部分大型的算力中心在尝试应用。
调度原理:
在机器学习或大数据分析类作业中,Pod与Pod间通常有较大的网络通信需求。默认情况下,原生Kubernetes调度器会将Pod均匀打散在集群的每台机器上,这样会增大Pod间的通信距离,导致作业完成时间变长。
举例:
下图为NVLink连接8个Tesla V100的混合立体网络拓扑。每块V100 GPU有6个NVLink通道,8块GPU间无法做到全连接,2块GPU间最多只能有2条NVLink连接。其中GPU0和GPU3,GPU0和GPU4之间有2条NVLink连接,GPU0和GPU1之间有一条NVLink连接,GPU0和6之间没有NVLink连接,故GPU0与GPU6之间仍然需要通过PCIe进行通信。
NVLink连接的单向通信带宽为25 GB/s,双向通信带宽为50 GB/s,PCIe连接的通信带宽为16 GB/s。在训练过程中,选择不同的GPU组合会得到不同的训练速度,选择最优的GPU组合可以得到最优的训练速度。
适用场景:
拓扑感知调度适合于需要高速数据交换的大规模并行训练任务。例如,当训练大型深度学习模型如BERT或GPT时,通过优化GPU之间的NVLink连接,可以显著减少训练时间。此策略对于那些节点间通信密集的任务尤为重要,因为它通过减少通信延迟和增加带宽利用率,提升了整体的作业执行效率。
3、负载感知调度
与K8s原生调度策略不同的是,原生调度器主要基于资源的分配情况进行调度,而负载感知调度可以感知节点实际的资源负载情况。通过参考节点负载的历史统计并对新调度Pod进行预估,调度器会将Pod优先调度到负载较低的节点,实现节点负载均衡的目标,避免出现因单个节点负载过高而导致的应用程序或节点故障。

适用场景:
负载感知调度适用于动态变化的工作负载,特别是在多租户环境中非常有效。此策略可以根据节点的当前负载动态调整资源分配,优先考虑那些负载较低的节点。这对于维持集群性能稳定性和避免资源瓶颈至关重要,尤其是在资源需求高峰时。
策略选择的决策因素
在选择适当的GPU调度策略时,我们需要考虑多个因素,包括资源的可用性、应用的性能需求、以及成本效益以及优先级SLA。
资源的总体可用性:考虑集群中可用的GPU数量和类型,以及它们的网络连接方式。
应用任务的性能需求:分析任务对计算力和网络带宽的需求。
成本效益:评估不同调度策略对成本的影响,选择性价比最高的策略。
应用的优先级和服务等级协议(SLA):确保高优先级的应用能够获取足够的资源,同时满足服务等级的要求。
如何并行使用这些策略
在算力中心或类似的IT环境中,这些调度策略可以并行使用,也就是说,不同的任务可以根据其具体需求采用不同的策略。通常,一个复杂的环境会同时运行多种类型的任务,每种任务可能需要不同的资源和调度优化策略。因此,策略的选择不是互斥的,而是可以灵活搭配的。
根据任务类型分配策略:
例如,大规模的机器学习训练可能使用拓扑感知调度来优化GPU间的连接,而同时,轻量级的实时推理任务则可以使用共享GPU调度策略来提高GPU的使用率。
自动化调度系统:
现代的调度系统,如博云凭借多年在云原生领域的深耕,结合GPU算力调度,推出新一代AI算力底座平台AIOS,通过合理选择和应用不同的GPU调度策略,能够有效地管理AI应用的算力需求,优化资源分配,提升作业效率。
在实施过程中,还需要不断监测和调整策略,以应对不断变化的工作负载和资源状态。能够自动识别各种任务的需求并应用最合适的策略。这样的系统可以大大简化复杂环境中的资源管理。
动态调整:
调度系统还可以根据当前的资源使用情况和任务性能动态调整策略。例如,如果某个节点的负载过高,系统可以将新任务调度到负载较低的节点上,即使这些任务原本是使用其他调度策略的。
对于非IT专业人士,理解这些策略的具体细节可能比较复杂,但可以简单地把它们看作是不同的方法来最大化计算资源的效率和效果。好比一个复杂的工厂,其中不同的机器被安排在最合适的位置和时间工作,以确保整个工厂运行得既高效又经济。
未来博云将会分享更多相关策略及实践,点击关注不迷路哦~
相关产品介绍
AIOS是博云专为AI应用推出的企业级一站式人工智能操作系统,屏蔽底层异构算力差异,面向大规模分布式计算,在计算、网络、存储、调度等基础能力全面增强,为AI应用提供稳定、高效、极简的底层支撑能力。同时AIOS支持主流的分布式AI深度学习框架,可满足算法、模型、组件的可视化开发,覆盖算法开发、数据管理、模型训练、在线推理的全生命周期。AIOS可以帮助企业和开发者自主构建人工智能业务,助力企业保持行业领先能力。

强大的底层掌控能力
AIOS的核心在于其强大的ACE算力引擎,支持高达5000个节点的稳定调度,以及异构GPU池化管理,确保了多租户算力的强隔离和全方位监控。
功能特性
覆盖深度学习业务全流程,加快模型从研发到上线速度。
深度学习训练任务通常包含多个阶段,从数据处理、算法开发、模型训练、超参调整、模型管理与部署等,AIOS提供全流程支持。
快速部署计算环境并启动训练任务,提高研发效率
深度学习框架和模型众多,依赖各不相同,对开发环境的要求比较复杂, AIOS可以实现资源和工作环境的隔离及快速部署。
支持数据集统一管理,提升数据标注效率
数据集种类众多,数据标注工具不一。AIOS内置多种数据集标注工具,支持人工标注、协同标注、智能标注等多种业务场景,极大提升数据标注效率。
支持多种建模方式,方便算法工程师快速构建复杂模型
支持Jupyter交互式建模,方便算法工程师对代码进行调试;平台内置多种算法组件,支持通过拖拉拽方式实现可视化建模,极大降低建模门槛。
训练过程可视化,掌握训练进度及质量
深度学习模型训练周期较长,训练结束后才发现模型质量问题。借助AIOS,可以实现对训练过程实时监控并可视化训练过程,实时观测损失函数值的日志、训练误差或测试误差等。
动态分配 GPU 资源,充分利用资源,提高资源利用率
支持 GPU 资源细颗粒度调度能力,最低可划分1%资源。同时支持众多国产GPU算力。单一计算集群可以统一管理异构的多种GPU算力。
全面的集群监控管理,实时掌握 CPU/GPU 资源使用情况及运行状态
实时监控集群的使用情况,合理安排训练任务;及时发现运行中的问题,提高集群的可靠性。

方案优势概览
