見出し画像

LLM-jp-3 を gguf に変換する手順

「LLM-jp-3」を「gguf」に変換する手順をまとめました。

・M3 Max


1. Llama.cppのインストール

Llama.cppのインストール手順は、次のとおりです。

(1) Xcodeのインストール。
「Llama.cpp」は、インストール時に環境にあわせてソースからビルドして利用するため、MacではXcodeのビルドツールが必要になります。

(2) リポジトリのクローン。

$ git clone https://github.com/ggerganov/llama.cpp
$ cd llama.cpp

(3) ビルド。

$ make

(4) 作業フォルダに戻る。
今回は、llama.cppフォルダが配置されてるフォルダで作業します。

$ cd ..

2. 変換するtransformersモデルの準備

今回は「llm-jp/llm-jp-3-1.8b-instruct」を準備します。

(1) transformersモデルの準備。

$ git clone https://huggingface.co/llm-jp/llm-jp-3-1.8b-instruct

(2) 「tokenizer.model」の準備。
llm-jp/llm-jp-tokenizer」から「llm-jp-tokenizer-100k.ver3.0b1.model」をダウンロードして、「llm-jp-3-1.8b-instruct」フォルダに「tokenizer.model」という名前で配置します。
配置しないとgguf変換時に以下のエラーがでました。

FileNotFoundError: File not found: llm-jp-3-1.8b-instruct/tokenizer.model

3. transformersモデルをggufに変換

「transformersモデル」を「gguf」に変換する手順は、次のとおりです。

(1) Pythonの仮想環境の準備。

$ python -m venv env
$ source env/bin/activate

(2) Llama.cppの依存関係のインストール

$ pip install -r ./llama.cpp/requirements.txt

(3) transformersモデルをggufに変換。

$ python ./llama.cpp/convert_hf_to_gguf.py ./llm-jp-3-1.8b-instruct --outfile ./gguf-model_f16.gguf --outtype f16

gguf-model_f16.gguf」が生成されます。

(4) 動作確認。

$ ./llama.cpp/llama-cli -m './gguf-model_f16.gguf' -p '
### 指示:
まどか☆マギカでは誰が一番かわいい?

### 応答:
' -n 512

### 指示:
まどか☆マギカでは誰が一番かわいい?

### 応答:
「魔法少女まどか☆マギカ」における「一番かわいい」キャラクターを特定するのは難しいです。なぜなら、そのキャラクターは物語の進行に応じて成長し、変化していくからです。しかし、以下のキャラクターは特に人気があり、多くのファンに愛されています。

1. 鹿目まどか:
- 物語の中心となるキャラクターで、主人公の一人です。彼女は純粋で強い意志を持ち、魔法少女になることを決意します。
- 彼女の成長過程や葛藤が視聴者に感動を与え、多くの支持を得ています。

2.アルティメットまどか:
- 物語のクライマックスで登場し、彼女の力の象徴となる存在です。その美しさと力強さから、多くのファンに感動を与えました。

3.巴マミ:
- 魔法少女の一人で、まどかの親友です。彼女はマミの過去や家族について語られることで、キャラクターに深みが与えられています。

4.暁美ほむら:
- 物語の鍵となるキャラクターで、彼女の複雑な内面や過去がストーリーに大きな影響を与えています。

5.キュゥべえ:
- 魔法少女の世界を作り出す存在で、彼自身も重要なキャラクターです。彼の存在自体が物語のテーマの一つとなっています。

これらのキャラクターたちは、それぞれ異なる魅力を持ち、視聴者に強い印象を与えています。最終的には、個々のファンの好みによって「一番かわいい」キャラクターが異なるかもしれません。 [end of text]


llama_perf_sampler_print: sampling time = 11.92 ms / 314 runs ( 0.04 ms per token, 26346.70 tokens per second)
llama_perf_context_print: load time = 316.82 ms
llama_perf_context_print: prompt eval time = 25.97 ms / 24 tokens ( 1.08 ms per token, 924.18 tokens per second)
llama_perf_context_print: eval time = 3544.59 ms / 289 runs ( 12.27 ms per token, 81.53 tokens per second)
llama_perf_context_print: total time = 3588.56 ms / 313 tokens

llama.cpp/examples/llama.swiftui」「llama.cpp/examples/llama.android」を使ってiPhone・Androidで推論することもできます。

4. gguf量子化

(1) gguf量子化 (Q4_K_M)

$ ./llama.cpp/llama-quantize ./gguf-model_f16.gguf ./llm-jp-3-1.8b-instruct.Q4_K_M.gguf Q4_K_M

