UbuntuでOllamaを試してみよう

## 環境
OS: Ubuntu 24.04.2 LTS x86_64 
CPU AMD Ryzen 7 5700X
GPU NVIDIA GeForce RTX 4060 (VRAM 8GB)
メモリ 32GB

:::note warn
素人ですので間違いはご了承ください
:::


## インストール
### NVIDIAのドライバーのインストール
``` bash
ubuntu-drivers devices
```
```bash
$ ubuntu-drivers devices
udevadm hwdb is deprecated. Use systemd-hwdb instead.
udevadm hwdb is deprecated. Use systemd-hwdb instead.
udevadm hwdb is deprecated. Use systemd-hwdb instead.
udevadm hwdb is deprecated. Use systemd-hwdb instead.
udevadm hwdb is deprecated. Use systemd-hwdb instead.
udevadm hwdb is deprecated. Use systemd-hwdb instead.
udevadm hwdb is deprecated. Use systemd-hwdb instead.
udevadm hwdb is deprecated. Use systemd-hwdb instead.
== /sys/devices/pci0000:00/0000:00:03.1/0000:2b:00.0 ==
modalias : pci:v000010DEd00002882sv0000196Esd000013F2bc03sc00i00
vendor   : NVIDIA Corporation
model    : AD107 [GeForce RTX 4060]
driver   : nvidia-driver-570-server - distro non-free
driver   : nvidia-driver-535-server - distro non-free
driver   : nvidia-driver-550 - distro non-free recommended
driver   : nvidia-driver-535 - distro non-free
driver   : nvidia-driver-535-server-open - distro non-free
driver   : nvidia-driver-550-open - distro non-free
driver   : nvidia-driver-570-server-open - distro non-free
driver   : nvidia-driver-535-open - distro non-free
driver   : xserver-xorg-video-nouveau - distro free builtin

```
recommendedのやつをダウンロードします。
```bash
sudo apt install nvidia-driver-550
```

途中でセキュアブートの設定が出てくるのでパスワードを設定する。
再起動したときに出でくるEnroll MOKでパスワードを入れる。

確認
```bash
nvidia-smi
```

```bash
$ nvidia-smi
Wed Mar 19 17:55:06 2025       
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 550.120                Driver Version: 550.120        CUDA Version: 12.4     |
|-----------------------------------------+------------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  NVIDIA GeForce RTX 4060        Off |   00000000:2B:00.0  On |                  N/A |
|  0%   32C    P8             N/A /  115W |     637MiB /   8188MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+
                                                                                         
+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI        PID   Type   Process name                              GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|    0   N/A  N/A      2220      G   /usr/lib/xorg/Xorg                            216MiB |
|    0   N/A  N/A      2504      G   /usr/bin/gnome-shell                           98MiB |
|    0   N/A  N/A      5170      G   ...irefox/5751/usr/lib/firefox/firefox        222MiB |
|    0   N/A  N/A      6566      G   ...erProcess --variations-seed-version         20MiB |
|    0   N/A  N/A      7617      G   ...erProcess --variations-seed-version         47MiB |
|    0   N/A  N/A    171921      G   /usr/bin/gnome-text-editor                     12MiB |
+-----------------------------------------------------------------------------------------+

```


## Ollamaのインストール
```bash
curl -fsSL https://ollama.com/install.sh | sh
```

### モデルのインストール

```bash
ollama run llama3.1:8b
```
```bash
$ ollama run llama3.1:8b  
pulling manifest 
pulling 667b0c1932bc... 100% ▕████████████████▏ 4.9 GB                         
pulling 948af2743fc7... 100% ▕████████████████▏ 1.5 KB                         
pulling 0ba8f0e314b4... 100% ▕████████████████▏  12 KB                         
pulling 56bb8bd477a5... 100% ▕████████████████▏   96 B                         
pulling 455f34728c9b... 100% ▕████████████████▏  487 B                         
verifying sha256 digest 
writing manifest 
success 
>>> こんにちは
こんにちは！どうですか？
```
Ctrl+Dまたは/exitで抜ける

### モデルの探し方

https://ollama.com/

Ollamaの公式サイトから検索して探します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3957046/5d5c9337-97d4-43a4-b582-029a9c0d5b08.png)
#### パラメーター数について
パラメーター数は4Bなど数字とB(billion)で表します。
パラメーター数が大きいほど性能が良くなる傾向にあり、それに伴いモデルの容量も増えます。
DeepSeek-R1:8bの場合、容量は4.9GBです。目安としてGPUで処理するためにはVRAM容量がモデルの容量よりも少し多いくらいが目安です。
#### おすすめモデル

##### DeepSeek-R1-Distill-Qwen-7B-Japanese-gguf
DeepSeek-R1-Distill-Qwen-7B-JapaneseをGGUF版に変換したものです。
https://huggingface.co/mmnga/lightblue-DeepSeek-R1-Distill-Qwen-7B-Japanese-gguf
```bash 
ollama run hf.co/mmnga/lightblue-DeepSeek-R1-Distill-Qwen-7B-Japanese-gguf:Q6_K
```

