检查 TPU 工作负载/利用率

Posted

技术标签:

【中文标题】检查 TPU 工作负载/利用率【英文标题】:Check TPU workload/utilization 【发布时间】:2019-02-24 21:13:47 【问题描述】:

我正在训练一个模型,当我在 Google Cloud Platform 控制台中打开 TPU 时,它会显示 CPU 利用率(我想是在 TPU 上)。它真的非常低(比如 0.07%),所以可能是虚拟机 CPU?我想知道训练是否真的合适,或者 TPU 是否真的那么强大。

还有其他方法可以检查 TPU 的使用情况吗?也许使用ctpu 命令?

【问题讨论】:

是的,GCP 控制台上的“CPU 利用率”选项卡实际上是对连接到 TPU 的 VM 的 CPU 使用率的测量。该 VM 完成的工作通常与内存的准备和移入 TPU 和从 TPU 移出有关。正如 Auberon 在他的回答中所说,TPU 分析工具将让您真实地了解 TPU 的实际空闲情况。 @DerekT.Jones 好的,我明白了。这现在更有意义了。虽然现在我无法在 tpu 分析工具中显示性能。看看我的另一个帖子。 【参考方案1】:

我建议使用插入到 TensorBoard 中的 TPU 分析工具。可以在here 找到安装和使用这些工具的好教程。

您将在 TPU 训练时运行分析器。它将为您的 TensorBoard 添加一个额外的选项卡,其中包含特定于 TPU 的分析信息。其中最有用的:

平均步长 主机空闲时间(CPU 空闲的时间) TPU 空闲时间 TPU 矩阵单元的利用

基于这些指标,分析器将建议开始优化模型以在 TPU 上进行良好训练的方法。您还可以深入了解更复杂的分析工具,例如跟踪查看器或最昂贵的图形操作列表。

有关性能调整的一些指南(除了那些已经链接的 ch_mike),您可以查看TPU performance guide。

【讨论】:

ok 好像我的主机空闲时间是 98%,这很糟糕,但是 tpu 空闲时间是 0%,所以这听起来很可疑。这实际上指的是什么CPU?虚拟机?【参考方案2】:

如果您正在查看 GCP -> Compute Engine -> TPU,那么您正在查看正确的位置。如果您看到关联的 Compute Engine 实例的监控图表,您会发现 CPU 图表有所不同。

目前,似乎没有其他方法可以查找该信息,因为这些选项都没有提供它:

gcloud compute tpus describe <tpu-name> --zone=<zone>

ctpu status --details

TPU API 也没有

至于你的训练是否正确,很难说,你可以参考Using TPU并确保你遵循那里的指导方针。另一个有用的资源是Improving training speed。

【讨论】:

【参考方案3】:
(vm)$ capture_tpu_profile --tpu=$TPU_NAME  --monitoring_level=2

设置 monitoring_level=2 显示更详细的信息:

TPU type: TPU v2
Number of TPU Cores: 8
TPU idle time (lower is better): 0.091%
Utilization of TPU Matrix Units is (higher is better): 10.7%
Step time: 1.95 kms (avg), 1.90kms (minute), 2.00 kms (max)
Infeed percentage: 87.5% (avg). 87.2% (min), 87.8 (max)

参考:https://cloud.google.com/tpu/docs/cloud-tpu-tools#monitor_job

【讨论】:

以上是关于检查 TPU 工作负载/利用率的主要内容,如果未能解决你的问题,请参考以下文章

机器学习与流体动力学:谷歌AI利用「ML+TPU」实现流体模拟数量级加速

快速定位性能瓶颈,检查出所有资源(CPU内存磁盘IO等)的利用率(utilization)饱和度(saturation)和错误(error)度量,即USE方法

Visual Studio 负载测试 CPU 使用率

电脑显卡占用率怎么看

快速定位性能瓶颈,检查出所有资源(CPU内存磁盘IO等)的利用率(utilization)饱和度(saturation)和错误(error)度量,即USE方法

CPU使用率和负载,物理CPU个数,核数,线程数