2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

M4 の Mac mini でローカルLLM: Gemma 3n を MLX LM・MLX-VLM で試す(画像入力を試したものはエラーが出て未解決)

Last updated at Posted at 2025-07-02

はじめに

過去に色々試していて、直近では以下の内容を試している 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対応のモデルです。

image.png

量子化されたものを含め並べてみると、記事執筆時点では以下の種類があるようです。

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対応のモデルです。

image.png

量子化されたものを含め並べてみると、記事執筆時点では以下の種類があるようです。

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用で利用可能)
  • 実行環境
    • Python の仮想環境を利用
      • MLX LM を使ったコマンドでの処理
      • MLX-VLM を使ったコマンドでの処理

上記のとおり、ローカル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

※ モデルのサイズに関わる情報
image.png

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

※ モデルのサイズに関わる情報
image.png

●mlx-community/gemma-3n-E4B-it-bf16 · Hugging Face
 https://huggingface.co/mlx-community/gemma-3n-E4B-it-bf16

※ モデルのサイズに関わる情報
image.png

使い方を確認して試す

MLX LM対応のモデル

MLX LM対応のモデルに関し、上で選んだものの使い方を見てみます。

●mlx-community/gemma-3n-E4B-it-lm-bf16 · Hugging Face

image.png

Python のコードサンプルが書いてありますが、過去にコマンドラインで使ったやり方を試してみました。

mlx_lm.generate --model mlx-community/gemma-3n-E4B-it-lm-bf16 --prompt "生成AIを8歳に分かるように短い言葉で説明して" --max-tokens 512

その結果、以下のとおり回答を得ることができました。

image.png

出力スピードや利用されたメモリのサイズは以下となりました。

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

以下のとおりコマンドで使う例が示されています。

image.png

それを元に、以下のコマンドで試してみました。

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"

上記のコマンドを使った結果は以下です。やはりモデルサイズが大きすぎてエラーになりました。

image.png

おわりに

今回、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/

image.png

●わずか2GBのメモリ使用量でスマホでの実行もOKな軽量オープンウェイトモデル「Gemma 3n」をGoogleが正式リリース、音声や動画の入力にも対応し日本語ももちろんOK - GIGAZINE
 https://gigazine.net/news/20250627-google-gemma-3n-full-release/

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?