我在 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。也许这就是为什么训练只占整体计算的一小部分?
也许是 pytorch profiler (https://pytorch.org/tutorials/recipes/recipes/profiler_recipe.html)