soramikaduki's picture
Update README.md
6d2ecc2 verified
metadata
license: apache-2.0
language:
  - ja
pipeline_tag: text-generation
tags:
  - not-for-all-audiences

Antler-RP-ja-westlake-chatvector

日本語のNSFWモデルになることを目的として作成しました。

モデル概要

優秀なRPモデルであるAratako/Antler-7B-RPをベースに、ChatVector手法を用いてRP能力およびNSFW能力強化しています。 ChatVector手法にはsenseable/WestLake-7B-v2を用いています。

モデルテンプレート

mistral形式で入れるのが好ましい結果になりやすいと思います。 検証は以下のテンプレートで行いました。

prompt_templete_antler = """
{assistant_character_instruction}
ユーザー:「{user_prompt}」
チャットボット:[/INST]
"""

Chatvector適用のコード

from transformers import AutoModelForCausalLM, AutoTokenizer
import torch


base_model = AutoModelForCausalLM.from_pretrained(
"mistralai/Mistral-7B-v0.1",
torch_dtype=torch.bfloat16,
device_map="cuda",
)

inst_model = AutoModelForCausalLM.from_pretrained(
"senseable/WestLake-7B-v2",
torch_dtype=torch.bfloat16,
device_map="cuda",
)

cp_model = AutoModelForCausalLM.from_pretrained(
"Aratako/Antler-7B-RP",
torch_dtype=torch.bfloat16,
device_map="cuda",
)

for k, v in cp_model.state_dict().items():
chat_vector = inst_model.state_dict()[k] - base_model.state_dict()[k]
new_v = v + ( 0.5 * chat_vector.to(v.device) )
v.copy_(new_v)

cp_model.save_pretrained("./Antler-RP-ja-westlake-chatvector")

cp_tokenizer = AutoTokenizer.from_pretrained("Aratako/Antler-7B-RP")
cp_tokenizer.save_pretrained("./Antler-RP-ja-westlake-chatvector")

参考文献

LightChatAssistant 2x7B を再現する

Chat Vectorを使って日本語LLMをチャットモデルに改造する