ollamaで Fugaku-LLM を動かす
昨日公開された Fugaku-LLM は珍しく公式が GGUF ファイルを配布してくれているので、これを使って手元の Macbook で動かしてみます。
準備: ollama をインストールする
以下のインストーラに従ってアプリケーションを入手できます。
アプリケーションの指示に従って、CLI 上でも ollama
コマンドを使えるようにしておきます。
ステップ1: Fugaku-LLM のファイルをダウンロードする
からお好みのファイルを選びます。
とりあえず、一番サイズの小さい(おそらく量子化が一番効いている) 「Fugaku-LLM-13B-instruct-0325b-q5_k_m.gguf」を選びます。
の download ボタンからダウンロード。
ステップ2: Modelfile を作成する
モデルファイルのダウンロードが終わったら、同じディレクトリに、Modelfile
という名前のファイルを作っていきます。
Modelfile
で一番重要なのは、トークナイザの chat template を守ることです。 今回の Fugaku-LLM の場合、LLM-jp-13B のトークナイザを流用しており、 chat template は LLM-jp-13B の場合と同じく
{system_example}
### 指示:
{instruction_example}
### 応答:
になります(リポジトリのREADMEを参照)。これに合わせると Modelfile
の TEMPLATE 変数は
TEMPLATE """{{ if .System }}{{ .System }}{{ end }}{{ if .Prompt }}
### 指示:
{{ .Prompt }}{{ end }}
### 応答:
{{ .Response }}<EOD|LLM-jp>"""
とすればよいです({{ if .System }}
{{ end }}
と {{ if .Prompt }}
{{ end }}
の部分はあってもなくてもよい)。
なお、<EOD|LLM-jp>
とはこのトークナイザで使っているEOSトークンのことです。
Modelfile
の他の部分も埋めると、全体は以下のようになります。
FROM ./Fugaku-LLM-13B-instruct-0325b-q5_k_m.gguf
PARAMETER repeat_penalty 1.0
PARAMETER temperature 0.1
PARAMETER top_k 0
PARAMETER top_p 1.0
PARAMETER stop "<EOD|LLM-jp>"
TEMPLATE """{{ if .System }}{{ .System }}{{ end }}{{ if .Prompt }}
### 指示:
{{ .Prompt }}{{ end }}
### 応答:
{{ .Response }}<EOD|LLM-jp>"""
SYSTEM """以下は、タスクを説明する指示です。要求を適切に満たす応答を書きなさい。"""
temperature
などの値は、リポジトリの README に合わせただけなので、好きに変更していただいて構いません。
ステップ3: いざ、Fugaku-LLM を動かす!🤗
ollama create fugaku-llm-13b-instruct -f ./Modelfile
でモデル情報を登録。
docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
docker run -d -p 3000:8080 --env WEBUI_AUTH=False --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main
で Open WebUI を立ち上げて、ブラウザの http://localhost:3000
から確認します。
私の環境では、Fugaku-LLM が動いていることを確認できました。
備考
ほぼ同じタイミングで、似たような記事が先に Zenn にあがっているのを見つけました。
念のため、この方の出力例と自分の出力例が大体似通っていることも確認。
Discussion