動かざることバグの如し

近づきたいよ 君の理想に

text-generation-webui ChatGPI互換APIでcalm2-7b-chatを起動する

環境

やりたいこと

サイバーエージェントが先日リリースしたLLMモデル、cyberagent/calm2-7b-chat をChatGPT互換APIとして動かしたい

独自の日本語LLM(大規模言語モデル)のバージョン2を一般公開 ―32,000トークン対応の商用利用可能なチャットモデルを提供― | 株式会社サイバーエージェント

見ると32kトークン対応ですごいらしい

ただ実行するだけなら書き捨てのPythonサンプルコードでいいが、色々試したり組み込んだりすることを考えるとChatGPTの互換APIとして動かしたい

FastChatだったりBerriAI/litellmLlama-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_8bittrueにする

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で遊べる

picture 0

色々遊ぶぞー