Mac miniは、Google Colaboの代用として使えるか…
先日、Mac miniを購入しました。
購入目的の一つに、AI関連開発で、Google Colaboratory Pro+の契約で、毎月\5,767.-の費用が掛かります。
年間で、\69,204.-です。個人事業としては、結構な費用がかかります。
ならば開発メイン機であるWindows PCでおこなうことも考えましたが、GPUが、NVIDIAではなく、AMD Radeon RX 6700 XTであることから、WindowsでAI開発環境を整備していくことを躊躇していました。
そんな時に、2024年秋に、AppleがM4系Macのリリースの情報が飛び込んできました。
Mac miniなら比較的安価に、GPUやApple Inteligense等のH/Wをベースに、AIへの取組も可能と考えました。
この環境が、実際どの程度の性能であるかを、Google Colaboratoryで使用している、YOLOのモデルの学習時間を比較してみたいと考えました。
ある程度の性能が確認できれば、Google Colaboratory Pro+の契約の見直しを行いたいという希望があります。
比較対象環境
Mac mni Spec:
CPU chip | Apple M4 |
Memory | 32GB |
Storage | 内蔵:512GB 外付:Thanderbolt4 2TB(M2 SSD) |
Network | Global回線(1Gbps)/Mac 1Gbps |
Google Colaboratory Spec:
Type | High Memoru | System RAM | GPU RAM | Disk | Cost/hour |
CPU | × | 12.7 GB | ー | 225.8 GB | 0.07 unit/h |
〇 | 51.0 GB | ー | 225.8 GB | 0.16 unit/h | |
A100GPU | ー | 83.5 GB | 40.0 GB | 235.7 GB | 8.47 unit/h |
L4GPU | ー | 53.0 GB | 22.5 GB | 235.7 GB | 2.24 unit/h |
T4GPU | × | 12.7 GB | 15.0 GB | 235.7 GB | 1.44 unit/h |
〇 | 51.0 GB | 15.0 GB | 235.7 GB | 1.66 unit/h | |
TPU v2-8 | ー | 334 GB | ー | 225.3 GB | 1.76 unit/h |
計測に使用したコード
性能比較は、実際につかうであろうYOLOのモデルの学習の即して、次のGoogle Colaboratoryのコードを使用します。
必用なライブラリのインストール部分は、計測範囲から除外し、作成済の効果いされているモデルを使い予測を行うパターンと、モデルを学習するパターンの2つの時間を計測します。
計測時間は、Jupyter Notebookで実行時間が出力される単位で、1分未満は、秒で記録されますが、1時間未満は分、それ以上は時間に丸められています。
本来なら、Pythonコードで実行時間を記録するほうがよいのですが、今回は、正確性より、だいたいの性能がわかればよいので、このあたの誤差は、気にしていません。
コードで、計測のためのデータ取得などもネットワーク影響も排除していませんのでご注意ください。
コード実行には、次のライブラリをimportすることを前提にしています。
from ultralytics import YOLO
import torch
予測の実行
from ultralytics import YOLO
# モデルのロード
model = YOLO("yolov10s.pt")
# 予測の実行
results = model.predict(source="https://ultralytics.com/images/bus.jpg",save=True)
学習の実行
from ultralytics import YOLO
# モデルのロード
model = YOLO("yolov10s.pt")
# モデルの学習
model.train(data="coco128.yaml",epochs=100,imgsz=640)
Mac GPU予測の実行
from ultralytics import YOLO
import torch
# モデルのロード
model = YOLO("yolov10s.pt")
# デバイスの確認(MPSバックエンドの利用)
device = "mps" if torch.backends.mps.is_available() else "cpu"
# 予測の実行
results = model.predict(source="https://ultralytics.com/images/bus.jpg",save=True, device=device)
Mac GPU学習の実行
from ultralytics import YOLO
import torch
# モデルのロード
model = YOLO("yolov10s.pt")
# デバイスの確認(MPSバックエンドの利用)
device = "mps" if torch.backends.mps.is_available() else "cpu"
# モデルの学習
model.train(data="coco128.yaml",epochs=100,imgsz=640, device=device)
※MacでCPU実行は、Google Colabolatoryと同じコードを使用しています。
実測結果
Category | Type | High Memory | Cost | 検出処理 (秒換算) | 学習処理 (秒換算) | 利用可能性 |
Google Colabo. | CPU | 無効 | 0.07 unit/h | 11 | – | 利用不可 |
有効 | 0.16 unit/h | 3 | 7200 | 利用可 | ||
A100GPU | 選択不可 | 8.47 unit/h | 4 | 360 | 利用可 | |
L4GPU | 選択不可 | 2.4 unit/h | 2 | 480 | 利用可 | |
T4GPU | 無効 | 1.44 unit/h | 4 | 1080 | 利用可 | |
有効 | 1.66 unit/h | 4 | 600 | 利用可 | ||
TPU v2-8 | 選択不可 | 1.76 unit/h | 3 | 3600 | 利用可 | |
Mac mini | CPU | ー | ー | 3 | 14940 | 利用可 |
CPU+GPU | ー | ー | 2 | 6600 | 利用可 | |
CPU+ GPU+ Neural Engine | ー | ー | 検証対象外 |
※AppleのMシリーズチップに搭載されているNeural Engineは、ディープラーニングや機械学習モデルの推論を高速化するための特殊なハードウェアです。特に推論に最適化されており、非常に効率的です。しかし、Neural Engineを学習(トレーニング)に使用する場合の利便性やパフォーマンスは、一般的にGPUやMPS(Metal Performance Shaders)と比較して少し異なります。
現在、多くのディープラーニングフレームワーク(PyTorchなど)は、Neural Engineに直接アクセスして学習を行うことはできません。代わりに、Neural Engineは主にモデルの推論に使用され、学習はGPUやMPSバックエンドによって処理されることが一般的です。これにより、モデルの学習プロセスを高速化するには、GPUまたはMPSを利用するのが通常の方法です。
さて、Mac miniはAI学習に利用できるのか?
Mac miniをCPUのみで実行すると、Google Colabolatory CPUの倍の時間がかかります。
T4GPU+High Memoryに対しては、25倍の時間がかかります。
これでは、けっしてGoogle Colaboratoryの代替環境としてMac miniを使えるとは言えません。
Mac mini M4チップのGPUやNeural Engineを使用すると、どの程度改善するかを計測しようとしました。
Neural Engineは「ディープラーニングや機械学習モデルの推論を高速化するための特殊なハードウェア」ということなので、何の知識もなく期待を持っていましたが、実際に学習をおこなうためのコードをどのように作成するのかを調べてみると、学習にはりようしないものが常識のようです。
あくまで、推論のための特殊なハードウェアということです。
気を取り直し、Mac miniのGPUを使い、処理性能を検証を行いました。
その結果からわかるように、やはり、Google Colaboratory T4GPU+High Memoryに対して11倍程度の時間がかかります。T4GPUに対しては、6倍程度の時間となります。
この結果も、遅いと言えば遅いのですが、学習を自分が休んでいる間に行えば、なんとか利用できる可能性はあります。もちろん、今回の学習データに対しての話になるので、実際のケースでは、やはり十分ではないかもしれません。
やはり、M4 Mac miniではAIモデルトレーイングとしての開発環境にはならないという結論です。
M4 Pro Mac miniは、GPUコア数、メモリ速度も速くなるので、AIモデルトレーニングなどの開発を行うには、M4 Pro以上は必要だろうと思いますが、実証できないのが残念です。
ここまでの検証を踏まえると、Mac miniだけでは、十分な開発環境とはいいがたいというのが結論です。
Google Colaboratoryは、個人事業としては有益な開発リソースということがわかりました。
とはいえ、毎月\5,767.-は高いですね。
案件での仕事であれば、コストに含めればよいですが、案件が具体化するまでの、実験/研究段階では厳しいと思うのが本音です。
ということで、来年からは、Google ColaboratoryをPro+からProあるいは無料版への契約変更を視野に進めたいと考えています。
Google Colaboratory Proは、月額\1,179.-、年間\14,148.-です。バックグラウンド実行ができなくなること、使えるコンピュータユニットが、500unitから100unitと少なくなります。
100unitだと、GPUなどの利用だと直ぐ使い切ってしまうので、Mac miniに軸足をかえて、いっそ、無料プランで使うくらいを考えるべきなのかもしれません。
必用になれば、直ぐに契約すれば、使えるので、クラウドサービスは柔軟さのメリットを生かさなければなりません。
本当に悩ましいことですが、Mac miniが完全に使い物にならないというわけでもないので、状況に合わせて、使い分けをしていくほかありません。
みなさんの参考になれば幸いです。