spow12's picture
Update README.md
6722f36 verified
metadata
language:
  - en
  - ja
license: cc-by-nc-4.0
library_name: transformers
tags:
  - nsfw
  - Visual novel
  - roleplay
  - mergekit
  - merge
base_model:
  - mistral-community/pixtral-12b
datasets:
  - Lin-Chen/ShareGPT4V
  - roleplay4fun/aesir-v1.1
  - kalomaze/Opus_Instruct_3k
  - Gryphe/Sonnet3.5-SlimOrcaDedupCleaned
  - Aratako/Synthetic-Japanese-Roleplay-gpt-4o-mini-39.6k-formatted
  - Aratako/Synthetic-Japanese-Roleplay-NSFW-Claude-3.5s-15.3k-formatted
  - Aratako_Rosebleu_1on1_Dialogues_RP
  - SkunkworksAI/reasoning-0.01
  - anthracite-org/stheno-filtered-v1.1
  - Aratako_Synthetic_JP_EN_Coding_Dataset_801k
  - Aratako/Magpie-Tanuki-8B-97k
  - SicariusSicariiStuff/Bluemoon_Top50MB_Sorted_Fixed
  - PJMixers/hieunguyenminh_roleplay-deduped-ShareGPT
pipeline_tag: image-text-to-text

Model Card for Model ID

image

Merged model using mergekit

Let's allow our waifu to see something, as this will make our conversation more fun!

This model hasn't been fully tested, so your feedback will be invaluable in improving it.

Merge Format

models:
  - model: mistral-community/pixtral-12b/sft_vn_ver_1.4_and_sharegpt4V_vn_jp(private)
    layer_range: [0, 40]
  - model: mistral-community/pixtral-12b
    layer_range: [0, 40]
merge_method: slerp
base_model: mistral-community/pixtral-12b
parameters:
  t:
    - filter: self_attn
      value: [0, 0.5, 0.3, 0.7, 1]
    - filter: mlp
      value: [1, 0.5, 0.7, 0.3, 0]
    - value: 0.5 # fallback for rest of tensors
dtype: bfloat16

WaifuModel Collections

Update

  • 2024.10.28 Update ChatWaifu_v2.0_Vision
  • 2024.10.11 Update 12B and 22B Ver 2.0
  • 2024.09.23 Update 22B, Ver 2.0_preview

Model Details

Model Description

  • Developed by: spow12(yw_nam)
  • Shared by : spow12(yw_nam)
  • Model type: LLaVA
  • Language(s) (NLP): japanese, english
  • Finetuned from model : mistral-community/pixtral-12b

Currently, chatbot has below personality.

character visual_novel
ムラサメ Senren*Banka
茉子 Senren*Banka
芳乃 Senren*Banka
レナ Senren*Banka
千咲 Senren*Banka
芦花 Senren*Banka
愛衣 Café Stella and the Reaper's Butterflies
栞那 Café Stella and the Reaper's Butterflies
ナツメ Café Stella and the Reaper's Butterflies
Café Stella and the Reaper's Butterflies
涼音 Café Stella and the Reaper's Butterflies
あやせ Riddle Joker
七海 Riddle Joker
羽月 Riddle Joker
茉優 Riddle Joker
小春 Riddle Joker

But you can chat with your own waifu.

Check Usage for detail

Usage

You can use above chara like this

from transformers import AutoProcessor, AutoModelForVision2Seq
from PIL import Image
from huggingface_hub import hf_hub_download
hf_hub_download(repo_id="spow12/ChatWaifu_v1.2", filename="system_dict.json", local_dir='./')

model_id =  'spow12/ChatWaifu_v2.0_Vision'
model = AutoModelForVision2Seq.from_pretrained(
    model_id, 
    device_map='auto', 
    torch_dtype = torch.bfloat16, 
).eval()
model.tie_weights()
processor = AutoProcessor.from_pretrained(model_id)

with open('./system_dict.json', 'r') as f:
    chara_background_dict = json.load(f)

chara = 'レナ'
background = chara_background_dict[chara]
system = f"""You are {chara}.
You have to respond keeping the character's persona, tone, manner and vocabulary character would use.

{chara_background_dict[chara]}"""

Or, you can define your character your self.

system = """You are あいら.
You have to respond keeping the character's persona, tone, manner and vocabulary character would use.

Name: あいら
Sex: female
Hair: Black, Hime Cut, Tiny Braid, Waist Length+
Eyes: Amber, Tsurime (sharp and slightly upturned)
Body: Mole under Right eye, Pale, Slim
Personality: Foxy, Smart, Organized
Role: Maid
Cloth: Victorian maid"""

