M1 MacbookPro を購入した理由の一つでもある、機械学習(人工知能)のパフォーマンスを、他のプラットフォームとの比較から検証しました。今回、Tensorflow/keras フレームワークを用いて作成したプログラムを、さまざまなプラットフォームで実行し計算時間を計測しました。
まずは、結論です。 私自身も驚くような素晴らしい結果がでました。詳細は、この後の記事をご覧ください。また、細かい技術的な点は、本ブログの投稿記事を参照してください。 |
前回の速度比較のとき、思ったような結果にならず、正直、失望していました。しかし、その原因は、M1チップのパフォーマンスを引き出せていないことにありました。今回はその対応を行い再度計測しました。
なお、今回の機械学習では、「Fashion MNIST」(洋服の画像データセット)を用いました。
対象プラットフォーム
以下に示すプラットフォームについて、計測を行いました。
No | プラットフォーム | OS | コンピュータ・スペック | 価 格 |
1 | GK41 Mini PC | Ubuntsu 20.04 | Celeron j4125 M:8GB S:128GB | 2万 |
2 | HP Tablet PC | Windows10 Pro Edu. | Cerelon N4020 M:4GB S:64GB | 5万 |
3 | Fujitsu Note PC | Windows10 Pro | Core i5-3320M M: 8GB S:240GB | 5万 |
4 | M1 Macbook Pro | BigSur 11.4 | Apple M1 M:16GB S:256GB | 14万 |
* | Xavier NX AI computer | Ubuntsu 18.04 | Nvidia Arm M:8GB S:500GB | 7万 |
* | Google Colaboratory | Google TPU (Cloud Service) | 無料 |
コンピュータ・スペックの、Mはメモリーを、SはSSD の容量を表しています。
ご覧の通り、全体として低価格なものを対象(単に購入できないだけです[笑い])としています。もっと高価なコンピュータと比較することもできますが、なかなか30〜40万円を趣味で出すのは厳しいです。
また、一般的に高価格帯のパソコンは、性能も向上しますが、コスパは決してよくありません。しかし、今回、M1 MacbookPro は、一般の人が購入できる価格帯でありながら、最高のパフォーマンスを発揮しました。この後の結果をご覧ください。
学習環境とプログラム
今回の学習は、全てのプラットフォームにおいて、フレームワークTensorflow/Keras を用いて記述された、同一のプログラムを実行します。環境の細かな違いは、以下の表に示します。Tensorflow/Keras を動作させる環境構築は、思った以上に困難の連続でした。
No | プラットフォーム | Tensorflow | Keras | Python | pip | conda | virtual |
1 | GK41 Mini PC | 2.4.1 | 2.4.0 | 3.8.5 | 21.2.2 | 4.10.3 | anaconda |
2 | HP Tablet PC | 2.5.0 | 2.5.0 | 3.8.5 | 21.2.3 | 4.9.2 | anaconda |
3 | Fujitsu Note PC | 2.5.0 | 2.5.0 | 3.8.5 | 21.2.2 | 4.9.2 | anaconda |
4 | M1 Macbook Pro | 2.4.0-rc0 | 2.4.0 | 3.8.2 | 21.2.3 | 4.10.3 | venv |
* | Xavier NX AI computer | 2.1.0 | 2.2.4-tf | 3.6.9 | 21.2.3 | none | none |
* | Google Colaboratory | 2.5.0 | 2.5.0 | 3.7.11 | 21.1.3 | none | ??? |
以下が、実行したプログラムになります。プログラムの解説は控えますので、興味のある方は、プログラム内のコメントを参考にしてください。
学習データには、「Fashion MNIST」という、ファッションの画像データ(28×28ピクセル、256階調)60000枚と、各画像の分類データ(10カテゴリ)を用いて、画像認識のための機械学習を行いました。作業としては、訓練・評価・検証などを行っています。
また、プログラミング言語は Python ですが、Tensorflow や Keras などのライブラリを用いているので、非常に簡潔に記述できています。ちなみに、Python だけで記述すると、凄い行数のプログラムになります(笑い)。
今回掲載している PDF の画面は、Jupyter Lab(Jupyter Notebook)という開発ツールを使用しています。これは、実行するプログラムと共に実行結果を表示できるので、とても便利なツールです。また、インターラクティブ(対話的)に開発が進められるので、デバッグなどがしやすいです。
実行結果
各プラットフォームでの実行時間を、下記の表に示します。今回は、時間が無かったこともあり、1回だけの計測結果です。通常は、複数回実施した平均を表示しますが、ご容赦ください。従って、ある程度の誤差を含んでいると思います。
No | プラットフォーム | 時間 | 速度比率 | 比較コスト | 備考 |
1 | GK41 Mini PC | 5.7 | 14.0 | 28 | |
2 | HP Tablet PC | 4.0 | 10.0 | 50 | |
3 | Fujitsu Note PC | 3.0 | 7.5 | 38 | |
4 | M1 Macbook Pro | 0.4 | 1.0 | 14 | |
* | Xavier NX AI computer | 0.2 | 0.5 | 4 | |
* | Google Colaboratory | 2.0 | 5.0 | 無料 |
※ 表示された値について
時間は、1回の学習に要した計算時間[ミリ秒]です。速度比率は、Macbook Pro の計算時間を1としたとき、他が何倍になるかを表しています。比較コストは、価格に速度比率を掛けたものです。つまり、MacBook Pro と同じ性能を手に入れるために必要なコスト(単純な比率として)を表しています。
【感想】
ご覧になれば分かるように、M1 Macbook Pro のパフォーマンスは本当に素晴らしいものでした。しかも、今回は、絶対的なパフォーマンスはもちろん、コスト・パフォーマンスでも、十分に納得のいくものでした。今後も、M1 Macbook Pro の能力を、更に引き出す努力を続けたいと思います。
【今後】
本当に嬉しい結果になり、大満足です。しかし、課題も見えてきました。少々専門的な話になります。前回の投稿記事『M1 MacbookPro「M1チップ対応」Python開発環境の構築』の中で、用途に合わせた、様々な環境構築の方法を示しました。
しかし、これらのやり方では、問題が起こる可能性があると分かりました。具体的には、2つ以上の作業を同時にやろうとすると、問題が起きる可能性があります。
具体的には、「Tensorflow や Keras」を使用する環境と、「Numpy、Pandas、Matplotlib」を使用する環境を、同時に使うことは難しいです。理由は、それぞれの環境において、使われるライブラリのバージョンが異なるからです。現時点では、残念ながら解決できていません。今後、対応方法を探したいと思います。
出力結果(Google Colaboratory)
参考のために、「Google Colaboratory」で実行した結果(5Epoch ですが、学習の様子も含めて)を示します。ちなみに、 Google Colaboratory は、Jupyter Lab 上での動作に限定されます。
コメント