Apple的M1可以帮助您比NVIDIA V100更快更高效地训练模型吗?
在M1 Mac Mini和Nvidia V100上分析Tensorflow训练的运行时间、能耗和性能
Created on January 22|Last edited on January 27
Comment
本报告是作者Chris Van Pelt所写的"Can Apple's M1 help you train models faster & cheaper than NVIDIA's V100?"的翻译
Run set
24
方法
我们在Cifar 10上使用MobileNetV2架构训练了一个计算机视觉模型。我们在此colab 中的Nvidia V100上训练了一个计算机视觉模型,同时在16GB M1 Mac Mini上使用tensorflow_macos fork 训练了一个相同的模型。 我们使用W&B Sweeps更改了以下超参数:
batch_size:
- 32
- 64
img_dim:
- 96
- 128
trainable:
- true
- false
当trainable为false时,我们仅训练网络中的最后一层。 当trainable为true时,我们将更新MobileNetV2中的所有权重。
当训练的权重较少时,我们可以看到m1具有更好的性能提升。这可能由于M1的卓越内存架构。
Trainable
8
Non-Trainable
8
能耗
使用的Apple硬件是具有16GB RAM的M1 Mac Mini。 在训练期间,风扇始终听不到声音,而且外壳摸起来不热。 令人惊讶的是,M1用于实现与V100相同数量的计算所需的能耗要少得多。 V100使用的是12nm工艺,而m1使用的是5nm工艺,但V100始终使用接近6倍的能耗。
Run set
16
注意事项
设置Mac Mini以运行新的加速Tensorflow程序包并不容易。我发现获得各种需要编译的软件包的最简单方法是从Miniconda的arm64分支中获取。 tensorflow库默认情况下应该选择最佳的加速路径,但是除非我明确说明该库使用以下代码和gpu,否则会持续看到区段错误(segmentation faults):
from tensorflow.python.compiler.mlcompute import mlcompute
mlcompute.set_mlc_device(device_name="gpu")
我选择MobileNetV2来加快迭代速度。当我尝试使用ResNet50或其他更大的型号时,M1和Nvidia之间的差距越来越大。当我的输入在M1上超过196x196维度时,我也遇到了区段错误。
通常,这些入门级Mac似乎目前仅适用于较小的模型体系结构。
我还观察到在M1上仅训练网络最后一层的试验未能收敛。 但NVidia V100并非如此。经过进一步的实验,我能够通过降低学习率来使M1运行收敛。目前尚不清楚为什么M1硬件对学习率要求更高。
Apple M1
Run set
8
Nvidia V100
Run set
8
结论
现在还处于初期,但这些初步结果看起来很有希望。当Apple发布具有更多内核和RAM的Pro硬件时,在Apple硬件上训练机器学习模型可能会变得司空见惯。在W&B,我们所有的员工都使用Mac硬件进行开发,我知道我们的很多团队都迫不及待地想要获得下一代硬件。我们将密切关注tensorflow_macos分支,并最终将其合并到主要的tensorflow存储库中。我也很好奇PyTorch 团队是否决定与Apple ML Compute库集成,目前在Github上正在进行讨论。
就像您在本报告中看到的那样,我们最新版的wandb库(0.10.13)自动从Apple M1硬件捕获GPU指标。
我们会很高兴如果其他人可以尝试一下!请在此报告中发表评论或对这些结果提出疑问。
Add a comment
Tags: Intermediate, Domain Agnostic, Hardware, Keras, Experiment, MobileNet v2, Panels, Plots, CIFAR10
Iterate on AI agents and models faster. Try Weights & Biases today.