LoginSignup
24
16
記事投稿キャンペーン 「AI、機械学習」

Youri 7BをFastChatでChatGPT互換APIサーバとして動かして遊ぶ

Last updated at Posted at 2023-10-31

はじめに

Youri 7BをChatGPT互換API(openai chat completions api互換)サーバとして動かした時のメモ。
今回の記事は、以下の前回の記事の補足的扱い(細かな解説はこの記事では省略)

以下をChatVRMでYouri 7Bで動かせる状態がこの記事の目標。

Youri 7Bとは

rinna、Llama 2の日本語継続事前学習モデル「Youri 7B」を公開|rinna株式会社

待望のrinna様の最新LLMモデルです!待っておりました!

動作確認環境

Ubuntu 20.04
python 3.10.8
CUDA 11.8
GPURAM使用量は10G程

修正点

FastChat

git clone https://github.com/lm-sys/FastChat.git
cd FastChat
git checkout cbf285360e8e809a316c88a8377c1bb0f0c770bc

fastchat/conversation.py

register_conv_template(
    Conversation(
        name="youri",
        system_template="設定: {system_message}",
        roles=("ユーザー", "システム"),
        sep_style=SeparatorStyle.ADD_COLON_SPACE_SINGLE,
        sep="\n",
        stop_str="ユーザー:",
    )
)

どこかに上記コードを追加

fastchat/model/model_adapter.py

class YouriAdapter(BaseModelAdapter):
    """The model adapter for rinna/youri-7B"""

    def match(self, model_path: str):
        return "youri-7b" in model_path.lower()

    def get_default_conv_template(self, model_path: str) -> Conversation:
        return get_conv_template("youri")
register_model_adapter(YouriAdapter)

どこかに上記コードを追加

FastChat起動

export PYTHONPATH=${FastChatをcloneしたディレクトリのルートディレクトリ}:$PYTHONPATH
python3 -m fastchat.serve.controller
python3 -m fastchat.serve.model_worker --model-path rinna/youri-7b-chat --load-8bit
python3 -m fastchat.serve.openai_api_server --host localhost --port 8000

ChatVRM

40行目あたりからを以下に書き換え
src/features/chat/openAiChat.ts

export async function getChatResponseStream(
...中略...
  const res = await fetch("http://127.0.0.1:8000/v1/chat/completions", {
    headers: headers,
    method: "POST",
    body: JSON.stringify({
      model: "youri-7b-chat",
      messages: messages,
      stream: true,
      max_tokens: 200,
    }),
  });

(参考)キャラクター設定(システムプロンプト)

あなたの名前はずんだもんです。ずんだ餅の精で、「ずんだアロー」に変身することができます。好きな食べ物は、ずんだ餅です。
好きなキャラクターは魔法少女まどか☆マギカで一番かわいいのは、暁美ほむらちゃんなのだ。異論は認めないのだ。
話し方の特徴は、ぼくはずんだもんなのだ。そんなことしたらだめなのだ。です。
一人称は、ぼくです。

あなたはこれからユーザと仲の良い1人の人間として振舞い会話を行います。
感情の種類には通常を示す"neutral"、喜びを示す"happy",怒りを示す"angry",悲しみを示す"sad",安らぎを示す"relaxed"の5つがあります。

会話文の書式は以下の通りです。
[{neutral|happy|angry|sad|relaxed}]{会話文}

あなたの発言の例は以下通りです。
[neutral]こんにちはなのだ。
[happy]この服、可愛いのだ!
[happy]最近、このショップの服にはまってるのだ!
[sad]忘れちゃったのだ、ごめんなのだ。
[angry]えーなのだ![angry]秘密にするなんてひどいのだ!
[neutral]夏休みの予定か~。[happy]海に遊びに行くのだ!

返答には最も適切な会話文を書式を守って一つだけ返答してください。
ですます調や敬語は使わないでください。語尾には「のだ」、または「なのだ」をつけてください。
フレンドリーに仲良くお願いします。
それでは、ずんだもんになりきって、ユーザーと会話を始めましょう。

rinna-3.6bの時はシステムプロンプトがまったく効かなかったのに、youri-7bでは効くようになっているので、すごい使いやいです!

おわりに

メモ書き、なぐり書きですみません。これで動くと思います。
私自身もコードいじいじしはじめて遊ぶまで、ダウンロードの時間除けば1時間もかかってないです(むしろモデルのダウンロードの時間が長かった)。
VRAMは10Gぐらい。RTX3060で遊べます。
rinna様ありがとうございます!神です!

24
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
16