##### llama3.1:8b
Metaが開発しているモデル。
```bash 
ollama run llama3.1:8b
```

##### gemma3:4b
Googleが開発しているモデル。生成速度が早い。
```bash 
ollama run gemma3:4b
```

##### gemma3:4b
コードの生成に特化したモデル。
```bash 
ollama run qwen2.5-coder
```

## Open WebUIのインストール
Dockerが入ってない人は入れてください。

https://docs.docker.com/desktop/setup/install/linux/

### Docker
```bash
docker pull ghcr.io/open-webui/open-webui:main
docker run -d -p 3000:8080 -v open-webui:/app/backend/data --name open-webui ghcr.io/open-webui/open-webui:main
```

https://docs.openwebui.com/getting-started/quick-start
### アクセスしてみる
そしたらサインアップしろと言われるのでします。
デザインはChatGPTみたいですね
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3957046/741be05a-6382-4a1f-ac3b-5ce5774f362c.png)
試してみます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3957046/6177d98f-54a7-46d6-bf78-47741e82e86e.png)
ちゃんと動きました
## 試してみる
### 文字の読み取り
画像から文字を読み取れるのは
* deepseek coder-v2:16b
* deepseek-coder:6.7b
* deepseek-r1:8b
* gemma3:4b
* llama3.1:8b
* qwen2.5-coder:7b
の中ではgemma3:4bだけでした
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3957046/a04c77fc-b0cd-4bbd-93a8-83f0cec15430.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3957046/9d6906bc-4912-4157-931c-743feca2b724.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3957046/4cefee04-20e9-48d3-b258-57819b618d08.png)
架空のアニメを生み出してしまいました。
何回か試したところ日本語を正しく読み取ることは難しいようです。


### Web検索の設定
左下のアイコンから管理者パネル > 設定 > ウェブ検索 > ウェブ検索エンジンをduckduckgoにします
無料で使えるのはおそらく
* duckduckgo
* brave

のみだと思います。
正しいbraveはクレカを登録しないといけませんがduckduckgoは登録不要+apikey不要です。



## モデルのテスト
各モデルのresponse_token/sを計ります
使用するモデル
* deepseek coder-v2:16b
* deepseek-coder:6.7b
* deepseek-r1:8b
* gemma3:4b
* llama3.1:8b
* qwen2.5-coder:7b
### 結果
:::note info
小数は四捨五入しています
:::

| / | deepseek coder-v2:16b | deepseek-coder:6.7b | deepseek-r1:8b |
|:-:|:-:|:-:|:-:|
| 一回目            | 34t/s  | 50t/s   | 41t/s |
| 二回目            | 35t/s  | 51t/s   | 38t/s |
| 三回目            | 34t/s  | 52t/s   | 39t/s |
| prompt<br>token/s  | 109t/s | 25166t/s | 204t/s |
| 最高<br>GPU使用率  | 70%    | 100%    | 100% |
| 最高<br>CPU使用率  | 55%    | 変化なし | 変化なし  |
| 最高VRAM<br>使用率 | 7325MB | 5514MB  | 6862MB |

| / | gemma3:4b | llama3.1:8b | qwen2.5-coder:7b|
|:-:|:-:|:-:|:-:|
| 一回目            | 63t/s  | 42t/s   | 43t/s |
| 二回目            | 66t/s  | 39t/s   | 43t/s |
| 三回目            | 67t/s  | 40t/s   | 43t/s |
| prompt<br>token/s  | 212t/s | 417t/s | 350t/s |
| 最高<br>GPU使用率  | 100%   | 100%    | 100% |
| 最高<br>CPU使用率  | 変化なし| 変化なし  | 変化なし |
| 最高<br>VRAM使用率 | 5169MB | 6711MB  | 5928MB |

gemma3がすごい速さですね。

モデルの容量がVRAM容量を超すとGPUで処理しきれなくなり、CPUで処理し始めます。
また毎秒の応答速度も下がります
| / | deepseek-r1:8b(4.9GB)| deepseek-r1:14b(9GB) |
|:-:|:-:|:-:|
| 一回目            | 40t/s  | 9t/s   |
| 二回目            | 38t/s  | 9t/s   |
| 三回目            | 39t/s  | 9t/s   |
| 最高<br>GPU使用率  | 100%   | 35%    |
| 最高<br>CPU使用率  | 変化なし| 90% |
| 最高<br>VRAM使用率 | 6862MB | 7354MB  |

どのくらいの比率かは
```bash
ollama ps
```
で確認できます
```bash
$ ollama ps
NAME                     ID              SIZE     PROCESSOR          UNTIL              
deepseek-coder-v2:16b    63fb193b3a9b    10 GB    29%/71% CPU/GPU    4 minutes from now  
```

```bash
$ ollama ps
NAME         ID              SIZE      PROCESSOR    UNTIL              
gemma3:4b    c0494fe00251    6.7 GB    100% GPU     4 minutes from now    

```