著者のDaniel Bourke氏はオーストラリア在住の機械学習エンジニアで、同氏が公開したさまざまな機械学習に関する記事はMediumでも人気があり、その一部はAINOWでも紹介してきました(同氏の詳細は公式サイトを参照)。同氏がMediumに投稿した記事『AppleのM1 ProとM1 MaxはGoogle Colabを最大54%上回る結果に』では、M1 ProおよびM1 Maxを搭載したMacBook Proの機械学習開発性能に関するベンチマークテストが報告されています。
Appleは2021年10月、機械学習モデル開発のための機構「Apple Neural Engine」を搭載したM1チップをスケールアップしたM1 ProとM1 Maxを発表しました。M1チップに関するベンチマークテストを行ったことがあるBourke氏は、同様のテストをM1 ProとM1 Maxにも行いました。行ったテストの内容とその結果は、以下の表のようにまとめられます。
Bourke氏が実施したM1 ProとM1 Maxを対象としたベンチマークテスト
テスト内容 |
テスト結果 |
さまざまなサイズとエンコーディングの動画の書き出し | ProResエンコーディングの場合、M1 ProとM1 Maxは短時間で書き出す |
機械学習モデル生成機能CreateML使用時の訓練時間 | M1 ProとM1 Maxは短時間で訓練完了。M1 ProとM1 Maxの性能差は少ない。 |
TensorFlowを用いた小規模モデルの訓練時間 | M1チップシリーズで大きな性能差はない。 |
TensorFlowを用いた大規模モデルの訓練時間 | M1 ProとM1 Maxは短時間で訓練完了し、Google Colabより早かった。M1 Maxがもっとも早い。 |
以上のベンチマーク結果をふまえて、Bourke氏は機械学習モデル開発という観点からM1チップ搭載MacBook Proシリーズを以下のように評価します。
機械学習モデル開発から見たM1チップ搭載MacBook Proシリーズの評価
|
ちなみに、Bourke氏は現在使用している13インチM1 MacBook Proを14インチM1 Pro MacBook Proに買い替えることを検討している、とのことです。
なお、以下の記事本文はDaniel Bourke氏に直接コンタクトをとり、翻訳許可を頂いたうえで翻訳したものです。また、翻訳記事の内容は同氏の見解であり、特定の国や地域ならびに組織や団体を代表するものではなく、翻訳者およびAINOW編集部の主義主張を表明したものでもありません。
目次
2021年リリースのApple M1 ProとM1 Maxを使った機械学習のスピードテスト比較
私が使っているメインキーボードは、MacBook Proに取り付けられている。このキーボードをMacBook Proの上にのせてタイピングしている。
Appleは、ハードウェアをアップグレードした新しいMacBook Proをいくつかリリースした。それらはM1 ProやM1 Maxチップを使った再設計やその他から構成されているのだが、技術オタクの私はそれらを試してみることにした。
私は普段MacBook Proを機械学習の動画を作ったり、機械学習のコードを書いたり、機械学習を教えたりするのに使っている。
この記事では以下のようなことに焦点を当てる。
AppleのM1、M1 Pro、M1 Maxの各チップの相互に、さらにはほかのいくつかの他のチップと比較する。
どのように比較するのか。
以下の4つのテストを実行して比較する。
- Final Cut Proの書き出し ― 各種MacBook Proが4時間の長さのTensorFlow解説動画(私が作成したコーディング教育用動画)と、長さ10分のストーリー動画(H.264とProResのエンコーディングを使用)をどれだけ速く書き出せるか。
- CreateMLによる画像分類機械学習モデルの作成 – 各種MacBook ProがCreateMLを用いて10,000枚の画像を画像分類モデルに変換するのに、どのくらいの速さで出来るだろうか。
- TensorFlowを使ったCIFAR10を対象としたTinyVGGモデルによる画像分類(tensorflow-macos
を使う) ― tensorflow-metalのおかげで、MacBookの内蔵GPUを活用して機械学習モデルの訓練を高速化できるようになった。小さいモデルだとどのくらい高速化するだろうか。 - tensorflow-macosを使ったFood101データセットを対象としたEfficientNetB0の特徴抽出- 私は機械学習モデルをゼロからトレーニングすることはほとんどない。それでは新しいM1 ProとM1 Maxチップは、TensorFlowコードを使った転送学習をどのように実行するだろうか。
この記事は、パフォーマンスに厳密に焦点を当てている。デザイン、入力、出力、バッテリー寿命については他にもたくさんのリソースがあるので、そちらをご覧頂きたい。
ハードウェアのスペック
私は現在、IntelベースのMacBook Pro 16インチをメインマシンとして使用しており(ほとんど常に電源に接続されている)、2020年製の13インチM1 MacBook Proを持ち運び用のオプションとして使用している。
そしてより大きな機械学習モデルのトレーニングには、Google ColabやGoogle Cloud GPUを使ったり、TITAN RTX GPUを搭載したディープラーニング専用PCにSSH接続(インターネット経由で接続)したりしている。
TensorFlowのコードテストでは、Google ColabとTITAN RTX GPUとの比較も掲載する。
以下のスペック表は、MacBook Pro、Intelベース、M1、M1 Pro、M1 Maxのそれぞれに焦点を当てている。
マシン名 | チップ | CPU | GPU | Neural Engine | RAM | ストレージ | 価格 |
2019年発売MacBookPro 16インチ | Intel | 2.4Gz 8コアIntel Core i9 |
AMD Radeon Pro 5500M w/ 8GB of GDDR6 memory | なし | 64GB | 2TB | 購入時は4999米ドル(公式ストアでは終売) |
2020年発売MacBookPro 13インチ | M1 | 8コア | 8コア | 16コア | 16GB | 512GB | 1699米ドル |
2021年発売MacBookPro 14インチ | M1 Pro | 8コア | 14コア | 16コア | 16GB | 512GB | 1999米ドル |
2021年発売MacBookPro 14インチ | M1 Max | 10コア | 32コア | 16コア | 32GB | 1TB | 3299米ドル |
テストするMacモデルのハードウェアスペックの違い。
各実験においてすべてのMacBook ProはmacOS Monterey 12.0.1を搭載し、電源に接続した状態にした。
実験1:Final Cut Proの書き出し(小さい動画と大きい動画)
私はYouTubeの動画や機械学習を教える教育動画を制作している。
それゆえ、私が使うマシンはレンダリングと書き出しが速くなければならない。こうした要求がスペックを増強した2019年モデルの16インチMacBook Proを購入した大きな理由のひとつであり、その結果としてラグなく動画を編集できるようになった。
さらに、M1 ProとM1 Maxのチップはプロをターゲットにしている。プロの多くは、(今のところ)私よりもはるかに高い品質で動画を編集している。
実験に使ったそれぞれの動画は、H.264エンコーディング(高圧縮でGPU負荷が高い)とProResエンコーディング(低圧縮でCPUやGPU負荷が低い)の両方で書き出した。
以上のような実験をするのは、新しいM1チップには専用のProResエンジンが搭載されているというAppleの発表があったからだ(※訳註1)。
M1 ProはProResのプロ向けビデオコーデックのために専用の高速化機能も備え、非常に少ない電力で複数の高品質の4Kと8KのProResビデオストリームを再生できます。M1 Maxはさらにその上を行き、M1 Proよりも最大2倍高速のビデオエンコーディングを実現し、2つのProResアクセラレータを搭載しています。M1 Maxにより、新しいMacBook Proでは、前世代の16インチMacBook Proと比較して最大10倍という驚異的な速さで、Compressorを使ったProResビデオのトランスコードができるようになります。
大きい動画を使った実験
実験の詳細:
- 動画:ディープラーニングのためのTensorFlowを学ぶ パート2
- 長さ:4時間
- スタイル:小さな動画(各動画は最大10分程度)の30画面分ほどの記録をつなぎ合わせたもの
- 品質:1080p
マシン名 | チップ | エンコーディング | エクスポート時間(時間:分:秒) |
2019年発売MacBookPro 16インチ | Intel | H.264 | 33:06 |
2020年発売MacBookPro 13インチ | M1 | H.264 | 50:09 |
2021年発売MacBookPro 14インチ | M1 Pro | H.264 | 2:00:26 |
2021年発売MacBookPro 14インチ | M1 Max | H.264 | 2:02:29 |
興味深いのは、新しいM1(ProおよびMax)がH.264エンコーディングを使用した場合、ベースとなるM1の2倍以上、IntelベースのMacの4倍近くの時間を要していることだ。
また、H.264エンコーディングを使用した場合、M1 Pro(最大89%のアイドル率)とM1 Max(最大68%のアイドル率)の両方で、大量のハードウェアがアイドル状態になっていたことも注目すべき点である。
新しいチップのパワーを最大限に活用するには、ソフトウェアのアップデートが必要なのだろうか。
しかし、ProResエンコーディングの場合は話が違う。
マシン名 | チップ | エンコーディング | エクスポート時間(時間:分:秒) |
2019年発売MacBookPro 16インチ | Intel | ProRes | 33:24 |
2020年発売MacBookPro 13インチ | M1 | ProRes | 30:26 |
2021年発売MacBookPro 14インチ | M1 Pro | ProRes | 12:10 |
2021年発売MacBookPro 14インチ | M1 Max | ProRes | 11:24 |
ProResエンコーディングでは、新しいM1チップが真に力を発揮する。
H.264エンコーディングと比較して、M1 ProとM1 Maxの両方でProResへの書き出し時に膨大な量のCPU使用率が発生した。この現象は、これら2つのチップにProRes専用のコアがあるからだろうか。
しかし、ProResエンコードでの書き出しはH.264よりもはるかに高速であるにもかかわらず、ファイルサイズの違いにより、多くの人にとってはほとんど使えないものとなってしまった。
大きな動画をH.264で書き出したときのファイルサイズは7GBに対し、ProResで書き出したときのそれは167GBとなった。
あなたのインターネット環境における通信速度はわからないが、ProResエンコーディングのような動画をアップロードするには、私の場合、3〜4日を要する。
小さい動画を使った実験
小さな動画では、より似通った結果が得られた。
実験の詳細:
- 動画:週に5日、機械学習を勉強する方法
- 長さ:10分
- スタイル:動画クリップに収録した音声をボイスオーバーとして重ねる
- 品質:1080p
マシン名 | チップ | エンコーディング | エクスポート時間(時間:分:秒) |
2019年発売MacBookPro 16インチ | Intel | H.264 | 2:59 |
2020年発売MacBookPro 13インチ | M1 | H.264 | 3:48 |
2021年発売MacBookPro 14インチ | M1 Pro | H.264 | 3:28 |
2021年発売MacBookPro 14インチ | M1 Max | H.264 | 3:31 |
書き出し時間は全体的に非常に似通っている。
しかし、M1 ProとM1 Maxのチップには、H.264エンコーディングへの書き出し時にアイドル状態になるハードウェアが大量にあった。
マシン名 | チップ | エンコーディング | エクスポート時間(時間:分:秒) |
2019年発売MacBookPro 16インチ | Intel | ProRes | 2:35 |
2020年発売MacBookPro 13インチ | M1 | ProRes | 2:41 |
2021年発売MacBookPro 14インチ | M1 Pro | ProRes | 1:09 |
2021年発売MacBookPro 14インチ | M1 Max | ProRes | 1:05 |
M1 ProとM1 Maxは、ProResエンコーディングを使用したときに非常に優れている。アクティビティモニタを確認すると、M1 Proでは350~450%、M1 Maxでは300~500%という膨大な量のCPU使用率が表示されていた。
実験2:CreateMLによる画像分類
CreateMLとは、Xcode(AppleのiOS/macOSアプリ開発用ソフトウェア)に付属するApple製の機械学習アプリである。
同アプリは、データを機械学習のモデルにするための簡単な方法を提供している。
私は弟と一緒にNutrify(食べ物の写真を撮ってそれについて学ぶアプリ)(※訳註2)のプロトタイプモデルを作るのに同アプリを試していた。
同アプリは私たちのユースケースに適しているだけでなく、Appleデバイスに最適化された学習済みモデルを生成してくれる。
実験の詳細:
- データ:Food101の全クラスからランダムに選んだ10%の画像サブセット(~7,500枚の訓練用画像と~2500枚のテスト用画像を使用)(※訳註3)
- 学習:25エポック、すべてのデータ拡張設定がオン
- Macモデル:CreateML搭載モデル(Appleは使用しているアーキテクチャを公表していない)
マシン名 | チップ | エポック数 | 総訓練時間(分) |
2019年発売MacBookPro 16インチ | Intel | 25 | 24 |
2020年発売MacBookPro 13インチ | M1 | 25 | 20 |
2021年発売MacBookPro 14インチ | M1 Pro | 25 | 10 |
2021年発売MacBookPro 14インチ | M1 Max | 25 | 11 |
今回の実験でもM1 ProとM1 Maxの間に大きな差はなかった。とはいえ、どちらも他のチップを非常に凌駕していた。
訓練中、M1 ProとM1 Maxのアクティビティモニタを確認すると、「MLRecipeExcecutionService」というプロセス名で大量のCPU使用量が表示されていた。
特筆すべきは訓練中も特徴抽出中も、GPUはまったく使用されていなかったことだ。
以上からCreateMLは16コアのNeural Engineを使用してトレーニングを高速化していると考えられる。しかし、アクティビティモニタではNeural Engineがいつ起動するかは明らかにされていないので、この見解には100%の確証はない。
また、CreateMLがどのようなモデルを使用しているかも明らかにされていない。パフォーマンスから判断すると、少なくとも事前学習されたResNet50モデルあるいはEfficientNetB2、もしくはこれら2つと同等かそれ以上の性能のモデルを使っているのではないかと推測される(※訳註4)。
またEfficientNetとは、Googleリサーチチームが2019年に発表した画像認識モデル。従来のモデルよりパラメータが少ないにも関わらず、最高水準の精度を発揮する。また転移学習にも向いているとされる。同モデルを論じた論文はこちら、GitHubはこちら。
実験3:TensorFlowを使ったCIFAR10を対象としたTinyVGGモデルによる画像分類
CreateMLは素晴らしい機能を備えているが、独自の機械学習モデルを作成したい場合もある。
そのような場合にはTensorFlowのようなフレームワークを使うことになるだろう。
私はTensorFlowについて教えているし、TensorFlowを使ってほとんど毎日コードを書いている。ゆえにTensorFlowが新しいマシンでどのように機能するかを見るのを楽しみにしていた。
カスタムモデルを生成するTensorFlow テストのすべてにおいて、すべてのマシンが同じ環境設定と同じデータセットを使って同じコードを実行するようにした。
MacBook Proだけを用いた実験1および2との唯一の違いは、各Macと対比してGoogle ColabとNvidia TITAN RTXの環境でテストしたことだ。
それぞれのMacでは、GPUアクセラレーションのためにtensorflow-macos (TensorFlow for Mac) とtensorflow-metalの組み合わせを実行した。一方、Google ColabとNvidia TITAN RTXは標準的なTensorFlowを使用した。
すべての実験とTensorFlow on MacのセットアップのコードはGitHubで見れる。
原註:MacのGPUでPyTorchのコードを高速化するためのtensorflow-metalに相当するPyTorchは今のところ見当たらない。現時点ではPyTorchはMacのCPUでのみ動作する。
最初のTensorFlow実験の詳細:
- データ:TensorFlowのデータセットから引用したCIFAR10(32×32の画像、10クラス、50,000枚の訓練用画像、10,000枚のテスト用画像)(※訳註5)
- モデル:TinyVGGモデル(CNN Explainerウェブサイトより)(※訳註6)
- 学習:10エポック、バッチサイズ32
- コード:GitHubを参照
TinyVGGがスクールバスを画像認識する処理の可視化画像
マシン名 | チップ | エポック数 | 総訓練時間(分) | 1エポック当たりの時間(平均値、分) |
2019年発売MacBookPro 16インチ | Intel | 10 | 180 | 18 |
2020年発売MacBookPro 13インチ | M1 | 10 | 137 | 14 |
2021年発売MacBookPro 14インチ | M1 Pro | 10 | 161 | 16 |
2021年発売MacBookPro 14インチ | M1 Max | 10 | 143 | 14 |
Google Colab* | Nvidia K80 GPU | 10 | 167 | 17 |
カスタムディープラーニング用PC | Nvidia TITAN RTX | 10 | 37 | 4 |
*TensorFlowの実験にはGoogle Colabの無料版を使用した。Google Colabは、わずかなセットアップでGPUに接続されたJupyter Notebookを使用できるGoogleが提供する素晴らしいサービスである。無料版では以前より高速なGPU(Nvidia P100、T4)を提供していたが、私がそれらにアクセスできるようになってからしばらく経った。Colab Proによってより高速なGPUを使えるが、私が住んでいる場所(オーストラリア)ではまだ利用できない。
TITAN RTXが他のマシンを凌駕したのは納得する。同チップは、機械学習とデータサイエンスのために作られたGPUなのだ。
エポックあたりの時間では、すべてのMacがほぼ同じ範囲内のパフォーマンスを示した。M1 MaxとプレーンなM1マシンでは、同じような時間でコードを実行している。
それぞれのM1 Macのアクティビティモニタを見ると、訓練中に大量のGPUが使用されていた。この現象は、AppleのMetal GPUフレームワークを活用してTensorFlowを高速化するためのソフトウェアパッケージである、Appleのtensorflow-metalのPluggableDeviceによるものだ。
実験4:tensorflow-macosを使ったFood101データセットを対象としたEfficientNetB0の特徴抽出
最後の機械学習実験は、より大規模なものになった。実験3より多くてより大きい画像を使用した。
機械学習モデルを訓練する際に素晴らしい結果を得るための最良の方法の1つは、転移学習を使うことだ。
転移学習では(開発したいモデルに使われる訓練用データと)似たようなデータで訓練した学習済みモデルの重み(パターン)を、開発したいモデルのデータセットに対して流用できる。
実験4では、Food101データセットをEfficientNetB0モデルの転移学習に流用した。
実験の詳細:
- データ:TensorFlowデータセットから引用したFood101 (224×224の画像、101クラス、~75,000枚の訓練用画像、 ~25,000枚のテスト用画像)
- モデル:ImageNetで事前学習したEfficientNetB0の最上層に置き換えたもの(特徴抽出)
- 学習:5エポック,バッチサイズ32
- コード:GitHubを参照
マシン名 | チップ | エポック数 | 総訓練時間(分) | 1エポック当たりの時間(平均値、分) |
2019年発売MacBookPro 16インチ* | Intel | 5 | 3032 | 606 |
2020年発売MacBookPro 13インチ | M1 | 5 | 3387 | 677 |
2021年発売MacBookPro 14インチ | M1 Pro | 5 | 1486 | 297 |
2021年発売MacBookPro 14インチ | M1 Max | 5 | 959 | 192 |
Google Colab | Nvidia K80 GPU | 5 | 2122 | 424 |
カスタムディープラーニング用PC | Nvidia TITAN RTX | 5 | 464 | 93 |
*16インチのMacBook Proで実行されたコードでは、Adamオプティマイザーの代わりにSGDオプティマイザーが使用された。こうしたのはIntelベースのMacで実行されたtensorflow-macosに未解決の問題があり、その修正方法が見つからなかったためだ。
ここで最も注目すべきは、より大規模な実験にスケールアップしたときのM1 ProとM1 Maxの性能だ。
実験3ではすべてのMacで同じような結果が得られたが、データ量(画像サイズと画像数の両方)が増えると、M1 ProとM1 Maxは他のMacを大きく引き離す。
M1 ProとM1 Maxは、Nvidiaの専用GPUを搭載したGoogle Colabをも凌駕する(M1 Proでは約1.5倍、M1 Maxでは約2倍の速度を実現)。
以上の実験結果はM1 ProあるいはM1 Maxを使えばローカルマシンでの機械学習実験を、オンラインのColabノートブックで行うよりも高速に行えることを意味する。したがって、実験した2つのチップを使うとローカルで実行することの利点をすべて享受できる。ただし、Google Colabにはリンクを使ってノートブックを共有できるという素晴らしい機能がある。
もちろん、TITAN RTXが最も優れた性能を発揮しているがM1 Maxもそれに劣らないため、ポータブルデバイスとしては後者が非常に印象的だ。
アクティビティモニタを見ると、すべてのデバイスでGPUの大きな使用量が表示されていた。
どれを買うべきか?
私はこの1年間、13インチのM1 MacBook Proを毎日使っている。小規模な機械学習実験や動画編集、Google Colabのブラウザなどに使用している。
しかし現在ではPCをTITAN RTX あるいはクラウドにスケールアップする必要性を感じるまでは、M1 Pro 搭載の14インチMacBook Proにアップグレードして、すべてをローカルで行うこと(Google Colabはもう使わない)を検討している。
今回のテストから13インチM1 MacBook Pro(今回はテストしてなかったが、M1 MacBook AirでもM1 MacBook Proの結果に近いパフォーマンスが得られるはず)が、最初に使用するノートパソコンとしては依然として素晴らしいものであることがわかった。
もっとも予算に余裕があれば、M1 Proを買った方が明らかにパフォーマンスが向上する。
M1 Maxについては、私のテストではベースとなったM1 Proとの1100ドルの価格差を正当化するのに苦労した。私としては、この差額をローカルストレージやRAMの追加、あるいは専用GPUの購入に充てたいと思う。
要約すると、以下が私の考える推奨事項だ。
- 13インチM1 MacBook Pro/MacBook Air ― 機械学習やデータサイエンスの初心者には、依然として素晴らしいノートPC。
- 14インチM1 Pro MacBook Pro ― M1から明らかにパフォーマンスが向上しており、新しいデザインを楽しみたい人や予算に余裕がある人には価値がある。
- 14インチM1 Max MacBook Pro ― M1 Proからの性能向上が顕著なのは大規模なモデルの訓練時だけで、他の多くのパフォーマンスベンチマークはM1 Proと同じレベル。4K動画を複数のストリームで編集することが多い人には、選択肢の一つになるかも知れない。
まとめ
Appleの専用チップがいつ、どこで使われているのか私は見てみたいものだ。
例えば、Neural Engineがどのような場面で使われているのかを見れたらクールだろう。あるいはCreateMLが使われる様子も見てみたい(M1のマシンはすべて、CreateMLの実験における訓練を非常に速く実行した)。
さらに言えば、Neural Engineを活用するためのコードを自分自身で書けないだろうか。
昨年、私はM2を搭載した16インチのMacBook Proはどうかと言ったが(※訳註7)、AppleはM1 Maxを提供してくれた。もしかしたら、M2はMac miniや新しいiMacに搭載されるかも知れない。
いずれにしても、特定の目的のための専用チップがトレンドになっていることは間違いない。そして、性能面でのメリットがその正当性を物語っている(※訳註8)。
リソース
- テストと評価に使用したすべてのコードはGitHubでご覧いただけます。
- 機械学習やデータサイエンスのために新しいM1マシンをセットアップする方法を紹介した動画をご覧ください。
- このブログ記事の動画版をYouTubeでご覧いただけます。
原文
『Apple’s M1 Pro and M1 Max Outperform Google Colab by up to 54%』
著者
Daniel Bourke
翻訳
吉本幸記(フリーライター、JDLA Deep Learning for GENERAL 2019 #1取得)
編集
おざけん