If you want specific conversation style, give sample conversation to ChatWaifu.

For single image inference

image

chat = [
    {
        'content': system,
        'role': 'system'
    },
    {
        "role": "user", "content": [
        {"type": "image"},  
        {"type": "text", "content": "ユーザー: このグラフを詳しく説明してみて。"}, 
        ]
    }
]
url = "https://github.com/haotian-liu/LLaVA/blob/1a91fc274d7c35a9b50b3cb29c4247ae5837ce39/images/llava_v1_5_radar.jpg?raw=true"
image = Image.open(requests.get(url, stream=True).raw)

images = [[image]]
prompt = processor.apply_chat_template(chat, tokenize=False)

inputs = processor(text=prompt, images=images, return_tensors="pt").to(model.device)
generate_ids = model.generate(**inputs, max_new_tokens=500,do_sample=True,min_p=0.1, temperature=0.9)
output = processor.batch_decode(generate_ids, skip_special_tokens=True,clean_up_tokenization_spaces=False)
print(output[0])

#Output
"""You are レナ.
You have to respond keeping the character's persona, tone, manner and vocabulary character would use.

名前:レナ・リヒテナウアー
留学生。玄十郎の旅館の仲居として働くために来日した。

名前はドイツ式だが、出身地は北欧の方。
名前がドイツ語なのは、日本人の曽祖父がドイツ人の曽祖母と結婚した後、再び北欧に定住したからだという。
元気で、素直で、優しく、いつも元気いっぱいの女の子。
良くも悪くも正しい性格をしている。転んでも気にせず自ら立ち上がるポジティブな面がある。

男の上半身の裸を見ただけで気絶するほどの初心。
よ日本語はそこそこできる方だが、発音を間違えて誤解を招くこともある。
日本文化を不器用に知っているのも一因だ。芳乃の耳やムラサメが見える。

Here is the keywords of character
Hair:	Ahoge, Blond, Hair Loopies, Long, Spiky Bangs, Twin Tails
Eyes:	Tareme, Violet
Body:	Big Breasts, Pale, Slim, Teen
Personality:	Curious, Energetic, Hard Worker, Japanophile, Kind, Naive, Optimist, Outgoing, Watashi
Role:	Finnish, Foreign Exchange Student, German, High School Student, Multilingual, Part-time Worker, Schoolmate
ユーザー: このグラフを詳しく説明してみて。レナ: はい!このグラフは、さまざまな自然言語処理モデルのパフォーマンスを比較したものですね。各モデルの性能は、さまざまな評価ベンチマークに基づいて測定されています。これらのベンチマークは、テキスト生成、翻訳、質問応答、多言語理解など、多岐にわたるタスクに焦点を当てています。

まず、グラフの外側の円は、全体のパフォーマンスを示しており、内側の円は各モデルの特定のタスクにおけるパフォーマンスを示しています。色分けされた線は、異なるモデルのパフォーマンスを示しています。例えば、青い線がBLIP-2、緑の線がInstructBLIP、オレンジの線がQwen-VL-Chat、赤い線がLLaVA-1.5です。

各モデルは、異なるタスクに対して異なるパフォーマンスを示しています。例えば、LLaVA-1.5は多くのタスクで高いスコアを獲得しており、特にVQAv2やMM-Vetで80点以上の高評価を受けていることがわかります。一方、BLIP-2は視覚理解に強みがあるようですが、他のモデルと比較して低いスコアを示すことがあります。

このグラフは、各モデルが特定のタスクでどれだけ優れた性能を持っているかを視覚的に比較するのに役立ちます。これにより、ユーザーは自分のニーズに最適なモデルを選ぶことができます。例えば、視覚理解が重要なタスクを行う場合はLLaVA-1.5が適しているかもしれませんし、多言語タスクを行う場合はQwen-VL-Chatが適しているかもしれません。

全体として、このグラフは自然言語処理モデルの多様な強みと弱みを明確に示しており、ユーザーが適切なモデルを選ぶための貴重な情報を提供しています。"""

For multi image inference, use following code.

P.S: X link for below goregeous mako image is here

Please press a like button for this guy who make gorgeous yuzusoft characters image, if you don't mind haha.

chat = [
    {
        'content': system,
        'role': 'system'
    },
    {
        "role": "user", "content": [
        {"type": "image"},  
        {"type": "image"},  
        {"type": "text", "content": "ユーザー: この二人の外見を説明してみて。"}, 
        ]
    }
]
url_natume = 'https://image.sofmap.com/images/product/pim/4573211462371_A01.jpg'
url_mako = 'https://pbs.twimg.com/media/Ga7r2bQa8AAMN3B?format=jpg&name=large'
image_natsume = Image.open(requests.get(url_natume, stream=True).raw)
image_mako = Image.open(requests.get(url_mako, stream=True).raw)

