OllamaでLLMを手軽に動かしてみる

# 事の起こり
昨今、その急激な進化で注目されているLLM(大規模言語モデル)を手軽に動かせるアプリケーションとしてOllamaを知りました。通常学習済モデルをただ動かすだけでも環境構築に手間取るLLMですが、Ollamaを用いれば簡単に動作させることが出来る様です。2024/10現在MacとLinuxには対応しており、Windowsはベータ版の様です。

# 環境情報
今回、以下の環境を用いました。

* Mac Book Pro
    * M1 Pro CPU
    * DRAM 16GB
* macOS 15.0.1 Sequoia
* Ollama v0.3.14

# Ollamaのインストール
Homebrewを用いてインストールを実行しました。`🍺  ollama was successfully installed!`とプロンプトメッセージが表示されたら成功です。

```bash
brew install --cask ollama
```

# バージョンの確認
インストールされたバージョンを確認してみます。以下のコマンドを実行します。

```bash
ollama -v
```

初回実行時は以下の様に表示されました。どうやら`ollama`コマンド自体はクライアントコマンドであり、内部的にOllamaサーバーインスタンスを起動してからそのサーバーとのやり取りをこのコマンドで行う構造の様です。

```bash
$ ollama -v
Warning: could not connect to a running Ollama instance
Warning: client version is 0.3.14
```

Ollamaサーバーを起動します。まずは、Launchedpadから`Ollama.app`を起動します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469079/49889348-6d86-7eda-e07f-933527566293.png)

以下のウィンドウが表示されたら、`Next`をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469079/d78275f1-764d-72bf-a174-459834d77776.png)

既にコマンドラインインタフェースはインストール済ですが、ここでは、`Install`をクリックします。ユーザーパスワードの入力が求められるので入力します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469079/b429ddb3-fd76-667e-155e-84f159d15fa8.png)

以下のウィンドウが表示されたら、完了です。`Finish`をクリックする前に、画面中のコマンドをコピーしておきましょう。このコマンドを実行することでLlama3.2を実行できます。モデルサイズは2GB程度です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469079/885b66cc-cf44-254c-9ad9-9e81d1581c9f.png)

因みに、この操作によってOllamaサーバーが起動時に自動実行される様になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469079/a600a8f6-b2f3-1902-1ab2-160fa872d7b4.png)

# コマンド実行
`ollama`コマンドを実行してみます。まず、モデルのマニフェストファイルがダウンロードされます。Llama3.2で2GBでした。

GitHubのREADMEに以下の注意事項が記載されていました。DRAM 8GBに対して7Bのモデルまで実行可能、16GBで13B、32GBで33Bのモデルが実行可能とのことです。但し、これはオリジナルの状態での要件であるため、量子化による圧縮で軽量化した場合は、要件以上のサイズのモデルも実行可能となる様です。(今後の課題とします。)
>You should have at least 8 GB of RAM available to run the 7B models, 16 GB to run the 13B models, and 32 GB to run the 33B models.

```bash
$ ollama run llama3.2
pulling manifest 
pulling dde5aa3fc5ff... 100% ▕████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ 2.0 GB                         
pulling 966de95ca8a6... 100% ▕████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ 1.4 KB                         
pulling fcc5a6bec9da... 100% ▕████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ 7.7 KB                         
pulling a70ff7e570d9... 100% ▕████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ 6.0 KB                         
pulling 56bb8bd477a5... 100% ▕████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏   96 B                         
pulling 34bb5ab01051... 100% ▕████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏  561 B                         
verifying sha256 digest 
writing manifest 
success 
```

ダウンロードが完了したら、自動的にチャットが起動します。試しにQiitaで継続的に記事を投稿するために心掛けるべきことについて質問してみました。

```bash
>>> 継続してQiitaに記事を投稿し続けるために心掛けるべきことは何でしょうか？
Qiitaの記事を継続的に投稿するには、以下のような点が重要です。

1. **定期的な投稿**:.Qiitaでは、定期的な投稿が人気の記事となることが多いです。定期的な投稿は、読者との連携を構築し、新しい情報を更新するために必要なエネルギーをもたらします。
2. **質問に答える**:Qiitaでは、質問に答えることが大切です。質問に答えることで、自分の知識や経験を共有し、読者との関わりを作ります。また、質問に答えることで、自分自身が学び、成長する機会にもなります。
3. **コミュニティとの関わりとエンゲージメント**:Qiitaでは、コミュニティとエンゲージメントが大切です。自分の記事や質問に対する反応を与え、他者の記事にコメントして支援しましょう。これにより、読者との関係を構築し、自分自身がコミュニティの中で活躍することができます。
4. **情報源としての更新**:Qiitaでは、情報源としての更新が重要です。自分の記事や質問に対する反応を与えることで、新しい情報と知識を収集し、更新しましょう。これにより、情報源としての価値を維持します。
5. **バリューエクスプレス**:Qiitaでは、バリューエクスプレスが重要です。自分の記事や質問で読者に伝えたいことを明確かつ簡潔に表現しましょう。これにより、読者が自分の記事や質問の価値を理解し、活用できるようになります。
6. **バリュー化**:Qiitaでは、バリュー化が重要です。自分の記事や質問から新しい価値を生み出しましょう。読者のために情報や知識を提供し、新しい視点やアプローチを提示することで、自己評価と成長に役立ちます。

これらの点を考慮することで、Qiitaの記事を継続的に投稿し続けることができます。
```

`/bye`でチャットを終了します。

```bash
>>> /bye
```

# まとめ
全体的に`docker`コマンドに似ている印象です。今後`ollama`を活用してローカル環境で様々なLLMを試したいと思います。

# Reference
https://github.com/ollama/ollama