Skip to main content

Appleシリコンを使用したM1 Proでのディープラーニング

新しいMacbook Proでの成果を見ていきましょう。
Created on April 20|Last edited on April 20
このレポートは、Thomas Capelleによる「Deep Learning on the M1 Pro with Apple Silicon」の翻訳です。


素晴らしいAppleシリコンを搭載した新しいMac🍎をお持ちの場合、「Pythonを実行し、ディープラーニング実験を行うためにどのように設定すれば良いのか」と疑問に思うかもしれません。 そう思われている方はラッキーです。 これからその内容について説明していきますからね。 (余談ですが、M1Proの購入を考えている場合、または単に結果を知りたい場合は、下のベンチマークセクションに移動してください!
このレポートでは、以下について説明します:
✅ Pythonといくつかの共通ライブラリのために新しいMacbook Proを設定する方法
✅ Tensorflowをメタルバックエンドでインストールして完全なGPUアクセラレーションを得る方法
✅ M1Pro GPUのディープラーニングベンチマーク! (ネタバレ注意:とても期待を持てる結果になっています)。
では、始めましょう。

新しい Mac でセットアップされた Python 🐍

まず、ターミナルを開いてApple Developerツールをインストールする必要があります。これを行うには、次のように入力してください:
git clone some_repo_of_your_choice
これにより、セットアップがトリガーされます。 この後、brewやmacportsなどはもちろん、何も必要ありません!
この後、brewやmacportsなどはもちろん、何も必要ありません! (また、非常に古い Python が Apple システムで使用されています。 私の新しい14インチMacbook Proでは、Python 2.7.18が付属していました!!)
💡

新しいPythonをインストール:

  • 最も簡単な方法はminiconda3をインストールすることですが、何らかの理由で現在はARMバイナリを利用することはできません💩...
  • 2つ目の選択肢として、conda-forgeを使用するminiconda3のフォーク、つまりminiforgeを使用することが挙げられます。 個人的には現在これを使用しており、とても満足しています❤️。
(さらに、素敵な裏技として、miniconda3/miniforgeインストールの上に🐍 mambaを使用して、すべてをさらに高速化することができます。)
conda/mamba のインストールを実行したら、作業する環境を作成する必要があります。 これは次のコマンドで実行できます:
conda create --name=env_name "python<3.10" pandas numpy matplotlib jupyterlab
スペースで区切られた|env_name|の後に必要なパッケージを配置することができます。 また、|==|や|<,|>|を使用して特定のバージョンを固定することもできます。


個人的には、Jeff HeatonのYoutube チャンネルで、ML向けのApple シリコンの詳細とアップデートを見ることをお勧めします。 私がここで紹介する多くは、このビデオからの情報です:


Apple Metalバックエンドを使用してTensorflowをインストール🤘

昨年から、Python と ML フレームワークのインストールが簡単になりました。 Appleの公式ウェブサイトの指示に従うことができますが、このレポジトリで詳しい説明を掲載しています。
注意: 最新のモンテレー (Mac OS 12) が必要です。
💡
|conda/mamba|をインストールしたら、TensorFlowをインストールする必要があります。 操作を楽にするために、このレポジトリconda環境ファイルを手に入れることができます。
conda env create --file=tf_apple.yml
それから、次のように実行することができます:(以前と同様に、環境をアクティベートする必要があります。)
(以前と同様に、環境をアクティベートする必要があります。)

M1Proのベンチマーク

ここでは、16GPUコアを搭載したM1 Proのパフォーマンスを見ていきます。 私は、チームの一部のエンジニアが、M 1 Maxマシンを注文したことを把握しています。利用可能なマシンがあればアップデートします! また、M1(Proではないモデル)を研究している共同創設者のCVPからの去年のレポートを確認していない場合は、そちらをご確認ください。素晴らしいスタートとなります。
トレーニングスクリプトは、M1レポートで使用されているものと同じであり、こちらからご覧いただけます。

手順 📓

ベンチマークでは、3 4つの異なるコンピュータを使用しました。
  • 7コアGPUを搭載したエントリーレベルMacbook Air: M1_7
  • 16コアGPUを搭載した14インチMacBookPro:16GBのRAMを搭載したM1Pro。
  • NEW: 32コアGPUを搭載した16インチMacBook PRO: 64GBのRAMを搭載したM1 MAX。(only for RestNet50 benchmarks) ( RestNet50ベンチマークのみ)
  • 8コアCPUと16GB RTX5000を搭載したPaperspaceのLinuxワークステーション:| RTX5000
  • NEW: 16コアCPUとRTX 3090とRTX 3080を搭載したLinuxワークステーション
  • NEW:ディープラーニングの古き王、GTX 1080 Ti
( K80の基本的なGoogle Colabインスタンスを切り替えることもできますが、非常に遅くなります。)
私たちのモデルでは、次の2つのバリアントでMobileNetV2���トレーニングしました。
  • モデルのヘッドを微調整する」が実行され、モデルのヘッドのみが約20kのパラメータで微調整されました。
  • フルモデルトレイン」では、2.5MパラメータのMobileNetV2をトレーニングしました。
プロットの各セットでは、両方が実行されます。

結果

ノートパソコンに使用されるエネルギーは、GPUマシンと比較して非常に低いことがわかります。 これはもちろん普通の結果であり、使用されるエネルギーに関して意味のある結果を得るためには、モバイルGPUに対してベンチマークを行う必要があります。

all runs
0

以下のグラフでは、サンプル/秒を見ることもできます。
注意:最初のエポックでは、おそらくキャッシュで何かが起こっているため、NVIDIAカードの速度は遅くなりますが、その後はフルスピードになります。
💡
これは、モデルのヘッドを微調整するときにのみ起こります。 完全にトレーニング可能なネットワークの場合、違いは小さく、RTX5000はM1Proよりも約55%高速です。RTX2060mに匹敵する速度が得られますが、RTX2060が4倍の電力を使用することを考えると、この結果は悪くありません。
(注意: NVIDIAのNGC TensorFlowコンテナ内の実行は、conda環境の実行よりもかなり高速です。 |ngc|としてタグ付けされているので、切り替えを選択できます。 これらのコンテナは、できるだけ高速に実行できるように調整および最適化されており、GoogleとNVIDIAによってメンテナンスされています。 現在、Appleの同等品はありません。)

fine-tune model's head
0
train full model
0


おまけ: Resnet50

バックボーンをResnet50に交換するとどうなるでしょう? ここでは、フルモデルをトレーニングし、合計23.5Mのパラメータを使用します。 こちらに🟩緑色の電源が表示されますが、ノートパソコンのGPUはワークステーションカードとは比較されません。

train full model
0


結論

16コアGPUを搭載したM1Proは、M1チップへのアップグレードです。GPUコアは2倍になり、メモリ帯域幅は2倍以上になります。 メモリはCPUとGPUで共有されるため、大量のメモリにアクセスできます。テンソルをデバイス間で移動する必要がないため、ディープラーニング・パイプラインに最適です。 また、64GBのRAMを搭載した構成を入手できます。これは実際、ダントツで現在の市場における最大のモバイルGPUです。
予想通り、M1 Pro MaxはM1 Proの2倍の速度です( GPUコア数の2倍)。 低消費電力のノートパソコンGPUでは、RTX5000のほぼ同等のパフォーマンスを実現します。
M1はワークステーションのビデオカードの代わりにはなりませんが、外出先でモデルを微調整するためのコンピューティングを提供してくれます。 バッテリー電源のテストを実行しましたが、パフォーマンスに影響は見られませんでした。 それ以上に、M1の素晴らしい点は、ジェットエンジンのような音を立てる私のXPS15と比較すると、コンピュータがやや暖かく静かな状態で維持されるということです✈🔊。
結論としては、これは革新的なものになるかもしれません。

それでは、Pytorch🔥は??

この間、Pytorchの主任開発者であるSoumith Chintalaは、この重大ニュースを発表しました!

Iterate on AI agents and models faster. Try Weights & Biases today.