M4 の Mac mini で ローカルLLM： Ollama で Gemma 3 を軽く試す（テキスト入力、画像も入力するマルチモーダル）

## はじめに

M4 の Mac mini を使ったローカルLLM をこれまで試していました。

その際、 [MLX LM](https://github.com/ml-explore/mlx-lm)、[MLX-VLM](https://github.com/Blaizzy/mlx-vlm) を使っていましたが、今回 Ollama を Mac mini で試してみます。


### MLX LM・MLX-VLM を使ったお試しの話

過去のお試しについて、少しだけ紹介します。MLX LM・MLX-VLM を試した内容は一部を記事に書いていて、それらは以下の検索に出てくるものです。

●「MLX ローカルLLM user:youtoy」の検索結果 - Qiita
　https://qiita.com/search?sort=created&q=MLX+%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%ABLLM+user%3Ayoutoy

それらの記事の中の一部を、以下にピックアップしてみます。

- [Mac mini で ローカルLLM： Google の Gemma 3（量子化された MLX版 2種）の画像入力を MLX-VLM で試す - Qiita](https://qiita.com/youtoy/items/3ca63dce26ba0c7e8956)
- [Mac mini で ローカルLLM：「Qwen3-30B-A3B」「Phi-4-reasoning」を MLX LM で試す（量子化された MLX版） - Qiita](https://qiita.com/youtoy/items/6688eab8dc851d2f3ef5)
- [Mac mini で ローカルLLM： Google の Gemma 3（MLX版 27B 3bit）を MLX LM ＋ コマンドライン／Python で試す - Qiita](https://qiita.com/youtoy/items/a97b007d25c749a7ae2d)

直近では、試したモデルとして Gemma 3 や Qwen3・Phi-4 がありました。



## 今回のお試し

 MLX LM・MLX-VLM を選んでお試しをいろいろやり始める前、ローカルLLM を試すための方法を検索していた時に [Ollama](https://ollama.com/) や [LM Studio](https://lmstudio.ai/) など、メジャーなものの情報は見かけていました。

そして、その後もそれらを見かける機会が何度もあり、いつか試そうと思っていたところでした。

それで今回、Ollama を試してみることにしました。


### Ollama を Mac mini にセットアップする

それでは、Ollama を Mac mini にセットアップして試していきます。まずは以下から Ollama をダウンロードしインストールします。

●Download Ollama on macOS
　https://ollama.com/download

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/70a0b4dd-a705-4578-a442-12c554e4b8c7.png)

以下は、インストール後の画面です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/8ab7d73f-fe45-4090-b413-317d79a28499.png)


上記の 3つ目の画面で出ているコマンドを実行してみます。


```zsh
ollama run llama3.2
```

これを実行すると、モデルがダウンロードされます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/0d6ea7ba-4f85-40eb-8acb-4d361ad6aea1.png)


そしてモデルのダウンロードが完了すると、以下のようにやりとりができる状態になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/1f6ce9fc-e012-49c6-afaa-9b57067e132b.png)


#### モデルの保存先

ここで、上記の手順の途中でダウンロードされたモデルの保存先を確認してみました。

モデルの保存先は以下になるようです。

```txt
~/.ollama/models
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/0fb1dfc8-1447-429d-822b-17d50dd0425f.png)


その中の `blobs` の中にあるファイル・フォルダ全体のファイルサイズを確認してみました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/8878cdfb-7418-4093-bdd5-5bdc3740a97b.png)


上記のサイズは、ほぼ以下と一致しているのが確認できます。

https://ollama.com/library/llama3.2

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/28fc4c55-70bd-4272-97f6-f0d47abfbc6c.png)




●Ollama Search
　https://ollama.com/search

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/07d97ca0-6ff3-49b5-afe2-764e8528b210.png)


### Gemma 3 のお試し1

それでは、Gemma 3 を試していきます。今回試すモデルを、以下から選びます。

●Tags · gemma3
　https://ollama.com/library/gemma3/tags


自分の環境だと 16GB までのモデルが試せると想定されるため、大きなサイズのものだと以下を試せそうです。

●gemma3:12b-it-q8_0
　https://ollama.com/library/gemma3:12b-it-q8_0

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/c51d3293-ccc9-4093-b126-f56d118a34e2.png)



### gemma3:12b-it-q8_0 を使ったお試し

gemma3:12b-it-q8_0 をダウンロードして実行してみます。具体的には以下のコマンドです。


```zsh
ollama run gemma3:12b-it-q8_0
```

実行後、モデルがダウンロードされます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/8c5960bf-a09a-453b-b0be-5b3ea1056f03.png)


ダウンロードが完了した後、「生成AIを8歳に分かるように短い言葉で説明して」というプロンプトを送ってみました。それで得られた回答は以下のとおりです。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/bb659c3a-acd7-459a-8291-3e1bb8afe999.png)


ひとまず動作確認ができました。


### Ollama のコマンドをいくつか試してみる

ここで、以下を見つつ Ollama のコマンドをいくつか試してみます。

●Ollama で Gemma を実行する  |  Google AI for Developers
　https://ai.google.dev/gemma/docs/integrations/ollama?hl=ja

●ollama/ollama: Get up and running with Llama 3.3, DeepSeek-R1, Phi-4, Gemma 3, Mistral Small 3.1 and other large language models.
　https://github.com/ollama/ollama


#### ダウンロード済みのモデルのリスト

以下はダウンロード済みのモデルの一覧の表示です（コマンド `ollama list` ）。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/532ac11e-c6ce-4acc-bc5f-0ef0b88d1673.png)


#### ダウンロード済みのモデルの削除

インストール後にダウンロードしたモデルの削除を試してみます。

以下が、コマンドやコマンドの実行前後の状態です。

```zsh
ollama rm llama3.2
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/12a929af-d141-40ac-8eb5-2f4a8ba8e8ad.png)


#### モデルの情報を見る


```zsh
ollama show gemma3:12b-it-q8_0
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/07e1f2f0-59ad-442e-a9e6-c6ee1051ae63.png)



### Gemma 3 のお試し2： 画像入力

上で試した `gemma3:12b-it-q8_0` は画像の入力にも対応しているため、以下のコマンドを参考に画像を入力に含むものも試してみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/9a62cb58-55ee-437f-91f5-d556afe2b5c1.png)

画像は、過去のローカルLLM でも使った以下を使います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/1b5b86c3-ce83-4ce2-bc54-d241af091347.png)


#### マルチモーダルの実行結果

以下がコマンドと実行結果で、画像の内容を説明する回答を得ることができました。
※ 「dragon.jpg」は上でも掲載した画像のファイル名です

```zsh
ollama run gemma3:12b-it-q8_0 "これは何の画像？ ./dragon.jpg"
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/d216c532-9269-4d2c-aced-fea4c6a021ce.png)


とりあえず、Ollama で Gemma 3 のお試しができました。




## 【追記】 次に試したこと

次に、以下を試しました。


●Mac mini で ローカルLLM： Ollama で「REST API」とライブラリ「ollama-js」を試す（モデルは Gemma 3） - Qiita
　https://qiita.com/youtoy/items/d835920f1bd26dae57fd