【ローカルLLM】GPUなしで文章生成AIを動かしたらどこまでまともに使えるのか。Llama-3-ELYZA-JP-8B
はじめに
GPUを使用せずに文章生成AIを実行することは可能なのか。GPUなしでローカルLLMを実行して、その実用性を検証しました。本記事では、ローカルLLMならではの解析結果や具体的な使用例、また機能の制約や改善点などを詳しくご紹介します。文章生成AIを導入したいけれども、GPUを使用する環境がない方にとっても参考になる内容です。
実行環境
PC本体の性能
CPU:Core i7-13700
GPU:CPU内蔵グラフィック(Intel UHD Graphics 770)
メモリ:16GB
OS:Windows11 Home
使用するソフトウェア
Ollama:v0.1.48
OpenWebUI:v0.3.6
Node.js:v20.13.1
Python:v3.11.9
AIモデル
Llama-3-ELYZA-JP-8B
パラメータ数:80億
モデルサイズ:4.92 GB
環境の構成
1.Ollamaの導入
まず、公式サイトからお使いのPCのOSに合わせて、インストーラーをダウンロードします。
そして、インストーラーを実行してインストールします。
2.OpenWebUIの導入の流れ
インストーラー形式で配布されていないため、手順は難しく、別途Node.jsとPython、Gitのインストールが必要です。
2ー1.Node.jsの導入
Node.jsは公式サイトからインストーラーをダウンロードして、インストールします。ただし、バージョンは20.10以上にしてください。
2-2.Pythonの導入
Pythonも公式サイトからインストーラーをダウンロードして、インストールします。ただし、バージョンは3.11以上にしてください。
このとき、「Add python.exe to PATH」にチェックをつけることを忘れないでください。
2-3.Gitの導入
Gitも公式サイトからインストーラーをダウンロードして、インストールします。
2-4.本体(OpenWebUI)の導入
以下のコマンドを1行ずつ実行します。
git clone https://github.com/open-webui/open-webui.git
cd open-webui/
ren .env.example .env
npm i
npm run build
cd ./backend
pip install -r requirements.txt -U
start_windows.bat
3.LLMモデルの導入
まず、Hugging Faceからモデルファイルをダウンロードします。
このモデルは、Ollama では標準サポートされていないため、モデルに関連する必要な情報を記載したファイルを作成し、そのファイルからモデルを作ります。
「Modelfile」という名前のファイルを作成し、Llama3 モデルと同じフォーマットになるように、以下の内容を記述します:
FROM ./Llama-3-ELYZA-JP-8B-q4_k_m.gguf
TEMPLATE """{{ if .System }}<|start_header_id|>system<|end_header_id|>
{{ .System }}<|eot_id|>{{ end }}{{ if .Prompt }}<|start_header_id|>user<|end_header_id|>
{{ .Prompt }}<|eot_id|>{{ end }}<|start_header_id|>assistant<|end_header_id|>
{{ .Response }}<|eot_id|>"""
PARAMETER stop "<|start_header_id|>"
PARAMETER stop "<|end_header_id|>"
PARAMETER stop "<|eot_id|>"
PARAMETER stop "<|reserved_special_token"
次のコマンドを実行して、Modelfileからollamaのモデルを作成します
ollama create elyza:jp8b -f Modelfile
作成したモデルを実行するには、以下のコマンドを実行します
ollama run elyza:jp8b
これで対話型のプロンプトが開始されます。
使ってみる(コマンドプロンプト)
応答速度の検証
使ってみる(OpenWebUI)
応答速度の検証
UIを見てみる
WEB検索も可能
Googleのプログラム可能な検索のAPIキーが必要です。
まとめ
GPUなしでも実用に支障がない生成速度で自然な日本語の文章が生成できました。GPUつけたらもっと処理が速くなりそう。