基于 Fractional GPUs 的 GPU 计算共享方案,知多少?

人工智能
众所周知,随着 AI 领域对 GPU 资源需求的不断增长,高效的资源管理变得至关重要。这不仅能够确保系统性能的最优化,还能实现对昂贵 GPU 资源的高效分配。

Hello folks,我是 Luga,今天我们来聊一下人工智能应用场景 - 构建高效、灵活的计算架构的 GPU 计算共享方案。

众所周知,随着 AI 领域对 GPU 资源需求的不断增长,高效的资源管理变得至关重要。这不仅能够确保系统性能的最优化,还能实现对昂贵 GPU 资源的高效分配。

在这一背景下,分片式 GPU(Fractional GPU) 技术发挥了重要作用。通过这一技术,用户能够灵活优化 GPU 的利用率,根据具体需求精确调整工作负载的 GPU 资源分配,从而避免资源浪费或性能瓶颈的问题。

一、共享 GPU 工作负载当前现状与挑战

在实际的业务场景中,当我们需要通过 GPU 承载某个工作负载时,需要同时使用 GPU 的内存子系统和计算子系统。其中,内存子系统负责数据的存储与读取,计算子系统则负责实际的计算任务。对于单一工作负载来说,通常需要充分利用 GPU 的全部内存和计算能力。

然而,在多个工作负载共享同一块 GPU 的场景下,这些工作负载不可避免地会竞争 GPU 资源的访问权限。如果缺乏有效的资源管理,这种竞争将导致工作负载无法获得所需的内存或计算资源,从而带来性能下降和用户体验不佳的后果。

具体而言,在共享 GPU 集群环境中,多个 AI 工作负载常常需要同时运行在同一块 GPU 上。例如,在深度学习模型的训练和推理任务中,一些工作负载可能需要较大的显存来存储训练数据,而另一些工作负载可能对计算资源有更高需求。然而,传统的 GPU 资源分配方式通常无法对这两类资源进行细粒度的分配和管理,导致 GPU 的使用效率低下,并且难以确保每个任务的性能稳定性。

分片式 GPU(Fractional GPU)技术,为用户提供了每个工作负载的 GPU 内存配置功能。这一功能使得多个工作负载在共享同一块 GPU 时,可以高效地分配显存资源。例如,当两到三个轻量级推理任务共享 GPU 时,显存资源可以根据各自需求进行划分,从而避免资源浪费或显存不足的问题。

然而,在 GPU 计算子系统的资源分配上,传统方式存在较大局限性。以往,GPU 的计算能力通常是平均分配给并发的工作负载,而缺乏基于需求的动态调整。例如:

  • 如果某个工作负载被分配了 50% 的 GPU 内存,那么在其单独运行时,能够享受 GPU 的全部计算能力。
  • 但当 5 个其他工作负载同时运行时,此时,工作负载的计算能力可能会被平均分配到 GPU 的 1/6,这种固定比例的资源分配方式,无法满足高优先级任务的性能需求,容易导致吞吐量不可预测或延迟增加,最终影响业务稳定性和用户满意度。

这种局限性在实际场景中可能会带来显著问题。例如:

  • 深度学习推理:在实时视频分析或语音识别中,推理延迟直接决定用户体验。若推理任务因其他工作负载干扰导致 GPU 计算资源不足,可能会引发延迟超标,进而影响业务服务。
  • 模型训练:当多个团队共享同一块 GPU 进行训练时,如果无法动态调整计算资源分配,高优先级的模型训练任务可能会受到低优先级任务的干扰,延长训练周期,降低整体效率。

针对这一痛点,分片式 GPU 技术便应运而生,将其支持范围从“显存分配”扩展到 GPU 计算资源的动态配置。这种改进使得用户可以针对不同的工作负载需求,独立配置 GPU 的计算能力,从而在多任务环境下实现更稳定和高效的资源分配。

二、分片式 GPU(Fractional GPU)解决哪些问题?

为了应对 GPU 资源共享中面临的挑战,分片式 GPU 技术通过以下三种模式,使用户能够以工作负载为单位,对 GPU 计算共享进行更精细的控制。具体可参考 :

1. 基于优先级的计算共享(Priority-Based Mode - 优先级模式)

基于优先级计算共享可以为每个工作负载配置特定的优先级。这种模式确保高优先级的工作负载在其完成之前始终拥有对所有计算资源的完全访问权限。这项增强功能使用户能够保证关键任务的稳定性能,避免因资源竞争导致的性能下降。

2. 可配置的时间片比例(Fair Mode - 公平模式)

基于此种模式,用户可以定义每个工作负载在 GPU 上获得的时间片比例。时间片是指 GPU 在一段时间内分配给某个工作负载进行计算的时间段。通过配置时间片比例,可以实现对资源分配的精细化控制,确保每个工作负载根据其重要性获得适当比例的计算资源。

3. 可配置的计算消耗上限(Strict Mode - 严格模式)

基于此种模式,用户可以为每个工作负载配置计算资源利用率的上限。这种模式可以防止某个工作负载长时间占用所有资源,从而对其他工作负载的性能产生负面影响,确保资源的公平共享。

三、分片式 GPU(Fractional GPU)应用场景解析

在实际的业务场景中,基于分片式 GPU(Fractional GPU)技术所具备的灵活性和强大的配置能力,为多种应用场景带来了高效且精确的资源分配方式,具体可参考如下:

