如何对 PyTorch 训练脚本的不同部分进行基准测试?

问题描述 投票:0回答:1

设置

我在 M3 MacBook Air 上进行了图像分类器训练,使用的代码与我今天在 Google Colab 中运行的代码完全相同。 Google 给了我一个 T4 GPU,不包括上传/下载数据,Colab 脚本花费的时间比我的 MacBook 长约 6 倍。这与这个博客文章图片以及我对消费者与生产硬件的直觉完全矛盾。该图实际上显示了 M2 max(比我的芯片好得多)与 2018 T4 相当。

提供商 谷歌合作实验室 我的 Macbook Air (8 GB)
硬件 T4 GPU M3(底座)
训练脚本运行时 ~22分钟 ~3.5分钟

我的怀疑是,即使计算不太好,我也从 Apple 的统一 RAM/vRAM 设置中获得了速度,节省了无需将图像张量移动到 GPU 上的时间,因为它们已经在 GPU 上了。是这样吗?如果是这样,则意味着将张量移入/移出 GPU 大约占训练时间的 ((22-3)/22 =) 86%,这太疯狂了,我很难相信。

最后一个问题:

有人对以下内容有任何见解吗:

A) 加速从何而来?

B) 除了 python 的

time
模块之外,我还可以使用哪些库/函数来对代码的不同部分进行基准测试?

我觉得

timeit
也不是一个举动,因为我不想运行两个训练脚本 100 多次。也许是 PyTorch 内部的东西?我很好奇拆开训练循环,并确定训练循环的某些其他部分在 M3 上的表现是否比 T4 上的表现更好。

编辑:我应该提到网络很小:2 个隐藏层尺寸 cwh->1000, 1000->10。也许这就是为什么训练只占整体计算的一小部分?

deep-learning pytorch google-colaboratory apple-silicon
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.