当 GPU 计算更贴近用户时:重新思考云架构中的 CPU↔GPU 边界

发布: (2026年1月7日 GMT+8 01:01)
8 min read
原文: Dev.to

Source: Dev.to

抱歉,我需要您提供要翻译的完整文本(除代码块和 URL 之外的内容),才能为您完成简体中文翻译。请粘贴文章的正文部分,我会保持原有的 Markdown 格式和技术术语,仅翻译文字内容。

介绍

继我在之前的文章中提到的在新地区(香港)提供 GPU 云实例,我对 GPU 计算靠近用户时的瓶颈和架构影响 产生了好奇。随着云提供商扩大 GPU 可用性,关于云 VM 中 CPU↔GPU 边界的假设开始被打破。

GPU 加速的云计算正快速扩展,因 AI、ML、实时图形和仿真正日益成为现代应用的核心。历史上,GPU 实例仅限于少数地区,这形成了一种认知模型:GPU 是 集中式加速器,CPU↔GPU 交互是受控的、高延迟的边界。

在本文中,我将探讨当 GPU 靠近用户时会发生哪些变化,为什么 CPU↔GPU 边界在架构上很重要,以及工程师在设计时应注意哪些考虑因素。

什么是 CPU↔GPU 边界?

CPU 负责的任务GPU 负责的任务数据传输
控制流、调度、编排、I/O、系统调用并行计算、向量化操作、专用内核CPU 内存 ↔ GPU 内存,通过 PCIe(Peripheral Component Interconnect Express)

传统云虚拟机中的情况

  • GPU 资源集中且稀缺。
  • 工作负载以批处理为主,能够容忍延迟。
  • CPU↔GPU 传输不频繁且以大块方式进行。

这一边界决定了 服务拆分批处理策略弹性规划

CPU↔GPU 交互工作原理(PCIe 与代码示例)

CPU↔GPU 边界是 通过 PCIe 实现 的,它在 CPU 内存和 GPU 内存(VRAM)之间移动数据。CUDA、PyTorch、TensorFlow 等 GPU 框架会自动处理这些传输。

import torch

# create data on CPU
x_cpu = torch.randn(1024, 1024)

# move data to GPU via PCIe
x_gpu = x_cpu.to("cuda")

# computation now happens on GPU
y_gpu = x_gpu @ x_gpu  # matrix multiplication

# bring result back to CPU
y_cpu = y_gpu.to("cpu")

.to("cuda") 会触发 PCIe 传输。

GPU 计算速度很快,但 PCIe 传输的 带宽有限延迟不可忽视。频繁进行小规模传输会 成为性能瓶颈,尤其是在交互式工作负载中。

为什么 PCIe 可能成为瓶颈

  • 受限带宽: PCIe Gen 4 每条通道最高约 16 GB/s——虽快,但相对于 GPU 计算速度仍显不足。
  • 交互式工作负载的延迟: 小且频繁的传输会放大 CPU↔GPU 的延迟。
  • 多 GPU: 每个 GPU 都有自己的 PCIe 链路;水平扩展会增加潜在瓶颈。
  • 弹性云实例: 每新增一个 GPU 实例就会产生 新的 CPU↔GPU 边界,使调度更为复杂。

为什么区域 GPU 可用性很重要

当云服务提供商在更多地区部署 GPU 时:

  • GPU 物理上更靠近终端用户和存储,从而降低网络延迟。
  • 交互式应用(AI 推理、仿真、渲染)受益,因为网络延迟不再主导整体响应时间。
  • 工作负载的扩展更加灵活;弹性 GPU 实例可以在 更靠近数据 的位置启动。

架构意义:
CPU↔GPU 边界不再仅仅是“PCIe 传输数据的速度”,而是“数据本身离 CPU↔GPU 接口有多远”。

概念图

      User / Data Source


       Regional Network

    +--------+--------+
    |       CPU       |
    | Control / I/O   |
    +--------+--------+
             │ PCIe transfer

    +--------+--------+
    |       GPU       |
    | Parallel Compute|
    +-----------------+

           VRAM
  • 添加更多区域会使 CPU↔GPU 块更靠近用户/数据,降低网络延迟。
  • PCIe 在虚拟机内部仍是瓶颈,但整体系统延迟会下降。

Source:

架构影响

较低延迟很重要

以前,将数据发送到遥远的 GPU 对批处理工作负载几乎没有影响。区域 GPU 使 交互式工作负载对延迟敏感

GPU 工作负载变得更具交互性

更小、更频繁的 GPU 调用现在可行。GPU 可以直接参与请求路径,而不仅仅是执行批处理任务。

弹性改变设计选择

每新增一个 GPU 实例就会产生一个新的 CPU↔GPU 边界。架构师必须思考:将数据移动到 GPU 将工作负载移动到数据

数据局部性变得至关重要

跨区域移动数据的成本可能超过计算成本。CPU↔GPU 的传输必须与存储和网络的布局一起考虑。

需要关注的瓶颈

瓶颈传统模型区域 GPU 模型含义
PCIe 带宽大量、低频传输高频、小规模传输可能限制交互式性能
延迟可容忍批处理对本地 GPU 敏感需要重新设计请求路径
弹性稀少、长时间运行频繁扩缩调度和数据分区变得更复杂
数据重力集中式存储区域 GPU必须重新思考存储放置和数据流水线

关键要点

  • 重新定义 CPU↔GPU 合约: GPU 是本地计算原语,而不仅仅是加速器。
  • 为延迟敏感的工作负载做规划: 微批处理、异步流水线和请求调度至关重要。
  • 设计动态边界: 弹性 GPU 实例改变了工作负载的划分方式。
  • 考虑区域数据放置: 将计算移至数据所在位置往往比将数据搬到 GPU 更高效。
  • 监控新瓶颈: PCIe、内存带宽和网络拥塞在新架构中可能成为关键瓶颈。

讨论 / 后续步骤

区域 GPU 可用性正在改变我们对计算放置、数据移动和系统设计的思考方式。欢迎在评论中分享您在本地 GPU 部署方面的经验、问题或实验!

云设计假设

工程师和架构师应该问:

  • 何时区域 GPU 部署实际上能提升性能或降低成本?
  • 哪些工作负载保持集中,哪些则更靠近用户?
  • 弹性、PCIe 和网络瓶颈应如何在架构图中体现?

Closing

云 GPU 不再是遥远、静态的资源。随着它们越来越靠近用户和数据,它们迫使我们重新思考 计算如何分配、工作负载如何调度以及架构假设如何演变。现在理解这些变化将帮助工程师设计 更具弹性、可扩展且高效的云系统

Back to Blog

相关文章

阅读更多 »

AWS 如何重新定义云

在 AWS re:Invent 的现场,Ryan 与 AWS 高级首席工程师 David Yanacek 一起聊起所有关于 AWS 的话题,从 AWS 的 Black F 的真相……