优化 GPU 性能

您可以使用以下方式来提升虚拟机 (VM) 实例上的 GPU 的性能:

停用自动启动功能

当您对 NVIDIA®Tesla®K80 GPU 使用自动启动功能时,系统会自动调整时钟速度,以便找到适合给定应用的最佳速率。不过,不断调整时钟速度也会导致 GPU 的性能有所下降。如需详细了解自动启动功能,请参阅使用 GPU Boost 和 K80 Autoboost 提升性能

我们建议您在 Compute Engine 上运行 NVIDIA®Tesla®K80 GPU 时停用自动启动功能。

要在挂接了 NVIDIA®Tesla®K80 GPU 的实例上停用自动启动功能,请运行以下命令:

sudo nvidia-smi --auto-boost-default=DISABLED

输出结果可能类似于以下内容:

All done.

将 GPU 时钟速度设置为最高频率

要在挂接了 NVIDIA®Tesla®K80 GPU 的实例上将 GPU 时钟速度设置为最高频率,请运行以下命令:

sudo nvidia-smi --applications-clocks=2505,875

使用高达 100 Gbps 的网络带宽

创建使用更高带宽的虚拟机实例

在 Compute Engine 上运行的使用 NVIDIA®Tesla®T4 或 V100 GPU 的虚拟机实例上,您可以使用更高的网络带宽来提升分布式工作负载的性能。

如需详细了解 GPU 实例支持的网络带宽,请参阅网络带宽和 GPU

如需创建挂接了 GPU 且网络带宽高达 100 Gbps 的虚拟机实例,请执行以下操作:

  1. 查看获得可用的最大带宽时所需的最低 CPU、GPU 和内存配置。
  2. 如需创建挂接了 T4 或 V100 GPU 的虚拟机实例,请参阅添加或移除 GPU

    用于创建虚拟机实例的映像必须安装 Compute Engine 虚拟网络接口 (gVNIC)。如需详细了解如何创建支持 Compute Engine 虚拟网络接口的虚拟机实例,请参阅创建使用 Compute Engine 虚拟网络接口的虚拟机实例

    或者,您也可以使用 Google 深度学习虚拟机映像目录中的 tf-latest-gpu-gvnic 映像,该映像已预安装了 GPU 驱动程序、机器学习软件和 Compute Engine 网络驱动程序。

    例如,要创建一个名为 test-instance 且最大带宽为 100 Gbps、挂接了 8 个 V100 GPU 并使用深度学习虚拟机映像的虚拟机实例,请运行以下命令:

    gcloud compute instances create test-instance \
       --custom-cpu 96 \
       --custom-memory 624 \
       --image-project=deeplearning-platform-release \
       --image-family=tf-latest-gpu-gvnic \
       --accelerator type=nvidia-tesla-v100,count=8 \
       --maintenance-policy TERMINATE \
       --metadata="install-nvidia-driver=True"  \
       --boot-disk-size 200GB \
       --zone=us-central1-f
    
  3. 创建虚拟机实例后,您可以验证网络带宽

检查网络带宽

使用高带宽 GPU 时,您可以使用网络流量工具(如 iperf2)来测量网络带宽。

如需检查带宽速度,您需要至少两个已挂接 GPU 且同时支持您正在测试的带宽速度的虚拟机实例。

如需测量网络带宽,请完成以下步骤:

  1. 在一个虚拟机实例上,运行以下命令:

    iperf -s
  2. 在另一个虚拟机实例上,运行以下命令。将 server_dns_or_internal_ip 替换为您的虚拟机实例的 DNS 或内部 IP 地址

    iperf -c server_dns_or_internal_ip -P 16 -t 30

当您使用最大可用带宽 (100 Gbps) 时,请注意以下注意事项:

  • 由于虚拟化堆栈的以太网、IP 和 TCP 等协议的标头开销,吞吐量(以 netperf 衡量)会在值大约为 90 Gbps 时达到饱和。

    TCP 的网络速度能够达到 100 Gbps。其他协议(如 UDP)的速度目前较慢。

  • 由于协议开销和网络拥塞度等因素,数据流的端到端性能可能略低于 100 Gbps。

  • 您需要使用多个 TCP 流来实现虚拟机实例之间的最大带宽。Google 建议使用 4-16 个数据流。如果您使用 16 个数据流,您通常需要最大限度地提高吞吐量。根据您的应用和软件堆栈,您可能需要调整设置或用于设置多个数据流的代码。

  • 100 Gbps 网络带宽只能单向实现。TX + RX 的总和可能大约为 100 Gbps。

后续步骤