1. 具有不同优先级的模型推理服务

设想这样一种场景:多个推理服务运行在同一个 GPU 集群上,但它们具有不同的优先级。一些推理服务负责处理对响应时间要求极高的实时请求,而另一些则处理对响应时  间要求不严格的后台任务或离线请求(即服务级别协议 (SLA) 不那么严格)。

传统的 GPU 资源分配方式通常无法有效地处理这种混合工作负载。高优先级任务可能会因为资源不足而受到影响,而低优先级任务则可能占用过多资源,造成浪费。

而基于分片式 GPU 解决方案能够有效地解决这一问题。它可以根据任务的优先级动态调整 GPU 资源的分配。例如,当有新的实时请求到达时,可以自动暂停或降低低优先级任务的资源占用,确保关键的实时服务器能够及时获得所需的计算资源,从而避免性能瓶颈,保障服务的平稳运行。一旦高优先级任务完成,便会自动恢复低优先级任务的执行,最大限度地提高 GPU 的整体利用率。

打个比方,在一个在线购物平台的推荐系统中,用户浏览商品时触发的推荐请求需要快速响应,属于高优先级任务;而后台的模型更新任务则可以容忍一定的延迟,属于低优先级任务。使用此解决方案,可以确保推荐请求得到及时的处理,同时又不影响后台模型的更新。

2. 具有不同 SLA 的模型推理服务

在实际的场景中,不同的推理服务可能需要不同的响应时间。一些服务需要极短的响应时间以满足实时性要求,而另一些服务则可以容忍较长的响应时间。

分片式 GPU 允许为不同的服务配置不同的时间共享比例,从而根据需求和 SLA 要求分配 GPU 计算资源。例如,对于需要高吞吐量和低延迟的服务,可以分配更高的 GPU 时间片;而对于可以容忍一定延迟的服务,则可以分配较低的 GPU 时间片。这种精细化的控制能够确保 GPU 计算资源按照实际需求进行分配,避免资源浪费和性能瓶颈。

例如, 一个在线游戏服务需要极低的延迟以保证用户体验,而一个后台的数据分析服务则可以容忍一定的延迟。基于此解决方案,可以为游戏服务分配更高的 GPU 时间片,确保游戏的流畅运行,同时又能利用剩余的 GPU 资源进行数据分析。

3. 共享 GPU 集群上进行模型训练的不同租户

通常,在研究与开发环境中,多个用户通常需要共享同一 GPU 集群来训练 AI 模型。然而,传统的资源分配方式往往面临资源竞争和分配不公平的问题,不仅导致模型训练效率下降,还可能对训练过程的稳定性产生负面影响。

借助分片式 GPU 解决方案,用户可以根据自身需求灵活设置任务优先级和资源分配比例,从而实现对 GPU 资源的公平访问,同时保证模型训练性能的稳定性和一致性。通过优先级机制,高优先级任务能够在资源分配中占据优势,确保关键任务及时完成,而低优先级任务则在资源空闲时被动态调度,充分利用集群计算能力。

举例说明,在某研究团队中,多个成员需要同时使用共享的 GPU 集群开展各自的模型训练工作。传统模式下,不同成员的任务可能因资源争夺导致训练效率降低,甚至影响整体进度。引入分片式 GPU 解决方案后,团队成员可以根据任务的紧急程度、复杂性及重要性,自主申请 GPU 资源并设定优先级。调度系统会依据这些优先级,智能化分配 GPU 计算和内存资源,避免资源冲突和分配不均的问题。

这一策略不仅有效提升了 GPU 集群的整体利用效率,还显著优化了团队协作环境,使高优先级任务的训练得到优先保障,而低优先级任务则在资源空闲时被合理调度运行,从而实现了资源的最大化利用和团队生产力的整体提升。

今天的解析就到这里。欲了解更多关于 GPU 相关技术的深入剖析、最佳实践以及相关技术前沿,敬请关注我们的微信公众号“架构驿站”,获取更多独家技术洞察 !

Happy Coding ~

Reference :

  • [1] https://docs.nvidia.com/
  • [2] https://mp.weixin.qq.com/s/W28AMNxoOnajbFyJ8ETAkg
责任编辑:赵宁宁 来源: 架构驿站
相关推荐

2025-01-08 08:49:50

2025-01-06 05:00:00

人工智能GPU深度学习

2020-06-08 07:00:00

数据安全加密机密计算

2014-04-22 09:48:36

云计算云计算安全

2012-02-13 22:50:59

集群高可用

2024-08-06 10:07:15

2017-07-03 12:35:17

Linux物联网操作系统

2022-05-08 18:02:11

tunnel隧道云原生

2024-12-17 16:20:40

2021-12-04 11:17:32

Javascript继承编程

2013-12-23 14:00:31

Windows 8.2Windows 8.1

2010-08-16 09:15:57

2017-07-14 10:51:37

性能优化SQL性能分析

2018-01-03 13:24:23

云计算边缘计算MEC

2021-12-10 07:47:30

Javascript异步编程

2016-11-08 13:27:29

云计算成本企业

2018-08-31 10:53:25

MySQL存储引擎

2021-07-22 07:20:24

JS 遍历方法前端

2009-05-13 17:31:06

DBAOracleIT

2020-09-08 10:56:55

Java多线程存储器
点赞
收藏

51CTO技术栈公众号