環境
- cyberagent/calm2-7b-chat
- Docker
やりたいこと
サイバーエージェントが先日リリースした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で遊べる
色々遊ぶぞー