llm-jp-3-1.8b-instruct.Q4_K_M.gguf」が生成されます。

(2) 動作確認。

$ ./llama.cpp/llama-cli -m './llm-jp-3-1.8b-instruct.Q4_K_M.gguf' -p '
### 指示:
まどか☆マギカでは誰が一番かわいい?

### 応答:
' -n 512

### 指示:
まどか☆マギカでは誰が一番かわいい?

### 応答:
「魔法少女まどか☆マギカ」の中で、「一番かわいい」と感じるキャラクターは個人の主観によるところが大きいです。しかし、一般的に人気が高いキャラクターをいくつか紹介します。

1.鹿目まどか:主人公であり、魔法少女になるために戦う女の子。
2.暁美ほむら:まどかの親友であり、共に戦う少女。
3.巴マミ:魔法少女の一人で、まどかの学校の先生。
4.キュゥべえ:魔法少女と人間の間に立ち、契約を交わす存在。
5.鹿目まどか:主人公であり、魔法少女になるために戦う女の子。

また、「一番かわいい」と感じるキャラクターは人それぞれですので、ぜひ自分の好きなキャラクターを見つけてください。 [end of text]


llama_perf_sampler_print: sampling time = 6.13 ms / 172 runs ( 0.04 ms per token, 28040.43 tokens per second)
llama_perf_context_print: load time = 237.91 ms
llama_perf_context_print: prompt eval time = 26.27 ms / 24 tokens ( 1.09 ms per token, 913.52 tokens per second)
llama_perf_context_print: eval time = 979.97 ms / 147 runs ( 6.67 ms per token, 150.01 tokens per second)
llama_perf_context_print: total time = 1015.69 ms / 171 tokens

5. imatrix量子化

(1) iMatrix計算用データセットの準備。
よく使われるデータセットは、次の3つです。

c4_en_ja_imatrix.txt : bakuさんが作成した日英テキストのデータセット
wiki.train.raw:Wikitext(英語版)の学習用データセット
groups_merged.txt:kalomazeさんが作成した疑似ランダムデータセット

今回は、「c4_en_ja_imatrix.txt」を使います。

(2) ggufからimatrixへの変換。

$ ./llama.cpp/llama-imatrix -m ./gguf-model_f16.gguf -f ./c4_en_ja_imatrix.txt -o ./gguf-model.imatrix --chunks 32

gguf-model.imatrix」が生成されます。

(3) imatrix量子化 (IQ4_XS)。

$ ./llama.cpp/llama-quantize --imatrix ./gguf-model.imatrix ./gguf-model_f16.gguf ./llm-jp-3-1.8b-instruct_IQ4_XS.gguf iq4_xs

llm-jp-3-1.8b-instruct_IQ4_XS.gguf」が生成されます。

(5) 動作確認。

./llama.cpp/llama-cli -m './llm-jp-3-1.8b-instruct_IQ4_XS.gguf' -p '
### 指示:
まどか☆マギカでは誰が一番かわいい?

### 応答:
' -n 512

### 指示:
まどか☆マギカでは誰が一番かわいい?

### 応答:
「一番かわいい」は主観に基づくものであり、人それぞれの好みによりますが、「まどか☆マギカ」では鹿目まどかが最も多くの女性から支持を得ています。

鹿目まどかは「魔法少女まどか☆マギカ」の主人公であり、主人公が魔法少女になることに最初は反対するものの、魔法少女として戦う少女たちを助けるために魔女と戦うことになるストーリーの中で、彼女の純粋な心と勇気が描かれています。

また、主人公が「希望の象徴」として描かれていることから、魔法少女たちも希望を捨てずに戦いに挑む姿が多くの視聴者に勇気を与えています。そのため、鹿目まどかが最も多くの人々から「かわいい」と感じられていることでしょう。

ただし、キャラクターの好みは個人によって大きく異なりますので、「一番かわいい」を決めるのは難しいかもしれません。 [end of text]


llama_perf_sampler_print: sampling time = 7.15 ms / 193 runs ( 0.04 ms per token, 27008.12 tokens per second)
llama_perf_context_print: load time = 226.15 ms
llama_perf_context_print: prompt eval time = 25.49 ms / 24 tokens ( 1.06 ms per token, 941.40 tokens per second)
llama_perf_context_print: eval time = 1033.24 ms / 168 runs ( 6.15 ms per token, 162.60 tokens per second)
llama_perf_context_print: total time = 1069.65 ms / 192 tokens

関連



この記事が気に入ったらサポートをしてみませんか?