--- 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](https://huggingface.co/Aratako/Antler-7B-RP)をベースに、ChatVector手法を用いてRP能力およびNSFW能力強化しています。 ChatVector手法には[senseable/WestLake-7B-v2](https://huggingface.co/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 を再現する](https://sc-bakushu.hatenablog.com/entry/2024/04/14/010153) [Chat Vectorを使って日本語LLMをチャットモデルに改造する](https://qiita.com/jovyan/items/ee6affa5ee5bdaada6b4)