🐟

M4 Mac MiniにおけるGPUのLLM活用の現状と問題点

2025/01/06に公開

はじめに

前回記事では、M4 Mac MiniでLLM+AIアプリを開発する場合のアーキテクチャについて考察しました。この記事では実際に、M4 Mac MiniでLLMを利用する際に現状発生する問題点について共有します。

M4 GPUについて

M4 Mac miniには、ユニファイドメモリ対応の10Core M4 GPUが搭載されています。ご存知の通り、MシリーズのチップセットはAppleの独自開発であり、NVIDIA、AMDとは異なるアーキテクチャ、開発インターフェースとなっています。ベンチマークとしては、LLMに特化したものではありませんが、NVIDIAのゲーミングノートと同等程度となっています。一番の利点としては、ユニファイドメモリによる柔軟なメモリ割り当てであり、一般人が購入可能なゲーム向けGPUでのLLM利用時のメモリ不足を解決することが可能なのではと考えています。(もちろん、NVIDIA H100等の高級GPUを購入することでも解決可能です。)

M4 GPUを利用した開発

現状のGPUを用いて開発を行う場合、GPUベンダー毎の三者三様の手法を用いることになります。M4 GPUでは、Metalと呼ばれる、GPU制御APIを用います。しかしGPUの直接的な制御には専門的で独特な知識が必要になるため、LLMを使いたいというモチベーションで入門することは非常にハードルが高いと思われます。

M4 GPUを利用したLLM活用

おそらくこの記事を読んでいる読者の目的は著者と同様に、M4 GPUを用いてLLMを動かし、それを利用してAIアプリを開発することであると想定すると、基本的にすでにGPUの制御を担保している何かしらのLLM実装ライブラリ・フレームワークを用いることになります。

そこで、LLM実装ライブラリ・フレームワークを用いたM4 Mac Mini GPUの現状と問題点について検証を元に述べます。

GPUを利用したLLM構築の選択肢

LLM構築を行うためのライブラリ・フレームワークの選択肢として、

が、代表的かと思います。ので、M4 Mac Miniでも使ってみましょう。

M4 GPUを利用したLLM構築の問題点と選択肢

と言いたいのですが、果たして実際にこれらの選択肢が、M4 GPUで利用できるのかという問題があります。現状GPUを使った開発は、NVIDIAがリーダーズボードのトップにいることとその歴史から、GPU制御、GPGPUのバイブルであるCUDAを利用することが大半であり、逆を言えばCUDAにしか対応していないことが大半となっています。そのため先に述べたフレームワークも例外ではなく、○○ M1||M2||M3||M4などとググると、Rust等で書かれた特殊な制御変換ライブラリを使うことを余儀なくされる、もしくは動かせないというのがM4 GPUの現状であり、安定的なLLM構築は困難となっています。

しかし、Mac M GPUには希望の選択肢として、MLX というフレームワークが存在しています。MLXは、MLX is a NumPy-like array framework designed for efficient and flexible machine learning on Apple silicon, brought to you by Apple machine learning research.とあるように、Appleの機械学習チームが開発しているMシリーズを活用したNumPy相当の機能を実現するフレームワークであり、これを活用することで、LLMをM4 GPUを活用して動作させることが可能になります。

またもう一つの手法としては、M4 GPUを準仮想化するフレームワークを使うパターンです。例としてはVirtioが有名ですが、利用のしやすさを考慮するとこれらを構築可能なVVMを活用することが良いと思います。こちらは代表的なものに、libkrunがありますが、他の記事でも述べたように、Podman AI Labを利用するのがお手軽だと思います。

ということでまとめると、

  • MLX
  • Ollama
  • Podman AI Lab

あたりが、比較的お手軽にM4 Mac MiniでLLMを利用する選択肢になりそうです。

おわりに

ということで、M4 Mac MiniでLLMを構築する場合、Metalをうまく使いこなせるのではあればこれが良いです。ただしかなりしんどいので、MLX、Ollama、Podman AI LabなどのM4に対応しているフレームワークを活用したほうが良さそうです。

もしみなさんの中で、使いやすいM4に対応したLLM構築フレームワークを知っている方がいらっしゃれば、ぜひおしえてください!

現在著者は、My OS and Python versions are in the required range but pip still does not find a matching distribution.と強調して記載されているこれらを、コンテナ上でどうにか動かせないかを検証しています。ですので次回は、これらをコンテナ上に構築する場合のもう少しニッチな問題点と課題について書きたいと思います。

参考文献

Discussion