はじめに
「Llama.cpp」と「ChatUI」を使用しています。それぞれの使い方はこちらを参照して下さい。touch-sp.hatenablog.com
touch-sp.hatenablog.com
使い方
「Llama.cpp」の実行
./llama.cpp/server -m llama.cpp/models/codegemma-7b-it-f16.gguf -c 2048 -ngl 29
「-ngl」でGPUを使用するLayerの数を指定します。おそらくこのモデルの最大値は29だと思います。
llm_load_tensors: offloading 28 repeating layers to GPU llm_load_tensors: offloading non-repeating layers to GPU llm_load_tensors: offloaded 29/29 layers to GPU llm_load_tensors: CPU buffer size = 615.54 MiB llm_load_tensors: CUDA0 buffer size = 15400.21 MiB
VRAM 15.4GB使用しているようです。
RTX 4049(VRAM 24GB)で実行しました。
VRAMが不足するなら「-ngl」の値を小さくして下さい。
今回、「codegemma-7b-it-f16.gguf」はこちらからダウンロードしました。
軽量版はこちらからダウンロード可能です。
「ChatUI」内の「.env.local」ファイルの中身
「.env.local」ファイルの中身を書き換えることが色々なモデルを使用する時の障壁となります。今回はこのようにしました。
完全にローカルで実行するならHF_TOKENはでたらめで良さそうです。
MONGODB_URL=mongodb://localhost:27017
HF_TOKEN=="hf_abcdefg"
MODELS=`[
{
"name": "codegemma-7b-it-f16",
"chatPromptTemplate" : "{{#each messages}}{{#ifUser}}<start_of_turn>user\n{{#if @FIRST}}{{#if @root.preprompt}}{{@root.preprompt}}\n{{/if}}{{/if}}{{content}}<end_of_turn>\n<start_of_turn>model\n{{/ifUser}}{{#ifAssistant}}{{content}}<end_of_turn>\n{{/ifAssistant}}{{/each}}",
"parameters": {
"temperature": 0.1,
"top_p": 0.95,
"repetition_penalty": 1.0,
"top_k": 50,
"truncate": 1000,
"max_new_tokens": 2048,
"stop": ["</s>"]
},
"endpoints": [
{
"url": "http://127.0.0.1:8080",
"type": "llamacpp"
}
]
}
]`
間違い、修正点などあればコメント頂ければ幸いです。