「Apple M1とM2のパフォーマンス- SSLモデルのトレーニングにおいて」
「Apple M1とM2のパフォーマンス比較 - SSLモデルのトレーニングにおける性能検証」
Apple M1およびM2チップが自己教示学習モデルのトレーニングにどれほどのスピードで対応しているか知りたいです。
新しいAppleチップを使用してMLモデルをトレーニングするためのベンチマークの数はまだ少ないです。さらに、ほとんどの結果は、テストが実施された時点では最適化されていなかった可能性のある、旧バージョンのソフトウェアとM1チップの比較のみです。そのため、独自のベンチマークを実行することにしました。
トレーニングのApple M1およびM2チップのパフォーマンスを測定するために、シンプルなベンチマークを設定しました。cifar-10上のResNet-18バックボーンを使用したSimCLRモデルのトレーニングを行います。1つの完全なエポックを完了するのにかかる時間を測定します。実験では、さまざまなM1およびM2チップを使用し、CPUとGPUのパフォーマンスも比較します。
詳細には、以下のデバイスを使用してベンチマークを実行します:
- M1 Proおよび14コアGPUを搭載した14インチMacbook Pro 2021(本記事ではM1 Proとして参照)
- M2および8コアGPUを搭載した13インチMacbook Air 2023(本記事ではM2として参照)
- Nvidia A6000 Ampere GPUの参照実装との結果を比較します
要点
- M1 Proでは、CPUを使用するよりもGPUがトレーニングに対して8.8倍高速です。
- M1 ProのGPUは、Nvidia A6000 Ampere GPUよりも約13.77倍遅いです。
- M1 ProのGPUは、M2のGPUよりも26%高速です。
- AppleのM1およびM2チップで実行されるPyTorchは、
torch.compile
および16-bit
の精度を完全にサポートしていません。これは今後の数か月で変わることを期待しています。
以下の表に、評価した異なるコンピューティングハードウェアとエポックあたりの平均時間を分単位で示します。すべてのApple M1およびM2チップは、2023年6月30日の最新ナイトリビルドを使用し、Nvidia A6000 Ampereチップは2022年の古いバージョンのPyTorchを使用しています。
- AIと機械学習のためのReactJS:強力な組み合わせ
- 「Microsoft AIが意図せずに秘密の情報を公開し、3年間にわたって38TBの機密データへのアクセス権を提供しました」
- 記述的な質問に対する戦略的なデータ分析’ (Kijutsu-teki na shitsumon ni tai suru senryakuteki na data bunseki)
セットアップと実験
実験に使用したソフトウェアおよびハードウェアコンポーネントの概要を示します。
私たちは、lightly benchmarksのCifar10でSimCLRを使用してResNet-18をトレーニングする例を使用しました。モデルを200エポックではなく、2エポックだけトレーニングします。他のパラメータ(バッチサイズ:128
、精度:32
、ワーカーの数:8
)は同じままにしておきます。
トレーニングコードは、各エポック後にモデルをkNN分類器で評価します。2エポックは、モデルをトレーニングデータで2回トレーニングし、モデルを2回評価することと同等です。実験では、バッチあたりの平均時間を使用します。
比較のために、Nvidia A6000 Ampere GPUでの参照結果があります。Nvidia GPUは200エポックに97.7分、つまりエポックあたり0.49分を使用しています。
ワーカーの数は8
です。Nvidia A6000 GPUを使用しているシステムからM1およびM2チップを使用するシステムに切り替える際に、パラメータを調整または変更していません。ただし、CPUおよびGPUの使用状況を監視すると、M1およびM2デバイスでは常に90%以上使用されていることがわかりました。これにより、利用可能なハードウェアの限界に近いと推定されます。
Apple M1およびM2でGPUサポートを備えたPyTorchのインストール
実験には、Apple M1およびM2ハードウェアにPyTorchをインストールする必要があります。
こちらのガイドに従います:https://developer.apple.com/metal/pytorch/
最後に、M1 Pro上のテストシステムには以下のパッケージがインストールされています:
結果
Appleチップでは、torch.compile
または16ビット
精度はサポートされていないため、使用しません。現在、Apple M1およびM2のGPUは16ビット
精度をサポートしていますが、torchは高精度の勾配スケーリングや自動的により高い精度でのトレーニングに必要なautocastのサポートが不足しています。したがって、これらの機能は使用しません。
ここで、さまざまなベンチマークの結果について詳しく説明します。参考までに、Apple M1ハードウェア上でのMLモデルのトレーニングのための2つの公に利用可能なベンチマークを参照にしています。
M1 Pro GPUの結果
M1 Pro GPU上の詳細な結果を見てみましょう。実験ではPyTorch Lightningを使用しているため、使用されているアクセラレータとモデルのサイズの概要も表示されます。
GPUが検出されていることが分かります:GPU available: True (mps), used: True
2つのエポックの合計時間は13.5分です。したがって、1エポックあたりの時間は6.75分であり、NvidiaのA6000 GPUの0.49分と比較して13.77倍遅いです。
M1 Pro CPUの結果
興味本位で、同じベンチマークをM1 Pro CPUで実行しました。M1 Pro CPUには6つのパフォーマンスコアと2つの効率コアがあります。
GPUを使用する場合よりも結果が悪かったことが予想されます。CPUの2つのエポックには118.6分かかり、1エポックあたりの時間は59.3分です。これは、M1 Pro GPUを使用する場合と比較してM1 Pro CPUが8.8倍遅いことを示しています。これらの結果は、以前のベンチマークよりもGPUとCPUの性能の差が大きいことを示しています:
Apple M1ハードウェアの以前のMLベンチマーク
他に2つのベンチマークが見つかりました。どちらもPyTorchのAppleハードウェアへの初期サポートが発表された2022年5月のものです。
他の2つの報告結果に比べて、ResNet-18のトレーニングのベンチマークは計算において少なくなっています。VGG-16とResNet-50はより多くのパラメータとFLOPを持つ大きなモデルです。
公式のtorchvision事前学習済みモデルによると、以下のモデルに関する情報が得られます:
- VGG-16モデルは1億3800万個のパラメータと154.7億個のFLOPを持っています
- ResNet-18モデルは1170万個のパラメータと18.1億個のFLOPを持っています
- ResNet-50モデルは2560万個のパラメータと40.9億個のFLOPを持っています
展望
半精度(fp16)サポート
Apple M1およびM2のGPUはfp16をサポートしていますが、PyTorchのソフトウェアスタックはまだ一部の領域でサポートが不十分です。例えば、現在の問題はまだオープンなままであり、autocastを使用したミックスドプレシジョンの簡単な利用を阻んでいます。しかし、M1およびM2のチップではすでにfp16をサポートしています。これはfp16テンソルを作成し、それら上で操作を実行できることを意味します。
M1およびM2チップ向けのtorch.compileのサポート
torch.compile
を使用しようとすると、RuntimeError: Unsupported device type: mps
というエラーが発生します。これは、MPSデバイスがまだサポートされていないためです。
この記事が気に入った場合や私からのさらなる情報を読みたい場合は、VoAGIで私をフォローしてください。
Igor Susmelj、共同創設者Lightly
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles