0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Ollama で Llama-3.1-Swallow-8B-Instruct-v0.3 を動かす

Last updated at Posted at 2025-01-21

概要

  • Ollama で Llama-3.1-Swallow-8B-Instruct-v0.3 を動かす手順を記載する
  • 記載時点で、上記モデルは Ollama のリポジトリに含まれていないため、手動で変換・パッケージングする必要がある
    • 上記以外のモデルも、同様の手順で動かすことができると思われる
  • 下記環境(スペック)では未量子化モデルを動かすのは困難である(重すぎる)ため、モデルの量子化も行った

環境

以下の環境で動作確認を行った。

モデルのファイルサイズが大きいため、概ね30GB以上のストレージの空き容量が必要。

ディレクトリ構成


local-llm
├── llama.cpp
│
├── models
│   ├── Llama-3.1-Swallow-8B-Instruct-v0.3/
│   ├── Llama-3.1-Swallow-8B-Instruct-v0.3-f16.gguf
│   ├── Modelfile_Llama-3.1-Swallow-8B-Instruct-v0.3-f16
│   ├── Llama-3.1-Swallow-8B-Instruct-v0.3.Q4_K_M.gguf
│   └── Modelfile_Llama-3.1-Swallow-8B-Instruct-v0.3.Q4_K_M
│
└── venv

「モデルのパッケージング」の完了後は、local-llm/配下のファイルは削除しても問題ない。(そのままでも問題ないが、容量が大きいため注意。)

手順

必要なパッケージ類のインストール

必要なパッケージをインストールする。

# /local-llm
brew install cmake
brew install ollama
brew install git-lfs
git lfs install

リポジトリのクローン

ディレクトリを作成する。

# /local-llm
mkdir models

リポジトリをクローンする。

# /local-llm
git clone https://github.com/ggerganov/llama.cpp.git
# /local-llm/models
git clone https://huggingface.co/tokyotech-llm/Llama-3.1-Swallow-8B-Instruct-v0.3

llama.cpp のビルド

lamma.cpp をビルドする。

# /local-llm/llama.cpp
cmake -B build
cmake --build build --config Release

モデル変換

Hugging Face フォーマットのモデルを llama.cpp のフォーマット (GGUF) に変換する。

# /local-llm
python3 -m venv venv
source venv/bin/activate
python -m pip install -r ./llama.cpp/requirements.txt
python ./llama.cpp/convert_hf_to_gguf.py ./models/Llama-3.1-Swallow-8B-Instruct-v0.3/ --outtype f16 --outfile ./models/Llama-3.1-Swallow-8B-Instruct-v0.3-f16.gguf

モデルの量子化

先述の環境(スペック)では未量子化モデルを動かすのは困難である(重すぎる)ため、モデルの量子化を行う。

# /local-llm
./llama.cpp/build/bin/llama-quantize ./models/Llama-3.1-Swallow-8B-Instruct-v0.3-f16.gguf ./models/Llama-3.1-Swallow-8B-Instruct-v0.3.Q4_K_M.gguf q4_K_M

参考までに、量子化前後のモデルサイズの一例を示す。

llama_model_quantize_impl: model size  = 15317.02 MB
llama_model_quantize_impl: quant size  =  4685.30 MB

Ollama の起動

Ollama を使う際は、「Ollama のサーバープロセス」と「操作コマンドを入力するクライアント」 のように、少なくとも 2 つのターミナル(またはバックグラウンドでの起動)が必要になる。

# /local-llm
ollama serve

Ollama が起動しているターミナルはそのままにしておく。

別ターミナルで引き続き作業を行う。

モデルのパッケージング

未量子化モデル

モデルファイルを作成する。

# /local-llm/models
touch Modelfile_Llama-3.1-Swallow-8B-Instruct-v0.3-f16

Modelfile_Llama-3.1-Swallow-8B-Instruct-v0.3-f16は以下のように記述する。

FROM ./Llama-3.1-Swallow-8B-Instruct-v0.3-f16.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 num_keep 24
PARAMETER stop <|start_header_id|>
PARAMETER stop <|end_header_id|>
PARAMETER stop <|eot_id|>

モデルのパッケージングを行う。

# /local-llm/models
ollama create Llama-3.1-Swallow-8B-Instruct-v0.3-f16.gguf -f Modelfile_Llama-3.1-Swallow-8B-Instruct-v0.3-f16
ollama list # 該当のモデルが表示されることを確認

量子化モデル

未量子化モデルと同様。

モデルファイルを作成する。

# /local-llm/models
touch Modelfile_Llama-3.1-Swallow-8B-Instruct-v0.3.Q4_K_M

Modelfile_Llama-3.1-Swallow-8B-Instruct-v0.3.Q4_K_Mは以下のように記述する。(FROM のファイル名のみ変更。それ以外は未量子化モデルと同様)

FROM ./Llama-3.1-Swallow-8B-Instruct-v0.3.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 num_keep 24
PARAMETER stop <|start_header_id|>
PARAMETER stop <|end_header_id|>
PARAMETER stop <|eot_id|>

モデルのパッケージングを行う。

ollama create Llama-3.1-Swallow-8B-Instruct-v0.3.Q4_K_M.gguf -f Modelfile_Llama-3.1-Swallow-8B-Instruct-v0.3.Q4_K_M
ollaam list # 該当のモデルが表示されることを確認

モデルの実行

モデルを実行する。

ollama run Llama-3.1-Swallow-8B-Instruct-v0.3.Q4_K_M.gguf:latest

REPL が起動するので、プロンプトを入力し、応答が返ってくることを確認する。

参考サイト

Llama 3.1 SwallowをOllamaで使えるようにする|ローカルLLM

【M3mac環境】llama.cppを使ったGGUF変換からOllamaで実行までの手順

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?