--- license: apache-2.0 language: - ja library_name: transformers tags: - roleplay - merge - mergekit base_model: [Aratako/Ninja-v1-RP, Elizezen/Antler-7B] --- # Ninja-v1-RP-expressive [GGUF版はこちら/Click here for the GGUF version](https://huggingface.co/Aratako/Ninja-v1-RP-expressive-GGUF) ## 概要 This is a merge of pre-trained language models created using [mergekit](https://github.com/cg123/mergekit). ロールプレイ用モデルである[Aratako/Ninja-v1-RP](https://huggingface.co/Aratako/Ninja-v1-RP)をベースに、小説生成モデルである[Elizezen/Antler-7B](https://huggingface.co/Elizezen/Antler-7B)の派生モデルをマージすることで表現力を強化したロールプレイ用モデルです。 ## プロンプトフォーマット Vicunaのchat templateを利用してください。また、設定などを渡すシステムプロンプトは最初の`USER: `より前に入力されることを想定しています。また、マルチターンの対話を行う場合各ターンのアシスタントの応答の末尾に`eos_token`(``)を必ずつけてください。 ``` {ロールプレイの指示、世界観・あらすじの説明、キャラの設定など} USER: {userの最初の入力} ASSISTANT: ``` なお、マージによりロールプレイへの理解力がやや薄れているからか時折ユーザー側のセリフを続けたり小説のようなものを書きだすことがあります。これについてはfew-shot promptingや再生成などで対応してください ## マージの詳細 [Elizezen/Antler-7B](https://huggingface.co/Elizezen/Antler-7B)に対し、まず[mistralai/Mistral-7B-Instruct-v0.2](https://huggingface.co/mistralai/Mistral-7B-Instruct-v0.2)のChat Vectorを加算した後、以下4つの英語RP用モデルのTask Vectorを0.8倍して加算し、4種類のTask Vector加算モデルを作成しました。 - [senseable/WestLake-7B-v2](https://huggingface.co/senseable/WestLake-7B-v2) - [SanjiWatsuki/Kunoichi-DPO-v2-7B](https://huggingface.co/SanjiWatsuki/Kunoichi-DPO-v2-7B) - [SanjiWatsuki/Silicon-Maid-7B](https://huggingface.co/SanjiWatsuki/Silicon-Maid-7B) - [SanjiWatsuki/Loyal-Macaroni-Maid-7B](https://huggingface.co/SanjiWatsuki/Loyal-Macaroni-Maid-7B) 各モデルのTask Vectorの加算の式は以下の通りです。 ``` new_model = Antler-7B + 0.8 * (Mistral-7B-Instruct-v0.2 - Mistral-7B-v0.1) + 0.8 * (target_model - Mistral-7B-v0.1) ``` 次に、このTask Vector加算によってできた4モデルとMistral-7B-Instruct-v0.2の差分加算モデルを、Model Stockという手法を用い以下のようなconfigを使ってmergekitでマージし、Antler-7Bベースのモデルを作成しました。 ```yaml models: - model: ./Antler-7B-CV - model: ./Antler-7B-CV-Kunoichi - model: ./Antler-7B-CV-SiliconMaid - model: ./Antler-7B-CV-WestLake - model: ./Antler-7B-CV-LoyalMacaroniMaid merge_method: model_stock base_model: ./Antler-7B-CV dtype: bfloat16 tokenizer_source: union ``` 最後に、[Aratako/Ninja-v1-RP](https://huggingface.co/Aratako/Ninja-v1-RP)に上記操作で出来上がったモデルを[DARE](https://arxiv.org/abs/2311.03099) [TIES](https://arxiv.org/abs/2306.01708) によってマージし、本モデルを作成しました。 ```yaml models: - model: Aratako/Ninja-v1-RP # no parameters necessary for base model - model: ./Antler-7B-MS # improve expression quality parameters: density: 0.7 weight: 0.5 merge_method: dare_ties base_model: Aratako/Ninja-v1-RP dtype: bfloat16 tokenizer_source: union ```