TensorFlow 单个和多个 GPU

17 Mar 2025 | 4 分钟阅读

我们常用的系统可以包含多个用于计算的设备,并且我们已经知道 TensorFlow 支持 CPU 和 GPU,我们用字符串表示它们。

例如

  • 如果我们有一个 CPU,它可以被寻址为 "/cpu:0"。
  • TensorFlow GPU 字符串的索引从零开始。
  • 类似地,第二个 GPU 是 "/device:GPU:1"。
TensorFlow Single and Multiple GPU

设备放置日志记录

我们可以通过创建一个会话来找出哪些设备处理特定的操作,其中预设了 log_device_placementconfiguration 选项。

TensorFlow GPU 设备放置日志记录的输出如下所示

手动设备放置

有时我们可能想决定我们的操作应该在哪个设备上运行,我们可以通过使用 tf.device 创建一个上下文来实现,我们在其中分配特定的设备,例如。 应该执行计算的 CPU 或 GPU,如下所示

上面的 TensorFlow GPU 代码将常量 a 和 b 分配给 cpu:o。 在代码的第二部分中,由于没有明确声明哪个设备要执行任务,因此默认选择 GPU(如果可用),并且它在设备之间复制多维数组。

优化 TensorFlow GPU 内存

进行内存碎片整理是为了通过映射处理器可见的几乎所有 TensorFlow GPU 内存来优化内存资源,从而节省大量潜在资源。 TensorFlow GPU 提供了两个配置选项来控制处理器在需要时分配的内存量,以节省内存,以下描述了这些 TensorFlow GPU 优化

ConfigProto 用于此目的

per_process_gpu_memory_fraction 是第二种选择,它决定了应为每个使用的 GPU 分配的总内存的片段。 下面给出的示例将用于 tensorflow 分配 40% 的内存

它仅在已经指定计算并且确定在处理期间不会更改的情况下使用。

多 GPU 系统中的单个 GPU

在多 TensorFlow GPU 系统中,默认情况下选择具有最低标识的设备,用户不需要它。

当用户指定的 TensorFlow GPU 不存在时,会获得 InvalidArgumentError,如下所示

如果我们想指定默认值

在 TensorFlow 中使用多个 GPU

我们已经了解 TensorFlow 中的塔,并且可以将每个塔分配给一个 GPU,从而创建一个用于使用 TensorFlow 多个 GPU 的多塔结构模型。

TensorFlow GPU 的输出如下

我们可以使用简单的数据集(例如 CIFAR10)来测试此多 GPU 模型,以进行实验并了解如何使用 GPU。


下一主题TensorFlow Mobile