環境
やりたいこと
サイバーエージェントが先日リリースしたLLMモデル、cyberagent/calm2-7b-chat
をChatGPT互換APIとして動かしたい
独自の日本語LLM(大規模言語モデル)のバージョン2を一般公開 ―32,000トークン対応の商用利用可能なチャットモデルを提供― | 株式会社サイバーエージェント
見ると32kトークン対応ですごいらしい
ただ実行するだけなら書き捨てのPythonサンプルコードでいいが、色々試したり組み込んだりすることを考えるとChatGPTの互換APIとして動かしたい
FastChatだったりBerriAI/litellm、Llama-cpp-pythonだったり色々あるようだが今回は楽さをとってoobabooga/text-generation-webuiを利用した
手順
Docker
まずは公式ドキュメントのDocker章の通りにDockerで起動するようにする
docker compose buildにエラった場合はDockerのバージョンが古いかCUDAのドライバーがちゃんと入っていない
モデルのダウンロード
次にモデルのダウンロード./modelsにcyberagent_calm2-7b-chat をcloneしてくるだけ
git lfs install
cd ./models
git clone https://huggingface.co/cyberagent/calm2-7b-chat
モデルの設定
calm2-7b-chatは公式サイトの実行例を見るように
prompt = """USER: AIによって私達の暮らしはどのように変わりますか?
ASSISTANT: """
とプロンプトをしっかりテンプレート通りにしないとちゃんと結果が返ってこない。このあたりを設定する
まずは models/config.yaml を開いて以下を追記
.*calm2-7b-chat:
mode: 'chat'
instruction_template: 'CALM2'
instruction-templates/CALM2.yaml を作成して以下
user: "USER:"
bot: "ASSISTANT:"
turn_template: "<|user|> <|user-message|>\n<|bot|> <|bot-message|><|endoftext|>\n"
context: "<|system-message|>\n\n"
system_message: ""
models/config-user.yaml を作成して以下追記 VRAMが足りなかったら load_in_8bit
を true
にする
cyberagent_calm2-7b-chat$:
loader: Transformers
cpu_memory: 0
auto_devices: true
disk: false
cpu: false
bf16: true
load_in_8bit: false
trust_remote_code: true
use_fast: true
use_flash_attention_2: false
load_in_4bit: false
compute_dtype: bfloat16
quant_type: nf4
use_double_quant: false
disable_exllama: false
compress_pos_emb: 1
alpha_value: 1
rope_freq_base: 500000
gpu_memory_0: 0
そしてdocker-compose.ymlを修正 - ./instruction-templates:/app/instruction-templates
を追記する
何故かデフォルトではマウントしてくれない
volumes:
- ./characters:/app/characters
- ./extensions:/app/extensions
- ./loras:/app/loras
- ./models:/app/models
- ./presets:/app/presets
- ./prompts:/app/prompts
- ./softprompts:/app/softprompts
- ./training:/app/training
- ./cloudflared:/etc/cloudflared
- ./instruction-templates:/app/instruction-templates
.envを以下にする
CLI_ARGS=--model cyberagent_calm2-7b-chat --listen --auto-devices --verbose --extensions openai
いざ起動
確認
❯ curl -s http://localhost:5000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{"model": "gpt-3.5-turbo","messages": [{"role": "user", "content": "フランスの首都はどこですか?"}]}' | jq .
{
"id": "chatcmpl-1699286411999995648",
"object": "chat.completions",
"created": 1699286411,
"model": "cyberagent_calm2-7b-chat",
"choices": [
{
"index": 0,
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": "フランスの首都はパリです。"
}
}
],
"usage": {
"prompt_tokens": 24,
"completion_tokens": 6,
"total_tokens": 30
}
}
キタ━━━━(゚∀゚)━━━━!!
あとはBetter ChatGPTで遊べる
色々遊ぶぞー