個人的にLLMをローカル環境で構築する事を、これまで何度か試してきましたが、何も上手くいきませんでした。
主な理由としては、以下がありました。
・スペックが足りない
・構築方法が複雑である
やはりローカル環境でLLMを構築するのは、まだハードルが高いのかと半ば諦めかけていた中、「ollama」を知ることになりました。
ollama とはローカル環境で手軽にLLMの環境を構築するためのツールです
また、Llama2やCode Llama等のモデルが豊富に用意されています。
今回、この「ollama」を用いた所、本当に簡単にローカルでLLMの環境を構築できましたので、こちらで共有したいと思います。
前提条件
OS: Debian 11 (docker コンテナ)
メモリ: 4GB
モデル: Elyza (7B)
手順① ollama をインストール
以下のコマンドで ollama をインストールします
curl -fsSL https://ollama.com/install.sh | sh
手順② ollama のサーバーを立ち上げる
ollama を使用するためにサーバーを立ち上げます
ollama serve
手順③ モデルの取得
ollama 自体には Llama2 など、予め用意されているモデルに対しては、以下のコマンドでモデルを取得することができます
ollama pull <モデル名>
しかし、今回使用するモデルは「Elyza (7B)」であり、ollama では用意されていないので、自分で取得する必要があります。
以下のコマンドでダウンロードします
※30分から1時間程度時間がかかる可能性があります。
手順④ Modelfile の作成
モデルを作成するための「Modelfile」を作成します。
以下の内容になります。
FROM ./ELYZA-japanese-Llama-2-7b-fast-instruct-q2_K.gguf
TEMPLATE """[INST] <<SYS>>{{ .System }}<</SYS>>
{{ .Prompt }} [/INST]
"""
PARAMETER stop "[INST]"
PARAMETER stop "[/INST]"
PARAMETER stop "<<SYS>>"
PARAMETER stop "<</SYS>>"
「FROM ./ELYZA-japanese-Llama-2-7b-fast-instruct-q2_K.gguf」では手順③で取得したモデル名を指定しています。
ディレクトリ関係としては、以下の構造になります。
.
├── ELYZA-japanese-Llama-2-7b-fast-instruct-q2_K.gguf
└── Modelfile
手順⑤ モデルの作成
以下のコマンドでモデルを作成します。
ollama create elyza:7b-fast-instruct -f Modelfile
作成後、以下のコマンドで確認すると「elyza:7b-fast-instruct」のモデルが作成されていることがわかります。
ollama list
手順⑥ チャットを起動
以下のコマンドでチャットを起動します。
ollama run elyza:7b-fast-instruct
起動後、以下の内容で質疑回答が確認できました。
>>> 健康的な食方法を教えて下さい。
健康的な食事の提供は人それぞれで違うと思いますが、栄養のバランスが考えられており、高カロリー食品や添加物などを摂取しない様に心がける食事法を指すことが多いです。以下は一例になります。
* 穀類 (ライ麦、コリアンザル) 、野菜、豆類、 nuts を多く摂取する
* 肉、魚、卵、 乳製品、 ソフト mozzarella cheese などを適度に摂取する
* 果物、 nuts、 野菜、 穀類 を含む食事をする
* 夕食前に食べるものは避ける ( 夕食後すぐに寝るときは、軽食や果物を取る)
* おやつを避け、頻繁に摂取しない。
以上、ollama を用いた、LLMのローカル環境方法でした。
私の経験上、予想以上に簡単に構築できたので、非常に嬉しい思いがありました。
※もっと早くに見つけておけば。。。
ただし、チャットの応答は使いものにならないくらい遅いので、やはりスペックの問題を避けて通る事はまだまだ難しそうです。
ぜひ、ご参考に頂ければ幸いです。
また何かございましたら、共有させて頂きます。