2020年11月、Appleは同社純正チップ「M1チップ」とそれを搭載したMacBook Airと13インチMacBook Proを発表しました。同チップはCPUとGPUで驚異的な性能を発揮するうえに、Neural Engineを実装することによって機械学習の実行にも最適化されていると語られました。この説明を確かめるために、Bourke氏は実際にその性能を測定してみました。
同氏はM1チップ搭載MacBook Air、M1チップ搭載13インチMacBook Pro、そしてIntelチップ搭載16インチMacBook Proを用意して、以下のような3つの実験を実行しました(実験結果の詳細は以下の記事本文を参照)。
- 実験1:Final Cut Proを使って動画を書き出したところ、RAMを最大限まで増強していた16インチMacBook Proが最速だったが、バッテリー消費が激しかった。対してM1チップ搭載のMacBook2モデルはバッテリー消費が小さく、動作も静かだった。
- 実験2:macOSに実装されている機械学習実行機能「CreateML」を使ってAIモデルの訓練を実行したところ、MacBook Airが最速だった。16インチMacBook Proは途中でバッテリーが切れたうえに、再充電して訓練を再開しても完了しなかった。
- 実験3:macOSでTensorFlowを実行できるフレームワークtensorflow_macosを使って各種AIモデルを訓練したところ、おおむねM1チップ搭載MacBook2モデルが16インチMacBook Proを凌駕する性能を発揮した。
以上の結果から、M1チップ搭載MacBookと比べれば(スペックを増強しても)もはやIntelチップの16インチMacBook Proは時代遅れ、と同氏は結論づけます。
AppleはMacBookとiMac、さらにはMac Proのすべてに関して、同社製チップを搭載したモデルを開発すると発表しています。それゆえ、機械学習モデル開発における同社のPCのシェアが今後大きくなるかも知れません。
以下の後編にあたる記事本文では、実験3の結果と実験全体の総括を解説していきます。
なお、以下の記事本文は氏に直接コンタクトをとり、翻訳許可を頂いたうえで翻訳したものです。また、翻訳記事の内容は同氏の見解であり、特定の国や地域ならび組織や団体を代表するものではなく、翻訳者およびAINOW編集部の主義主張を表明したものでもありません。
目次
実験3:TensorFlow macOSのコード
M1チップの発表講演で、Appleはこの新しいシリコンが「TensorFlowのような人気のあるディープラーニングフレームワークを前世代のMacよりもはるかに高速に実行できる」と主張した。
それを聞いて、私は少し背筋を伸ばして座らざるを得なかった。
今TensorFlowって言った?しかもネイティブに?
私は発表を見直した。
ああ、確かにそうだ。TensorFlowと言っていた。
その後、TensorFlowチームとApple Machine LearningチームがM1チップとIntelベースのMacでの新しい結果を紹介しているブログ記事を見つけた(※訳註1)。Appleは最近、TensorFlowのフォークのひとつであるtensorflow_macosをリリースし、Mac上でネイティブのTensorFlowコードを実行できるようにした(MacでTensorFlowコードを実行する場合、以前は面倒だったのだがPlaidML(※訳註2)のおかげで簡単になった、と聞いているものも私は試していない)。
各種MacBook ProのAIモデル訓練時間の比較
以上のグラフでは測定環境として、Intelチップ搭載13インチMacBook Pro(2020)上でTensorFlow 2.3とTensorFlow 2.4、そしてM1チップ搭載13インチMacBook Pro(2020)上でTensorFlow 2.4を実行したものを用意した。訓練するモデルとして、ResNet50V2を使ったファインチューニング、CycleGAN、Style Transfer、MobileNetV3、DenseNet121を用意した。
グラフからわかるように、M1チップ搭載MacBook Proがもっとも早く訓練を完了している。訓練時間は棒の長さで示され、短いほど高速であることを意味する。
当然のことながら、このニュースを聞いて、私は試してみなければならなかった。
何かの奇跡に恵まれたおかげで、トラブルシューティングなしに8~10時間以内でAppleのTensorFlowのフォークをPython 3.8環境にインストールして、以下のようなミニ実験を作成した。
3.1 基本的な畳み込みニューラルネットワーク(CNN)
CNNの説明サイト(TinyVGG)にあるCNNのアーキテクチャをコピーした。そして、CreateMLで行ったテストと似たようなデータを使った。
- 課題:マルチクラス画像分類。
- モデル:TinyVGG(正確なコードは、以下に示すGoogle Colabのノートブックを参照)。
- データ:トレーニング画像750枚、テスト画像2500枚。
- クラス数:10(Food101データセットから用意)。
- エポック数:5
- バッチサイズ:32
3.2 EfficientNetB0を用いた転移学習
最近では、ゼロからモデルを構築することはほとんどない。既存の未訓練のアーキテクチャを使って自分のデータで訓練するか、EfficientNet(※訳註3)のような事前訓練済みのアーキテクチャを使って自分のデータでファインチューニングするかのどちらかである。
- 課題:マルチクラス画像分類。
- モデル:ヘッドレスなEfficientNetBO(トップレイヤーだけを訓練し、他はすべて凍結)
- データ:トレーニング画像750枚、テスト画像625枚(検証ステップは2500×0.25)。
- クラス数。10個(Food101データセットより用意)。
- エポック数:5
- バッチサイズ:4(より高いサイズに対処するためのメモリ容量を持っていないM1のために低いバッチサイズが必要とされた。バッチサイズ32、16、8を試してみたが、すべて失敗した)。
3.3 tensorflow_macos GitHubベンチマーク
Appleのtensorflow_macosのGitHubをブラウズしていると、かなりの数の人々がさまざまなマシンでベンチマークを実行しているIssuesのスレッドに出くわした。そこで、私はそれを自分のテストに取り入れることにした。
- 課題:マルチクラス画像分類
- モデル:LeNet
- データトレーニング画像6万枚、テスト画像1万枚(MNISTから用意)。
- クラス数:10
- エポック数:12
- バッチサイズ:128
- 出典:https://github.com/apple/tensorflow_macos/issues/25
TensorFlowのコード結果
上記の3つの実験をすべてのMacBookで実行しただけでなく、GPUを搭載したGoogle Colabがしっかり動作しているインスタンス上でも実行した(私の通常のワークフローは、Google Colab上で実験を行い、必要に応じてより大きなクラウドサーバでスケールアップするというものだ)。
M1チップMacBook Air |
M1チップ13インチMacBook Pro |
Intelベース16インチMacBook Pro |
T4 GPUチップGoogle Colab |
|
基本的な CNN | 7-8秒/エポック | 7-8秒/エポック | 35-41秒/エポック | 5秒/エポック |
転移学習 | 20-21秒/エポック | 20-21秒/エポック | 59-66秒/エポック | 7秒/エポック |
tensorflow_macosベンチマーク | 23-24秒/エポック | 25-26秒/エポック | 20-21秒/エポック | 9秒/エポック |
(表:TensorFlowコードを実行した場合の訓練結果)Google Colabは最も高速に動作したが、M1 MacBookもそれほど遅くなかった。M1 MacBookはColabに常時接続しないで、ローカルでテストや小規模な実験を実行できるので非常に便利かも知れない。注:どのモデルでも、データの読み込みの関係で最初のエポックが最も長くなることが多いので、最初を除いたエポックが速度測定に含まれている。
Google ColabのGPUインスタンスはtensorflow_macosではなく純粋なTensorFlowを使った。
Google Colab GPUで実行したインスタンスは、3つのテストすべてにおいて最速のパフォーマンスを示した。
特筆すべきは、基本的なCNNと転移学習の実験において、M1マシンがIntelのマシンを有意に上回ったことである。
しかし、Intel を搭載したマシンでは、tensorflow_macosベンチマークで若干の挽回が認められた。この結果は、tensorflow_macos のコードを使うことによって、TensorFlowにGPUを使うように明示的に指示したためだと思われる。
GPUを使うように明示的に指示するコードを基本的なCNNと転移学習の実験でも実行してみたが、違いはなかった。こうした結果は、おそらく以上の2つの実験のセットアップとtensorflow_macosのbenchmarkでは、使用されているデータローディングのスキームが異なることに関係しているのだろう。
実験で使ったすべてのコードは、添付するGoogle Colab Notebookを参照のこと。
携帯性
ノートPCを買ったなら、持ち運びたいものだ。ビーチを見ながら文章を書いたり、地元のカフェでコーヒーを飲みながら最新の実験をコード化してみたりするのではなかろうか。
そこで3つのMacの携帯性を比較するために、3つの実験で使用したそれぞれのバッテリー使用量と、私が考案した新しい携帯性に関するスコアを以下にまとめた。
M1チップMacBook Air |
M1チップ13インチMacBook Pro |
Intelベース16インチMacBook Pro |
|
スタート時バッテリー残量 | 89% | 92% | 87% |
終了時バッテリー残量 | 39% | 35% | 65%* |
バッテリー残量変化 | -50% | -57% | -122% |
携帯性スコア** | 64.5 | 79.8 | 244 |
(表:バッテリー消費量と携帯性スコア)実験はすべて2日間(初日は約3時間、2日目は約2時間)に渡って行われた。そして、M1マシンは一度も充電しなかった。
- *16インチMacBook Proを1回(0%から)フル充電した。
- **携帯性スコア=バッテリーライフ/重量比=バッテリーライフ喪失量×重量(低い方が良い)。
諸々の結果をまとめると、M1 チップ搭載MacはIntelチップ搭載Macを粉砕するにいたった。M1 チップ搭載Macの2モデルは、 30%以上のバッテリー残量ですべてのテストを終了した。MacBook Airはまたしても際立っていて、最小の電力を使い、携帯性のスコアでは最低点を獲得した。
16インチMacBook Proは売却処分
トップスペックに近いMacBook Pro 16インチを中古で買いたい人はいませんか?よく手入れされていますよ、約束します。
上記の実験を行い、M1チップ搭載MacBookを数週間使ってみたところ、Appleが示したグラフはかなり現実に近いものだったようだ。また、これらのMacBookを称賛したすべてのレビューは本当なのだろうか。まあ、私の経験ではこうしたレビューも正しいものだ。
私は元々、16インチMacBook Proを家庭用ハイスペックノートPC、あるいはハイスピードマシンにしたくて購入したのだった。そして、実際、そのようになった。しかし、M1マシンもハイスペックでハイスピードだ。加えてM1マシンは軽くて静かで、バッテリーの持ちが良い。
MacBook Pro 16インチが勝った唯一のテストは、ビデオレンダリングテスト(もちろん画面サイズも)だった。それでも結果は著しく勝っているわけではなく、「このマシンは2.5倍のコストがかかる」のを納得させるものではなかった。
では、次はどうする?
私は13インチのMacBook Proを持っている。このMacは、ビデオ編集のためのちょっとした追加機能が13インチのM1チップAirよりも優れているものだ(加えて、この記事のビデオ版をすべて13インチProで編集したが、一度も問題はなかった)。私はこれをポータブルマシンとして使い、おそらく16インチを恒久的なデスクトップPCとしてセットアップするだろう。
しかし、Airは… ああ、Airは… 私がApple ストアで働いていたとき、ワープロとウェブ閲覧だけならAirを買うように訪問客に言っていたのを覚えている。今では機械学習モデルを訓練できるのだ。
それでは、いずれを手に入れるべきなのか?
「コードや文章を書いたり、ウェブを閲覧したりする」または「携帯可能で有能なマシンが欲しいだけ」
以上が要求であれば、M1チップMacBook Airを手に入れよう。がっかりすることはない。動画編集を日課としてなければ、私もこれを入手しただろう。
「コードや文章を書いたり、ウェブを閲覧したり、動画を編集したりする」
私のテストでは、13インチのM1 MacBook ProやM1 MacBook Airは、ほぼトップスペックに近いIntel製16インチMacBook Proの70~90%の性能を発揮するので、どちらも驚異的な性能と言える。ビデオ編集に少しでも力を入れたいなら、13インチのM1 MacBook Proを選ぶのがいいかも知れない。
「もっと大きな画面サイズが欲しい、コストは気にしない」
今のところ、Intelベースの16インチMacBook Proの購入を検討する唯一の正当な理由は、画面サイズが最も重要で、かつ外部モニタを買う予算がない場合だろう。
画面サイズは私にとってそれほど重要ではない。ほとんどの場合、フルスクリーンで1つのアプリを実行しているか、2つのアプリを画面の真ん中で分割して実行している。複数のアプリケーションを実行したい場合は、マシンを外部モニタに接続する(注:現在のところ、M1 Macは1つの外部モニタしかサポートしていないので、3つ以上のモニタファンはIntelベースのMacが必要になるだろう)。
すでに言われていることではあるが、13インチより大きいM1チップMacBookが欲しいならば、今買うのを保留して16インチのAppleシリコン製MacBookがリリースされるまで待とう。
結論
前述したように、私の16インチMacBook Proには何の問題もなかった。しかし、新しいM1 MacBookと比較すると、時代遅れな感じがする。
新しいコンピュータにこんなに感動したのは、ハードディスクからソリッドステートドライブに初めて乗り換えて以来だ。
この記事を書いているのは13インチのM1 MacBook Proだが、バターのように滑らかな感触だ。ちょっとしたこと、良いことへの気づき、新しいキーボードスタイル、ネイティブのAppleアプリ、バッテリーの持続時間、それらすべてが加算されて心地よい使用感となっている。
もしAppleが第1世代のM1チップを搭載したノートPCで(ファンのないものでも)このような性能向上を実現できるとしたら、電力制約のないマシンではどうなるのか想像できないほどだ(M1チップ搭載Mac miniはその可能性を暗示している)。
M2チップ搭載16インチMacBookはどうなるだろうか?
願わくは、M2チップ搭載16インチMacBookがリリースされるまで少なくとも1年は猶予が欲しい。私のIntelベースの16インチはまだ買って1年しか経っていないのだから…
・・・
PS:以上の記事の動画版も視聴可能です。その動画には以上のテストの様子が含まれており、YouTubeから視聴できます。
原文
『Apple’s New M1 Chip is a Machine Learning Beast』
著者
Daniel Bourke
翻訳
吉本幸記(フリーライター、JDLA Deep Learning for GENERAL 2019 #1取得)
編集
おざけん