「よーしパパ、Ollama で Llama-3-ELYZA-JP-8B 動かしちゃうぞー」

## はじめに
こんにちは、KDDIアジャイル開発センターのはしもと（仮名）です。
エンドレス水出しコーヒーの時期になりましたね。

今回は、Ollama を使って日本語に特化した大規模言語モデル **Llama-3-ELYZA-JP-8B** を動かす方法をご紹介します。

このモデルは、日本語の処理能力が高く、比較的軽量なので、ローカル環境での実行に適しています。さあその性能は如何ほどに！！！！？？？？はやくAIは俺から仕事を奪え。

## Llama-3-ELYZA-JP-8Bとは

Llama-3-ELYZA-JP-8Bは、ELYZA社が開発した日本語に特化した大規模言語モデルです。Meta社の「Llama 3」シリーズをベースに、日本語での追加学習を行っています。80億パラメータという比較的小さなモデルサイズながら、「GPT-3.5 Turbo」や「Claude 3 Haiku」、「Gemini 1.0 Pro」に匹敵する日本語性能を達成しているとされています。

https://prtimes.jp/main/html/rd/p/000000046.000047565.html

## 準備

まず、Ollamaをインストールしておく必要があります。インストール方法は下記の公式サイトを参照してください。

https://ollama.com/

### Ollamaとは

Ollamaは、オープンソースの大規模言語モデル（LLM）をローカル環境で簡単に実行できるツールです。以下のような特徴があります：

- ローカル環境で動作するため、プライバシーを保護しつつLLMを利用できる
- Llama 3、Mistral、Gemma など、様々なオープンソースモデルをサポート
- モデルのダウンロード、実行、カスタマイズが容易
- コマンドラインインターフェース（CLI）とREST APIを提供
- MacOS、Linux、Windowsに対応（Windowsはプレビュー版）

Ollamaを使用することで、クラウドAPIに依存せず、高性能な言語モデルの検証を行うことができます。

## 手順

### 1. モデルファイルのダウンロード

Hugging Face から、「Llama-3-ELYZA-JP-8B-q4_k_m.gguf」をダウンロードします。これは量子化されたモデルファイルで、サイズが小さくなっています。

サイズは約5GBですが、不安な人はここでついでにストレージの整理をしておきましょう（しなくていいです）

https://huggingface.co/elyza/Llama-3-ELYZA-JP-8B-GGUF/tree/main

### 2. Modelfileの作成

今回試したいモデルは、Ollama では標準サポートされていないため、モデルに関連する必要な情報を記載したファイルを作成し、そのファイルからモデルを作ります。

https://note.com/npaka/n/ndadbae6c6be5

https://github.com/ollama/ollama/blob/main/docs/modelfile.md

「Modelfile」という名前のファイルを作成し、Llama3 モデルと同じフォーマットになるように、以下の内容を記述します：

```
FROM ./Llama-3-ELYZA-JP-8B-q4_k_m.gguf
TEMPLATE """{{ if .System }}
system


{{ .System }}
{{ end }}{{ if .Prompt }}
user


{{ .Prompt }}
{{ end }}
assistant


{{ .Response }}
"""
PARAMETER stop "
"
PARAMETER stop "
"
PARAMETER stop "
"
PARAMETER stop "<|reserved_special_token"
```


このModelfileでは、モデルの基本設定や応答のテンプレート、システムプロンプト、生成パラメータなどを指定しています。

### 3. Ollamaモデルの作成

次のコマンドを実行して、Modelfileからollamaのモデルを作成します：

```
ollama create elyza:jp8b -f Modelfile
```

### 4. モデルの実行

作成したモデルを実行するには、以下のコマンドを使用します：
```
ollama run elyza:jp8b
```

これで対話型のプロンプトが開始され、日本語でAIアシスタントと会話できるようになります。

### 5. よーしパパ、ELYZAちゃんとしゃべっちゃうぞ

せっかくなのでおしゃべりしてみましょう。
動かしているPCのスペックはこちらです。
- Model: MacBook Pro 14-inch, Nov 2023
- Chip: Apple M3
- Memory: 24 GB
- OS: macOS 14.4.1

![shotoku.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463957/01440d67-f9d8-ce14-228d-253a77fa85fe.gif)

![fib.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463957/871e1460-d13d-5fa5-4471-ba681f139a23.gif)

![nurupo.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/463957/ac130987-a308-3131-7407-b0a5050b9d1a.gif)

いいですよいいですよ〜〜〜〜！！！！
ベースとなった Llama-3-70B ではたびたび怪しい日本語が返ってくることがありましたが、超自然な文章が生成されています！！！
速度も十分はやくて、ぬるぬる出力が返ってきますね！

さて肝心の星の数は.......？？？？？
今後の期待を込めて星5兆個です！！！ありがとうございました！！！！

## まとめ

今回は、Ollamaを使ってLlama-3-ELYZA-JP-8Bモデルをローカル環境で動かす方法を紹介しました。このモデルは日本語に特化しているため、日本語での対話や文章生成タスクに適しています。

Ollamaを使うことで、クラウドAPIに頼ることなく、プライバシーを保ちながら高性能な言語モデルを利用できるのが大きな利点です。ぜひ試してみてください！

## ぬるぽについて
大熱狂の東名阪ツアーを8月に終え、「来年こそ4人と一緒に夢のZeppワンマン！」と思っていた矢先の9月、まさかの活動休止のアナウンス。大晦日には公式サイトの更新停止のお知らせと続き、本当に衝撃でした。
もしかしたら、とファンが待ち望んでいた結成10周年イベントも昨年開催されることなく過ぎてしまいましたが、きっといつか戻って来てくれることを信じています。

諦めることなく彼女たち4人が同じステージで笑顔を見せてくれるときを待ちたいと思います。

最後に、彼女たちのデビュー曲「夏の恋人」の一節を引用して終わりにしたいと思います。

<i>**この夏が終われば 残るのは君のこと
会えない日々に あなたの名前呼んでる**
</i>

はしもと（仮名）でした。

## 参考リンク

- [Llama-3-ELYZA-JP-8B-GGUF - Hugging Face](https://huggingface.co/elyza/Llama-3-ELYZA-JP-8B-GGUF)
- [ELYZA公式発表 - note](https://note.com/elyza/n/n360b6084fdbd)
- [Ollama公式ドキュメント](https://github.com/ollama/ollama/blob/main/docs/modelfile.md)