はじめに
過去に色々試していて、直近では以下の内容を試している MLX版のモデルを使ったローカルLLM関連の話です。
●M4 の Mac mini で ローカルLLM: LLM-jp-3.1(MLX版 13B instruct4 8bit)を MLX LM で試す - Qiita
https://qiita.com/youtoy/items/c1beb79e7a50c51871ad
試す内容1
これまでローカルLLM を試した中で、よく使っているのが「M4 の Mac mini + MLX LM」の組み合わせなのですが、今回の記事もその組み合わせを用います。
試す内容2
さらに、画像入力も試してみます。その際、以下の記事を書いた時などに使った MLX-VLM を使います。
●Mac mini で ローカルLLM: Google の Gemma 3(量子化された MLX版 2種)の画像入力を MLX-VLM で試す - Qiita
https://qiita.com/youtoy/items/3ca63dce26ba0c7e8956
利用するモデル
今回のローカルLLM で使うモデルは「Gemma 3n」です。
Gemma 3n に関して、以下の 1つ目の記事を書いた時に API を使ったやり方では試していたり、直近では Ollama を使ったローカルLLM を試していたのですが、今回はローカルLLM を MLX版モデルで扱ってみます。
●【Google I/O 2025】 API の無料枠で Gemini・Gemma の新モデルを試す(Node.js を利用) - Qiita
https://qiita.com/youtoy/items/714a1bd58a80f856663c
●Windows と M4 Mac mini でローカルLLM: Gemma 3n を Ollama で試す(Mac はエラーが出たのでその対処=「再起動」の話も) - Qiita
https://qiita.com/youtoy/items/8b8763e7c36ad1b60fa3
MLX版のモデル
今回利用する Gemma 3n のモデルは、MLX版のモデルになります。
それについて、Hugging Face上でのモデルの検索で「mlx-community/gemma-3n」というキーワードを入れると、「MLX LM対応のモデル」と「MLX-VLM対応のモデル」がありそうでした。
●Models - Hugging Face
https://huggingface.co/models?sort=created&search=mlx-community%2Fgemma-3n
具体的なモデルを見ていきます。
MLX LM対応のモデル
以下は、MLX LM対応のモデルです。
量子化されたものを含め並べてみると、記事執筆時点では以下の種類があるようです。
mlx-community/gemma-3n-E4B-it-lm-bf16
mlx-community/gemma-3n-E2B-it-lm-bf16
mlx-community/gemma-3n-E4B-it-lm-4bit
mlx-community/gemma-3n-E2B-it-lm-4bit
MLX-VLM対応のモデル
以下は、MLX-VLM対応のモデルです。
量子化されたものを含め並べてみると、記事執筆時点では以下の種類があるようです。
mlx-community/gemma-3n-E2B-it-5bit
mlx-community/gemma-3n-E4B-it-5bit
mlx-community/gemma-3n-E4B-it-4bit
mlx-community/gemma-3n-E2B-it-4bit
mlx-community/gemma-3n-E4B-bf16
mlx-community/gemma-3n-E2B-bf16
mlx-community/gemma-3n-E2B-it-bf16
mlx-community/gemma-3n-E4B-it-bf16
さっそく試す
それでは、さっそく試していきます。
試す際の環境
今回のお試し用の環境について、少しここで紹介しておきます。
- PC
- M4 の Mac mini(メモリ 24GB、うち 16GB をローカルLLM用で利用可能)
- 実行環境
上記のとおり、ローカルLLM用に使えるメモリが 16GB となるため、それに合わせたモデル選定を行います。
モデルの選定
モデルを選定していきます。
MLX LM対応のモデル
MLX LM対応のモデルは、量子化されていない以下のモデルを 1つ試してみます。
●mlx-community/gemma-3n-E4B-it-lm-bf16 · Hugging Face
https://huggingface.co/mlx-community/gemma-3n-E4B-it-lm-bf16
MLX-VLM対応のモデル
MLX-VLM対応のモデルは、量子化された以下のモデルを使ってみます(※ 名前に「it」がついているモデルを使います)。それと、量子化されていないモデルも 1つ試してみます(自分のマシンで使えなそうですが、念のため)。
●mlx-community/gemma-3n-E4B-it-5bit · Hugging Face
https://huggingface.co/mlx-community/gemma-3n-E4B-it-5bit
●mlx-community/gemma-3n-E4B-it-bf16 · Hugging Face
https://huggingface.co/mlx-community/gemma-3n-E4B-it-bf16
使い方を確認して試す
MLX LM対応のモデル
MLX LM対応のモデルに関し、上で選んだものの使い方を見てみます。
●mlx-community/gemma-3n-E4B-it-lm-bf16 · Hugging Face
Python のコードサンプルが書いてありますが、過去にコマンドラインで使ったやり方を試してみました。
mlx_lm.generate --model mlx-community/gemma-3n-E4B-it-lm-bf16 --prompt "生成AIを8歳に分かるように短い言葉で説明して" --max-tokens 512
その結果、以下のとおり回答を得ることができました。
出力スピードや利用されたメモリのサイズは以下となりました。
Prompt: 22 tokens, 78.851 tokens-per-sec
Generation: 84 tokens, 10.594 tokens-per-sec
Peak memory: 13.791 GB
MLX-VLM対応のモデル
MLX-VLM対応のモデルに関し、上で選んだものの使い方を見てみます。
●mlx-community/gemma-3n-E4B-it-5bit · Hugging Face
以下のとおりコマンドで使う例が示されています。
それを元に、以下のコマンドで試してみました。
python -m mlx_vlm.generate --model mlx-community/gemma-3n-E4B-it-5bit --max-tokens 100 --temp 0.0 --prompt "Describe this image in Japanese" --image "dragon.jpg"
これはエラーが発生してしまいました。内容を読むと、データ受け渡し部分のデータ型が合ってないという内容のようでした。原因を少し探ってみましたが、現状は問題を解決できずとなりました。
また別途、問題解決をやっていければと思います。
MLX-VLM対応のモデルでのお試し2
自分の環境で動かなそうなサイズのモデルも、いちおう試してみました。
●mlx-community/gemma-3n-E4B-it-bf16 · Hugging Face
python -m mlx_vlm.generate --model mlx-community/gemma-3n-E4B-it-bf16 --max-tokens 100 --temp 0.0 --prompt "Describe this image in Japanese" --image "dragon.jpg"
上記のコマンドを使った結果は以下です。やはりモデルサイズが大きすぎてエラーになりました。
おわりに
今回、Gemma 3n の MLX版のモデルを MLX LM・MLX-VLM で試しました。
MLX LM を使ったものは成功したものの、MLX-VLM を使ったものが失敗しているので、原因を探ったりなどしてみようと思います。
その他
ちょっと前に行ったお試しについてなど
実は少し前に、MLX-VLM対応のモデルが出たばかりのときに、MLX-VLM を使ったお試しをやっていました。
そのときは、「MLX-VLM が新モデルに未対応」という感じのエラーが出ていたので、またそれから時間が経過した今回試した流れでした。
その際に、MLX LM用のモデルっぽい名称のモデルも出ていたので、今回合わせて試してみました。
Google公式の関連記事など
以下は、直近で出ていた公式・それ以外での関連記事の一部です。
●Introducing Gemma 3n: The developer guide - Google Developers Blog
https://developers.googleblog.com/en/introducing-gemma-3n-developer-guide/
●わずか2GBのメモリ使用量でスマホでの実行もOKな軽量オープンウェイトモデル「Gemma 3n」をGoogleが正式リリース、音声や動画の入力にも対応し日本語ももちろんOK - GIGAZINE
https://gigazine.net/news/20250627-google-gemma-3n-full-release/