はじめに
Youri 7BをChatGPT互換API(openai chat completions api互換)サーバとして動かした時のメモ。
今回の記事は、以下の前回の記事の補足的扱い(細かな解説はこの記事では省略)
以下をChatVRMでYouri 7Bで動かせる状態がこの記事の目標。
youri-7b-chatをfastchatでChatGPT互換APIでホストしてChatVRMでサクッと遊ぼう。prompt engineeringが効くのでsystem prompt設定画面で語尾やキャラクター設定できます。fastchatでホストする方法は前回投稿記事どうぞ(宣伝?) #ずんだもん #rinna pic.twitter.com/yFxhmg15Rz
— inada (@dev_inada) October 31, 2023
Youri 7Bとは
rinnaはLlama 2の日本語継続事前学習モデル「Youri 7B」シリーズを公開しました。
— rinna Research (@rinna_research) October 31, 2023
①Youri 7B:日英40Bトークンで継続事前学習
②Youri 7B Instruction:高いベンチマークスコア
③Youri 7B Chat:複数ターンの対話に強い
GPTQ 4bit 量子化モデルも公開しています。
詳細↓ https://t.co/J5ghGq7Kme pic.twitter.com/PfkWRVjRVw
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様ありがとうございます!神です!