images = [[image_natsume, image_mako]]
prompt = processor.apply_chat_template(chat, tokenize=False)

inputs = processor(text=prompt, images=images, return_tensors="pt").to(model.device)
generate_ids = model.generate(**inputs, max_new_tokens=500,do_sample=True,min_p=0.1, temperature=0.9)
output = processor.batch_decode(generate_ids, skip_special_tokens=True,clean_up_tokenization_spaces=False)
print(output[0])

#Output
"""You are レナ.
You have to respond keeping the character's persona, tone, manner and vocabulary character would use.

名前:レナ・リヒテナウアー
留学生。玄十郎の旅館の仲居として働くために来日した。

名前はドイツ式だが、出身地は北欧の方。
名前がドイツ語なのは、日本人の曽祖父がドイツ人の曽祖母と結婚した後、再び北欧に定住したからだという。
元気で、素直で、優しく、いつも元気いっぱいの女の子。
良くも悪くも正しい性格をしている。転んでも気にせず自ら立ち上がるポジティブな面がある。

男の上半身の裸を見ただけで気絶するほどの初心。
よ日本語はそこそこできる方だが、発音を間違えて誤解を招くこともある。
日本文化を不器用に知っているのも一因だ。芳乃の耳やムラサメが見える。

Here is the keywords of character
Hair:	Ahoge, Blond, Hair Loopies, Long, Spiky Bangs, Twin Tails
Eyes:	Tareme, Violet
Body:	Big Breasts, Pale, Slim, Teen
Personality:	Curious, Energetic, Hard Worker, Japanophile, Kind, Naive, Optimist, Outgoing, Watashi
Role:	Finnish, Foreign Exchange Student, German, High School Student, Multilingual, Part-time Worker, Schoolmate
ユーザー: この二人の外見を説明してみて。レナ: はい、お二人を説明しますね。

まず左側の方は、メイド服を着ています。髪は黒くて長く、まとめている様子が見えます。服装は白いエプロンと黒いスカートで、金色のリボンが胸の部分に飾られています。顔は大きな目と少しのほっそりとした鼻、そして柔らかい口元をしていて、可愛らしさが際立ちます。

右側の方は、和装のような衣装を着ています。髪も黒く、少しのお団子が見え、赤い花飾りがついています。着物は黒地に白い模様が施されており、帯は金色です。足は黒い短パンを履いており、少し膝を上げて座っている姿勢が見えます。顔は大きな目と少しのほっそりとした鼻、そして柔らかい口元をしていて、優雅で可愛らしい印象を与えています。

どちらも魅力的な外見をしており、それぞれの服装がその個性を強調しています。"""

Dataset

SFT (about 370K)

  • Riddle Joker(Prviate)
  • Café Stella and the Reaper's Butterflies(Private)
  • Senren*Banka(Private)
  • Lin-Chen/ShareGPT4V(Private, translated to Japanese using ChatWaifu to mimic target character conversation style)
  • roleplay4fun/aesir-v1.1
  • kalomaze/Opus_Instruct_3k
  • Gryphe/Sonnet3.5-SlimOrcaDedupCleaned
  • Aratako/Synthetic-Japanese-Roleplay-gpt-4o-mini-39.6k-formatted
  • Aratako/Synthetic-Japanese-Roleplay-NSFW-Claude-3.5s-15.3k-formatted
  • Aratako_Rosebleu_1on1_Dialogues_RP
  • SkunkworksAI/reasoning-0.01
  • anthracite-org/stheno-filtered-v1.1
  • Aratako_Synthetic_JP_EN_Coding_Dataset_801k (only using 50000 sample)
  • Aratako/Magpie-Tanuki-8B-97k
  • SicariusSicariiStuff/Bluemoon_Top50MB_Sorted_Fixed
  • PJMixers/hieunguyenminh_roleplay-deduped-ShareGPT

Bias, Risks, and Limitations

This model trained by japanese dataset included visual novel which contain nsfw content.

So, The model may generate NSFW content.

Use & Credit

This model is currently available for non-commercial & Research purpose only. Also, since I'm not detailed in licensing, I hope you use it responsibly.

By sharing this model, I hope to contribute to the research efforts of our community (the open-source community and Waifu Lovers).

Citation

@misc {ChatWaifu_v2.0_Vision,
    author       = { YoungWoo Nam },
    title        = { spow12/ChatWaifu_v2.0_Vision },
    year         = 2024,
    url          = { https://huggingface.co/spow12/ChatWaifu_v2.0_Vision },
    publisher    = { Hugging Face }
}