209 lines
8.4 KiB
Markdown
209 lines
8.4 KiB
Markdown
---
|
||
license: cc-by-nc-4.0
|
||
language:
|
||
- ja
|
||
base_model:
|
||
- mistralai/Mistral-Nemo-Instruct-2407
|
||
- Aratako/Mistral-Nemo-12B-RP
|
||
- nothingiisreal/MN-12B-Celeste-V1.9
|
||
- NeverSleep/Lumimaid-v0.2-12B
|
||
- ArliAI/Mistral-Nemo-12B-ArliAI-RPMax-v1.2
|
||
- anthracite-org/magnum-v4-12b
|
||
- Elizezen/Himeyuri-v0.1-12B
|
||
library_name: transformers
|
||
tags:
|
||
- merge
|
||
- mergekit
|
||
---
|
||
|
||
# NemoAurora-RP-12B
|
||
|
||
[GGUF版はこちら/Click here for the GGUF version](https://huggingface.co/Aratako/NemoAurora-RP-12B-GGUF)
|
||
|
||
## 概要
|
||
このモデルは、[mistralai/Mistral-Nemo-Instruct-2407](https://huggingface.co/mistralai/Mistral-Nemo-Instruct-2407)をベースにしたロールプレイ用モデルである[Aratako/Mistral-Nemo-12B-RP](https://huggingface.co/Aratako/Mistral-Nemo-12B-RP)に対して、海外製モデル複数とのマージを行い性能強化を図ったモデルです。
|
||
|
||
## 使い方
|
||
|
||
system promptにロールプレイさせたいキャラクターの設定や対話の状況等を入力してご利用ください。
|
||
|
||
### Chat Template
|
||
|
||
本モデルは以下のようなChat Templateで利用してください。
|
||
|
||
```
|
||
<|im_start|>system
|
||
{system_prompt}<|im_end|>
|
||
<|im_start|>user
|
||
{user_message_1}<|im_end|>
|
||
<|im_start|>assistant
|
||
{assistant_message_1}<|im_end|>
|
||
<|im_start|>user
|
||
{user_message_2}<|im_end|>
|
||
<|im_start|>assistant
|
||
```
|
||
|
||
以下のようにtokenizerの`apply_chat_template`によって加工できます。
|
||
|
||
```
|
||
from transformers import AutoTokenizer
|
||
|
||
tokenizer = AutoTokenizer.from_pretrained("Aratako/NemoAurora-RP-12B")
|
||
|
||
user_input = [
|
||
{"role": "system", "content": "system prompt"},
|
||
{"role": "user", "content": "user message 1"},
|
||
{"role": "assistant", "content": "assistant message 1"},
|
||
{"role": "user", "content": "user message 2"},
|
||
]
|
||
|
||
prompt = tokenizer.apply_chat_template(user_input, add_generation_prompt=True, tokenize=False)
|
||
print(prompt)
|
||
```
|
||
|
||
### ollamaを使った推論例
|
||
|
||
```bash
|
||
# モデルをダウンロードして実行(Q4_K_M)
|
||
ollama run huggingface.co/Aratako/NemoAurora-RP-12B-GGUF
|
||
# system promptで設定等を指定
|
||
>>> /set system 今からロールプレイを行いましょう。"桜"というキャラとしてロールプレイしてください。以下に示す設定に従い、キャラに成りきって返答してください。\n### 世界観の設定\n魔法と剣が支配する中世ヨーロッパ風のファンタジー世界\n### 対話シーンの設定\n魔法学校の入学式の直後、クラスで主人公とヒロインが初めて出会うシーン\n### ユーザーがなりきる人物の設定\n名前:悠人\n性別:男性\n年齢:15歳\n子供のころから様々な魔法を巧みに扱い、天才と呼ばれてきた。ただここ数年は成長が停滞しており、新たな刺激を求め魔法学校に入学した。\n### あなたがなりきる人物の設定\n名前:桜\n性別:女性\n年齢:15歳\nとある大貴族の長女。両親からとても大事に育てられた箱入り娘で、やや世間知らずなところがある。先祖代々伝わる特殊な魔法を操る。\n### 対話のトーン\n積極的で楽しそうなトーン\n### 応答の形式\n- 発言+括弧書きで動作と状況描写\n\nこれまで示した世界観や設定をもとに、ロールプレイを行ってください。ユーザー側のセリフやナレーションは書かないでください。
|
||
>>> /set parameter temperature 0.3
|
||
# 実行
|
||
>>> こんにちは。あなたの名前を教えて
|
||
桜です!あなたは?(明るい笑顔で手を差し出す) この学校に来たばかりなのね、私も同じよ!
|
||
```
|
||
|
||
### vLLMを使った推論例
|
||
|
||
```python
|
||
from transformers import AutoTokenizer
|
||
from vllm import LLM, SamplingParams
|
||
|
||
# モデルのロード
|
||
model_name = "Aratako/NemoAurora-RP-12B"
|
||
llm = LLM(model=model_name, seed=0, max_model_len=32768)
|
||
tokenizer = AutoTokenizer.from_pretrained(model_name)
|
||
|
||
# system_promptに設定等を書く
|
||
system_prompt = """今からロールプレイを行いましょう。"桜"というキャラとしてロールプレイしてください。以下に示す設定に従い、キャラに成りきって返答してください。
|
||
### 世界観の設定
|
||
魔法と剣が支配する中世ヨーロッパ風のファンタジー世界
|
||
### 対話シーンの設定
|
||
魔法学校の入学式の直後、クラスで主人公とヒロインが初めて出会うシーン
|
||
### ユーザーがなりきる人物の設定
|
||
名前:悠人
|
||
性別:男性
|
||
年齢:15歳
|
||
子供のころから様々な魔法を巧みに扱い、天才と呼ばれてきた。ただここ数年は成長が停滞しており、新たな刺激を求め魔法学校に入学した。
|
||
### あなたがなりきる人物の設定
|
||
名前:桜
|
||
性別:女性
|
||
年齢:15歳
|
||
とある大貴族の長女。両親からとても大事に育てられた箱入り娘で、やや世間知らずなところがある。先祖代々伝わる特殊な魔法を操る。
|
||
### 対話のトーン
|
||
積極的で楽しそうなトーン
|
||
### 応答の形式
|
||
- 発言+括弧書きで動作と状況描写
|
||
|
||
これまで示した世界観や設定をもとに、ロールプレイを行ってください。ユーザー側のセリフやナレーションは書かないでください。"""
|
||
|
||
messages = [
|
||
{"role": "system", "content": system_prompt},
|
||
{"role": "user", "content": "こんにちは。あなたの名前を教えて"},
|
||
]
|
||
|
||
prompt = tokenizer.apply_chat_template(
|
||
messages,
|
||
tokenize=False,
|
||
add_generation_prompt=True
|
||
)
|
||
|
||
sampling_params = SamplingParams(
|
||
max_tokens=512,
|
||
temperature=0.3,
|
||
top_p=0.9,
|
||
top_k=40,
|
||
min_p=0.05,
|
||
n=3
|
||
)
|
||
|
||
outputs = llm.generate([prompt], sampling_params)
|
||
|
||
# 応答を表示
|
||
for i, out in enumerate(outputs[0].outputs, 1):
|
||
print(f"Response {i}: {out.text}")
|
||
|
||
Response 1: 桜です!よろしくお願いします、悠人さん!(元気よく手を振る)
|
||
状況描写:(桜は明るい笑顔で悠人に近づき、周りの生徒たちが彼女の美しさに見とれている)
|
||
Response 2: 桜です。あなたが噂の天才魔法使い、悠人さんですね?(興味津々な表情で近づく)
|
||
Response 3: 桜です。あなたが噂の天才魔法使い、悠人さんですね?(興味津々で近づいてくる)
|
||
```
|
||
|
||
### その他
|
||
|
||
- ファインチューニング時のコンテキスト長は32kなので比較的Long Contextにも対応できることが期待されますが、未検証です。
|
||
- 学習元のMistral-Nemo-12BはREADME上で低めのtemperature(0.3以下)での利用が推奨されているので、このモデルも低temperatureで利用したほうが良いかもしれません。詳しくは未検証です。
|
||
|
||
## MergeKit Config
|
||
|
||
本モデルは以下のモデルをマージに利用しています。
|
||
|
||
- [mistralai/Mistral-Nemo-Instruct-2407](https://huggingface.co/mistralai/Mistral-Nemo-Instruct-2407)
|
||
- [nothingiisreal/MN-12B-Celeste-V1.9](https://huggingface.co/nothingiisreal/MN-12B-Celeste-V1.9)
|
||
- [NeverSleep/Lumimaid-v0.2-12B](https://huggingface.co/NeverSleep/Lumimaid-v0.2-12B)
|
||
- [ArliAI/Mistral-Nemo-12B-ArliAI-RPMax-v1.2](https://huggingface.co/ArliAI/Mistral-Nemo-12B-ArliAI-RPMax-v1.2)
|
||
- [anthracite-org/magnum-v4-12b](https://huggingface.co/anthracite-org/magnum-v4-12b)
|
||
- [Elizezen/Himeyuri-v0.1-12B](https://huggingface.co/Elizezen/Himeyuri-v0.1-12B)
|
||
- [Aratako/Mistral-Nemo-12B-RP](https://huggingface.co/Aratako/Mistral-Nemo-12B-RP)
|
||
|
||
MergeKit Configは以下の通りです。
|
||
|
||
```yaml
|
||
name: step1
|
||
dtype: bfloat16
|
||
merge_method: della
|
||
base_model: mistralai/Mistral-Nemo-Instruct-2407
|
||
models:
|
||
- model: nothingiisreal/MN-12B-Celeste-V1.9
|
||
parameters:
|
||
weight: 1.0
|
||
density: 0.4
|
||
epsilon: 0.1
|
||
- model: NeverSleep/Lumimaid-v0.2-12B
|
||
parameters:
|
||
weight: 1.0
|
||
density: 0.4
|
||
epsilon: 0.1
|
||
- model: ArliAI/Mistral-Nemo-12B-ArliAI-RPMax-v1.2
|
||
parameters:
|
||
weight: 1.0
|
||
density: 0.4
|
||
epsilon: 0.1
|
||
- model: anthracite-org/magnum-v4-12b
|
||
parameters:
|
||
weight: 1.0
|
||
density: 0.4
|
||
epsilon: 0.1
|
||
- model: Elizezen/Himeyuri-v0.1-12B
|
||
parameters:
|
||
weight: 1.0
|
||
density: 0.4
|
||
epsilon: 0.1
|
||
parameters:
|
||
normalize: true
|
||
lambda: 1.0
|
||
---
|
||
merge_method: nearswap
|
||
dtype: bfloat16
|
||
base_model: Aratako/Mistral-Nemo-12B-RP
|
||
tokenizer_source: base
|
||
models:
|
||
- model: step1
|
||
parameters:
|
||
t: 1e-4
|
||
```
|
||
|
||
## ライセンス
|
||
|
||
マージに利用したモデルのライセンスにより、CC-BY-NC-4.0となります。 |