はじめに
今回の内容は、以下の記事を書いた時に試した「Gemma 3(MLX版、2種)を使ったローカルLLM」のお試しの続きみたいな内容です。
- Mac mini で ローカルLLM: Google の Gemma 3(MLX版 12B 8bit)を MLX LM で試す - Qiita
- Mac mini で ローカルLLM: Google の Gemma 3(MLX版 27B 3bit)を MLX LM + コマンドライン/Python で試す - Qiita
今回の内容
上記と今回の内容が異なる部分は、今回は入力をテキストだけでなく画像も用いる点です。
マルチモーダル対応で、画像入力可能なモデルを使ったローカルLLM では、以前以下の内容を試していたことがありました。
●「Qwen2.5-VL」の量子化された MLX版のモデル(7B 8bit)と「MLX-VLM」を使ったローカルLLM(Image to Text、M4 Mac mini を利用) - Qiita
https://qiita.com/youtoy/items/98d8b6c8d74c291ba3ca
この「Qwen2.5-VL」を試した時に使った「MLX-VLM」と、Gemma 3 を組み合わせて試します。
実際に試してみる
MLX-VLM と Gemma 3 を組み合わせて試す方法
MLX-VLM と Gemma 3 を組み合わせて試す方法について、今回使う以下のモデルのページ(Hugging Face上のもの)を見てみます。
●mlx-community/gemma-3-27b-it-qat-3bit · Hugging Face
https://huggingface.co/mlx-community/gemma-3-27b-it-qat-3bit
●mlx-community/gemma-3-12b-it-qat-8bit · Hugging Face
https://huggingface.co/mlx-community/gemma-3-12b-it-qat-8bit
どちらも上記のページ上では、MLX-VLM と組み合わせた例が掲載されています。
MLX-VLM のアップデート(またはインストール)のコマンドと、MLX-VLM を使った処理を行うコマンドは以下となるようです。
pip install -U mlx-vlm
python -m mlx_vlm.generate --model mlx-community/gemma-3-27b-it-qat-3bit --max-tokens 100 --temperature 0.0 --prompt "Describe this image." --image <path_to_image>
試す環境
今回の内容を試す環境について、ここで情報を少し書いておきます。
- PC
- M4 の Mac mini(メモリ 24GB、うち 16GB をローカルLLM用で利用可能)
- モデル
- gemma-3-27b-it-qat-3bit
- gemma-3-12b-it-qat-8bit
- 実行環境
- Python の仮想環境で MLX-VLM を利用
- 入力に使う画像
画像入力を試す
Gemma 3 での画像入力を試します。
gemma-3-27b-it-qat-3bit
まずは「gemma-3-27b-it-qat-3bit」のほうを使って試します。
以下が処理を実行するためのコマンドです。
python -m mlx_vlm.generate --model mlx-community/gemma-3-27b-it-qat-3bit --max-tokens 100 --temp 0.0 --prompt "この画像について日本語で説明して" --image "dragon.jpg"
そして上記のコマンドを実行したところ、以下の出力が得られました。
プロンプトの部分が文字化けしていたりしますが、出力は画像の内容を説明した日本語を得られました。
gemma-3-12b-it-qat-8bit
次に「gemma-3-12b-it-qat-8bit」のほうで試します。
以下が処理を実行するためのコマンドです。
python -m mlx_vlm.generate --model mlx-community/gemma-3-12b-it-qat-8bit --max-tokens 100 --temp 0.0 --prompt "この画像について日本語で説明して" --image "dragon.jpg"
以下が実行結果です。
今回は先ほどと異なり、出力が英語になってしまいました。
再度、同じコマンドを実行したところ、その際も出力が英語になってしまいました。
ここで「プロンプトを英語で書き、その中で日本語での出力を指定する」というやり方も試してみました。以下が実行したコマンドです。
python -m mlx_vlm.generate --model mlx-community/gemma-3-12b-it-qat-8bit --max-tokens 100 --temp 0.0 --prompt "Describe this image in Japanese" --image "dragon.jpg"
そして以下が出力結果ですが、最終出力の部分は日本語になりました。
今回は試行回数が少ないので、上記が偶然そうなったのか、プロンプトを変えた効果なのかは判断しづらい状態だと思います。
そのため、プロンプトを変えたものなどを色々試していければと思います。