Chat-templateについて
ローカルLLMを走らせる際に、どんな形式でプロンプトを渡すのかを示す言葉が chat-template みたいです。
前の記事のStableBeluga2は、huggingfaceに掲載の形式でなくて、chatml形式を指定して動いたのでヨシとしました。
ただスッキリしていないのは確かです。そんなところで、下記の記事を見つけました。
ちょうど知りたかった話です。感謝感激です!
要約すると、llama.cppに準備されていない形式のchat-templateが huggingfaceのファイルにある
tokenizer_config.jsonのなかに記載されていたらそれを使うことで、llama.cppをうまく使えるとのことです。
(残念ながら、StableBeluga2には記載はなかったです…)
以下、自分の覚え書きメモですので、詳しくは元の記事をみてください。
必要なモジュール
from llama_cpp import Llama, llama_chat_format
使用する関数: llama_chat_format.hf_autotokenizer_to_chat_formatter関数
chat_formatter = llama_chat_format.hf_autotokenizer_to_chat_formatter(model_id)
model_idは、使うLLMのモデル名です。
chat_handler = llama_chat_format.hf_autotokenizer_to_chat_completion_handler(model_id)
これで、.create_chat_completionメソッドを使えるそうです。
Llamaの引数で、chat_handler=chat_handler を設定したあとは以下でOKみたい。
outputs = model.create_chat_completion(
messages=messages,
#echo =True,
#stream =True,
**generation_params
)
それと、.create_completionを使うなら、promptを下記で形を整える。
prompt = chat_formatter(messages=messages)
まだ理解できていないのは、tokenizer_config.json の記載されているchat-templateをさっとコピーして活用できるのか、もし活用できるならどのようにすればいいのか等です。
そのあたりもう少し理解していってみたいところです。
あとまだ、実際に試していないので誤解があるかもしれませんのでご容赦ください。
この記事が参加している募集
この記事を最後までご覧いただき、ありがとうございます!もしも私の活動を応援していただけるなら、大変嬉しく思います。