多 GPU 中的人工智能:了解主机和设备范例

了解 CPU 和 GPU 如何在主机设备范式中交互多 GPU 中的人工智能后:了解主机和设备范式首先出现在《走向数据科学》上。

来源:走向数据科学

是有关跨多个 GPU 的分布式 AI 系列的一部分:

  • 第 1 部分:了解主机和设备范例(本文)
  • 第 2 部分:点对点和集体操作(即将推出)
  • 第 3 部分:GPU 如何通信(即将推出)
  • 第 4 部分:梯度累积和分布式数据并行性 (DDP)(即将推出)
  • 第 5 部分:ZeRO(即将推出)
  • 第 6 部分:张量并行性(即将推出)
  • 简介

    本指南解释了 CPU 和独立显卡 (GPU) 如何协同工作的基本概念。这是一个高级介绍,旨在帮助您构建主机设备范式的心理模型。我们将特别关注 NVIDIA GPU,它最常用于 AI 工作负载。

    对于集成 GPU,例如 Apple Silicon 芯片中的 GPU,其架构略有不同,本文不会介绍。

    总体情况:主机和设备

    最需要掌握的概念是Host和Device之间的关系。

  • 主机:这是您的CPU。它运行操作系统并逐行执行您的 Python 脚本。主机是指挥官;它负责整体逻辑并告诉设备要做什么。
  • 设备:这是您的 GPU。它是一个功能强大但专门的协处理器,专为大规模并行计算而设计。设备是加速器;在主机给它任务之前它不会做任何事情。
  • 您的程序始终在 CPU 上启动。当您希望 GPU 执行任务(例如将两个大矩阵相乘)时,CPU 会将指令和数据发送到 GPU。

    CPU-GPU 交互

    主机通过排队系统与设备对话。

  • CPU 启动命令:在 CPU 上运行的脚本遇到一行用于 GPU 的代码(例如,tensor.to('cuda'))。
  • 命令已排队:CPU 不会等待。它只是将此命令放入名为 CUDA Stream 的 GPU 特殊待办事项列表中——下一节将对此进行详细介绍。
  • CUDA 流

    多个流:并发

    流之间的同步

    PyTorch 张量