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 chipApple M4
Memory32GB
Storage内蔵:512GB
外付:Thanderbolt4 2TB(M2 SSD)
NetworkGlobal回線(1Gbps)/Mac 1Gbps

Google Colaboratory Spec:

TypeHigh MemoruSystem RAMGPU RAMDiskCost/hour
CPU×12.7 GB225.8 GB0.07 unit/h
51.0 GB225.8 GB0.16 unit/h
A100GPU83.5 GB40.0 GB235.7 GB8.47 unit/h
L4GPU53.0 GB22.5 GB235.7 GB2.24 unit/h
T4GPU×12.7 GB15.0 GB235.7 GB1.44 unit/h
51.0 GB15.0 GB235.7 GB1.66 unit/h
TPU v2-8334 GB225.3 GB1.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と同じコードを使用しています。

実測結果

CategoryTypeHigh MemoryCost検出処理
(秒換算)
学習処理
(秒換算)
利用可能性
Google Colabo.CPU無効0.07 unit/h11利用不可
有効0.16 unit/h37200利用可
A100GPU選択不可8.47 unit/h4360利用可
L4GPU選択不可2.4 unit/h2480利用可
T4GPU無効1.44 unit/h41080利用可
有効1.66 unit/h4600利用可
TPU v2-8選択不可1.76 unit/h33600利用可
Mac miniCPU314940利用可
CPU+GPU26600利用可
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が完全に使い物にならないというわけでもないので、状況に合わせて、使い分けをしていくほかありません。
みなさんの参考になれば幸いです。