From 6953dadbf7149f8bfeb238ecd6df2a85a96e35fe Mon Sep 17 00:00:00 2001 From: ModelHub XC Date: Sat, 25 Jul 2026 10:11:06 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=EF=BC=8C=E7=94=B1ModelHub=20XC=E7=A4=BE=E5=8C=BA=E6=8F=90?= =?UTF-8?q?=E4=BE=9B=E6=A8=A1=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Model: Minthy/ToriiGate-v0.4-7B Source: Original Platform --- .gitattributes | 56 ++ README.md | 220 ++++++ char_popular_tags.json | 3 + chat_template.json | 3 + config.json | 52 ++ configuration.json | 1 + .../inference_example_exllamav2.py | 131 ++++ .../inference_example_transformers.py | 102 +++ generation_config.json | 14 + merges.txt | 3 + model-00001-of-00004.safetensors | 3 + model-00002-of-00004.safetensors | 3 + model-00003-of-00004.safetensors | 3 + model-00004-of-00004.safetensors | 3 + model.safetensors.index.json | 737 ++++++++++++++++++ preprocessor_config.json | 19 + tg04_splash.jpg | Bin 0 -> 92232 bytes tokenizer.json | 3 + tokenizer_config.json | 129 +++ vocab.json | 3 + 20 files changed, 1488 insertions(+) create mode 100644 .gitattributes create mode 100644 README.md create mode 100644 char_popular_tags.json create mode 100644 chat_template.json create mode 100644 config.json create mode 100644 configuration.json create mode 100644 example_scripts/inference_example_exllamav2.py create mode 100644 example_scripts/inference_example_transformers.py create mode 100644 generation_config.json create mode 100644 merges.txt create mode 100644 model-00001-of-00004.safetensors create mode 100644 model-00002-of-00004.safetensors create mode 100644 model-00003-of-00004.safetensors create mode 100644 model-00004-of-00004.safetensors create mode 100644 model.safetensors.index.json create mode 100644 preprocessor_config.json create mode 100644 tg04_splash.jpg create mode 100644 tokenizer.json create mode 100644 tokenizer_config.json create mode 100644 vocab.json diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..6eaff64 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,56 @@ +*.7z filter=lfs diff=lfs merge=lfs -text +*.arrow filter=lfs diff=lfs merge=lfs -text +*.bin filter=lfs diff=lfs merge=lfs -text +*.bin.* filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.ftz filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.h5 filter=lfs diff=lfs merge=lfs -text +*.joblib filter=lfs diff=lfs merge=lfs -text +*.lfs.* filter=lfs diff=lfs merge=lfs -text +*.model filter=lfs diff=lfs merge=lfs -text +*.msgpack filter=lfs diff=lfs merge=lfs -text +*.onnx filter=lfs diff=lfs merge=lfs -text +*.ot filter=lfs diff=lfs merge=lfs -text +*.parquet filter=lfs diff=lfs merge=lfs -text +*.pb filter=lfs diff=lfs merge=lfs -text +*.pt filter=lfs diff=lfs merge=lfs -text +*.pth filter=lfs diff=lfs merge=lfs -text +*.rar filter=lfs diff=lfs merge=lfs -text +saved_model/**/* filter=lfs diff=lfs merge=lfs -text +*.tar.* filter=lfs diff=lfs merge=lfs -text +*.tflite filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zstandard filter=lfs diff=lfs merge=lfs -text +*.tfevents* filter=lfs diff=lfs merge=lfs -text +*.db* filter=lfs diff=lfs merge=lfs -text +*.ark* filter=lfs diff=lfs merge=lfs -text +**/*ckpt*data* filter=lfs diff=lfs merge=lfs -text +**/*ckpt*.meta filter=lfs diff=lfs merge=lfs -text +**/*ckpt*.index filter=lfs diff=lfs merge=lfs -text + +*.ckpt filter=lfs diff=lfs merge=lfs -text +*.gguf* filter=lfs diff=lfs merge=lfs -text +*.ggml filter=lfs diff=lfs merge=lfs -text +*.llamafile* filter=lfs diff=lfs merge=lfs -text +*.pt2 filter=lfs diff=lfs merge=lfs -text +*.mlmodel filter=lfs diff=lfs merge=lfs -text +*.npy filter=lfs diff=lfs merge=lfs -text +*.npz filter=lfs diff=lfs merge=lfs -text +*.pickle filter=lfs diff=lfs merge=lfs -text +*.pkl filter=lfs diff=lfs merge=lfs -text +*.tar filter=lfs diff=lfs merge=lfs -text +*.wasm filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text +*tfevents* filter=lfs diff=lfs merge=lfs -text + +model-00003-of-00004.safetensors filter=lfs diff=lfs merge=lfs -text +char_popular_tags.json filter=lfs diff=lfs merge=lfs -text +model-00001-of-00004.safetensors filter=lfs diff=lfs merge=lfs -text +vocab.json filter=lfs diff=lfs merge=lfs -text +model-00002-of-00004.safetensors filter=lfs diff=lfs merge=lfs -text +tokenizer.json filter=lfs diff=lfs merge=lfs -text +merges.txt filter=lfs diff=lfs merge=lfs -text +model-00004-of-00004.safetensors filter=lfs diff=lfs merge=lfs -text \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..51b6dd2 --- /dev/null +++ b/README.md @@ -0,0 +1,220 @@ +--- +license: apache-2.0 +language: +- en +base_model: +- Qwen/Qwen2-VL-7B +tags: +- multimodal +- vision +- image-text-to-text +--- +

+ +![image](https://huggingface.co/Minthy/ToriiGate-v0.4-7B/resolve/main/tg04_splash.jpg) + +

+ +# Introduction +**ToriiGate-v0.4** is a state of art VLM designed for captioning of anime pictures, digital artworks and various images. + +The model is a further development of [ToriiGate-v0.3](https://huggingface.co/Minthy/ToriiGate-v0.3), but this time is based on Qwen2-VL that was finetuned with dataset of **over 900k of artworks** with various captions. +**ToriiGate-v0.4** provides state of the art level of understanding for complex scenes, interactions, cultural concepts and any kind of NSFW activities without any borders or censorship. Flexible grounding allows to achieve extra accuracy. +Also, at the moment of release it is the only opensource small-sized VLM that can handle character names well, including multiple. + +This is 7B version, also [**2B version**](https://huggingface.co/Minthy/ToriiGate-v0.4-2B) available. Also check out quants ([8bpw](https://huggingface.co/Minthy/ToriiGate-v0.4-7B-exl2-8bpw), [6bpw](https://huggingface.co/Minthy/ToriiGate-v0.4-7B-exl2-6bpw), [4bpw](https://huggingface.co/Minthy/ToriiGate-v0.4-7B-exl2-4bpw)). + +## Showcase on rentry +[SFW](https://rentry.co/goxrrvh9) [NSFW](https://rentry.co/9wranqty) + +# Key features +* Advanced knowledges related to anime and digital art in very wide range +* Accurate use of character names in generated descriptions (with grounding) +* Multiple options for generated captions, including structured output, chain of thoughts details improving, long/short, bounding boxes +* Mode for reviewing and fixing existing captions using CoT, or prunning it to make short and convenient +* Flexible groudning for improving of accuracy: booru tags, natural text info, character names, popular traits or tags for each character on picture +* Created captions are more meaningful and dense without purple prose fillers, compared to other models + +# Captioning modes +ToriiGate-v0.4 provides multiple captioning modes. Prompts for them and examples are listed at the bottom. +1. **Structured output** + +Can be warapped in json or markdown based on prompt. Provides description for each character on the picture mentioning their features, actions, etc., then description of background, other picture contents, image effects and texts if any, general atmosphere. +This style of captions provides best segmentation and brings attention mostly to characters on the picture. Then it can be easily processed to desired format with other LLM (or prunned with second call ToriiGate) to make it easy readable or match desired case. Character segmentation in combination with bounding boxes (that can be enabled inline) allows to create special datasets for training new generation generative models using special tecniques. + +2. **Pre-defined captions options** + +This makes the model to generate 4 followed descriptions in styles: "Regular Summary", "Individual Parts", "Midjourney-Style Summary", "DeviantArt Commission Request". +That order allows to describe basic things, then improve extra details in individual section and after shrink it without losing accuracy or involving extra biases. Original idea is not mine. +This mode is balanced all-rounder but quite token-comsumming. In case if you want to then reprocess it, you can use `### 3.` as a stop sequence to trimm summarized parts and speed up generation. + +3. **Long description** + +Just a regular long description. Torii tends to make it a bit more structured then randomly shuffled parts like with other models. + +4. **Short caption** + +Short and convenient caption. Less slopy and more dense then a long one, might be used as is for diffusion models training. + +5. **Bounding boxes** + +Provides bounding boxes for characters and their faces. Standalone usage is pointless taking into account the performance/compute for object detaction models. But it can be used along with structured mode and shares same numbers or names. + +6. **Review and correct existing caption** + +Provides step by step review of given caption and compares it with image contents, with provided grounding, evaluates how correctly the characters names were used. Then, if needed, it writes a new fixed caption maintaining original style (if possible). +In current version it is usable only with tags grounding and can improve accuracy of generated caption in second call. Accuracy for other cases may vary and this is not the main usecase. + +7. **Writing a short caption based on existing.** + +After generating some caption you can prune it right here taking into account image content. Can be used with external captions as well. + +# **To utilize full potential you must follow prompt templates that are listed below.** + +# Grounding + +New version comes not only with improved zero-shot accuracy, but also introduces new modes for adding ground truth. You can use booru tags, some extra info, give names for characters or even describe each one to ensure right description when multiple are in frame. +Extra grounding allows to achieve best results for unattended use extra grounded truth is required. ToriiGate provides following options for it: +1. Booru tags. Can be full string or just few mentioning character count. Character name tags are recognized here. +2. Character list. List of character names on the picture to be used in caption. Beware of spamming skin tags here (like hatsune_miku + hatsune_miku_(append)), usually it is fine but some can be misinterpreted. +3. Character traits. A list of popular tags or traits for each character on the picture to improve recognition. Some can be found [here](https://huggingface.co/Minthy/ToriiGate-v0.4-7B/resolve/main/char_popular_tags.json), you can make your own, get from [this repo](https://huggingface.co/datasets/deepghs/character_index) (beware, a lot of incauracies!) or describe it with natural language. +4. General info. Might be a short caption, some facts, any other info. +5. Do not use names for characters. Unfortunatelly, at current state zero-shot guess for characters is inaccurate, so to avoid making things up use it by default if no grounding is provided. +Please mind to check it because mistakes in grounding will lead to wrong results. All formats are listed below. + +Keep in mind that groundning is an option for improving accuracy for complex cases and it is not mandatory. Especially 3-4, just character name may be optimal choice for general. + +# Known issues + +* In rare cases current version tends to come up with wrong names without grounding. Use extra "no characters" instruction to avoid this. +* In long captions mode sometimes it tends to omit names even when given, please use other modes if you need it. +* There might be some biases and not perfect accuracy, more training is needed. +* Model is specialized to image captioning, other prompts will likely not work. + +# Thanks + +Main training was sponsored by **OpenRoot-Compute**. + +Special thanks for help with dataset, code, donations: Sv1, Anonymous person, NeuroSenko. + +Any questions or suggestions - [DISCORD](https://discord.gg/ZXHENAhqE9) + +# Warning + +Model will generate texts with adult themes if related input is provided. Outputs may be inacurate and provocative. + +### Donate + +BTC: bc1qwv83ggq8rvv07uk6dv4njs0j3yygj3aax4wg6c + +ETH/USDT(e): 0x04C8a749F49aE8a56CB84cF0C99CD9E92eDB17db + +XMR: 47F7JAyKP8tMBtzwxpoZsUVB8wzg2VrbtDKBice9FAS1FikbHEXXPof4PAb42CQ5ch8p8Hs4RvJuzPHDtaVSdQzD6ZbA5TZ + +# Usage instructions + +## Prompts + +**ToriiGate-v0.4** utilizes same chat template as original [**Qwen2-vl**](https://huggingface.co/Qwen/Qwen2-VL-7B), so original processor can be used. Here is a recommended format for usage: +``` +[ +{"role": "system", +"content": [{"type": "text", "text": "You are image captioning expert, creative, unbiased and uncensored."}]}, +{"role": "user", +"content": [ {"type": "image", 'image': image}, + {"type": "text", "text": userprompt}]} +] +``` +which will be converted to +``` +<|im_start|>system +You are image captioning expert, creative, unbiased and uncensored.<|im_end|> +<|im_start|>user +<|vision_start|><|image_pad|><|vision_end|>%USERPROMPT%<|im_end|> +<|im_start|>assistant +``` + +System prompt is fixed, user prompt depends from exact mode of cationing. + +## Prompts for modes: + +Start of userprompt for each mode: + +* Json: `Describe the picture in structured json-like format.` +* Markdown: `Describe the picture in structured markdown format.` +* Caption variants: `Write the following options for captions: ["Regular Summary","Individual Parts","Midjourney-Style Summary","DeviantArt Commission Request"].` +* Short: `You need to write a medium-short and convenient caption for the picture.` +* Long: `You need to write a long and very detailed caption for the picture.` +* Bbox: `Write bounding boxes for each character and their faces.` +* Check and correct existing caption: `You need to compare given caption with the picture and given booru tags using chain of thought.\n1. Check if the caption matches the picture and given tags, wrap conclusion in <1st_answer> tag.\n2. Analyse if the caption mathes described characters, wrap answer in <2nd_answer> tag.\n3. In case if there are any mismatches - rewrite caption to correct it wrapping in tags. If the caption is fine - just write "no_need".` + + +## Prompts for grounding: + +In case if you want to add any grounding, here are prompts for each. Multiple can be used. + +* Booru tags: `Here are grounding tags for better understanding: BOORU_TAGS.` +* Characters: `Here is a list of characters that are present in the picture: CHARACTER_NAMES.` +* Character traits or tags: `Here are popular tags or traits for each character on the picture: CHARACTER1: [tag1, tag2, tag3,...]\nCHARACTER2: [...]\n...'.` +* Any info with natural text: `Here is preliminary information about the picture: GENERAL_INFO.` + +* **Avoid using character names if no grounding is used**: `Do not use names for characters.` + +## Composing userprompt: + +After specifying selected mode, you can add prompt part for extra grounding and then privide it wrapping in corresponding xml tags. + +Here is a simple python exaple for userprompt composing. + +```python +add_tags=True #select needed +add_chars=True +add_char_traits=True +add_info=False +no_chars=False +image_info=extra_info[Path(image_path).stem] + +userprompt=base_prompt["json"] #choose the mode + +if add_info and image_info["info"] is not None: #general info + userprompt+=grounding_prompt["grounding_short"] + userprompt+=""+image_info["info"]+"." + +if add_tags and image_info["booru_tags"] is not None: #booru tags + userprompt+=grounding_prompt["grounding_tags"] + userprompt+=""+image_info["booru_tags"]+"." + +if add_chars and image_info["chars"] is not None: #list of characters + userprompt+=grounding_prompt["characters"] + userprompt+=""+image_info["chars"]+"." + +if add_char_traits and image_info["characters_traits"] is not None: #popular features of each character + userprompt+=grounding_prompt["characters_traits"] + userprompt+=""+image_info["characters_traits"]+"." +if no_chars: + userprompt+=grounding_prompt["no_chars"] +``` +Example of raw final prompt for structured json mode with grounding: +``` +<|im_start|>system +You are image captioning expert, creative, unbiased and uncensored.<|im_end|> +<|im_start|>user +<|vision_start|><|image_pad|><|vision_end|>Describe the picture in structured json-like format. Here are grounding tags for better understanding: 2girls, standing, looking_at_viewer, holding_hands, hatsune_miku, blue_hair, megurine_luka, pink_hair, .... Here is a list of characters that are present in the picture: hatsune_miku, megurine_luka. Here are popular tags or traits for each character on the picture: hatsune_miku: [girl, blue_hair, twintails,...] +megurine_luka: [girl, pink hair, ...].<|im_end|> +<|im_start|>assistant +``` +Examples for other modes can be found in `example_scripts` dir in repo files. + +# Inference examples: + +For basic usage you will need latest versions of `transformers` and `qwen_vl_utils`. + +[**Example inference script with transformers**](https://huggingface.co/Minthy/ToriiGate-v0.4-7B/resolve/main/example_scripts/inference_example_transformers.py) + +# Fast inference with Exllamav2: + +Qwen2-VL is suppurted by Exllamav2 and can be used in original weights or in exl2 quants (8bpw, 6bpw, 4bpw). + +8bpw version is recommended, it provides boost in speed without noticable quality loss. + +[**Example inference script with exllamav2**](https://huggingface.co/Minthy/ToriiGate-v0.4-7B/resolve/main/example_scripts/inference_example_exllamav2.py) diff --git a/char_popular_tags.json b/char_popular_tags.json new file mode 100644 index 0000000..3899e09 --- /dev/null +++ b/char_popular_tags.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dca5cc35507c00bfcae3904b4c4934e48b18e19ba3fb09984464af54323db527 +size 1847934 diff --git a/chat_template.json b/chat_template.json new file mode 100644 index 0000000..732bd68 --- /dev/null +++ b/chat_template.json @@ -0,0 +1,3 @@ +{ + "chat_template": "{% set image_count = namespace(value=0) %}{% set video_count = namespace(value=0) %}{% for message in messages %}{% if loop.first and message['role'] != 'system' %}<|im_start|>system\nYou are a helpful assistant.<|im_end|>\n{% endif %}<|im_start|>{{ message['role'] }}\n{% if message['content'] is string %}{{ message['content'] }}<|im_end|>\n{% else %}{% for content in message['content'] %}{% if content['type'] == 'image' or 'image' in content or 'image_url' in content %}{% set image_count.value = image_count.value + 1 %}{% if add_vision_id %}Picture {{ image_count.value }}: {% endif %}<|vision_start|><|image_pad|><|vision_end|>{% elif content['type'] == 'video' or 'video' in content %}{% set video_count.value = video_count.value + 1 %}{% if add_vision_id %}Video {{ video_count.value }}: {% endif %}<|vision_start|><|video_pad|><|vision_end|>{% elif 'text' in content %}{{ content['text'] }}{% endif %}{% endfor %}<|im_end|>\n{% endif %}{% endfor %}{% if add_generation_prompt %}<|im_start|>assistant\n{% endif %}" +} \ No newline at end of file diff --git a/config.json b/config.json new file mode 100644 index 0000000..6251ea6 --- /dev/null +++ b/config.json @@ -0,0 +1,52 @@ +{ + "architectures": [ + "Qwen2VLForConditionalGeneration" + ], + "attention_dropout": 0.0, + "bos_token_id": 151643, + "eos_token_id": 151645, + "vision_start_token_id": 151652, + "vision_end_token_id": 151653, + "vision_token_id": 151654, + "image_token_id": 151655, + "video_token_id": 151656, + "hidden_act": "silu", + "hidden_size": 3584, + "initializer_range": 0.02, + "intermediate_size": 18944, + "max_position_embeddings": 32768, + "max_window_layers": 28, + "model_type": "qwen2_vl", + "num_attention_heads": 28, + "num_hidden_layers": 28, + "num_key_value_heads": 4, + "rms_norm_eps": 1e-06, + "rope_theta": 1000000.0, + "sliding_window": 32768, + "tie_word_embeddings": false, + "torch_dtype": "bfloat16", + "transformers_version": "4.41.2", + "use_cache": true, + "use_sliding_window": false, + "vision_config": { + "depth": 32, + "embed_dim": 1280, + "mlp_ratio": 4, + "num_heads": 16, + "in_chans": 3, + "hidden_size": 3584, + "patch_size": 14, + "spatial_merge_size": 2, + "spatial_patch_size": 14, + "temporal_patch_size": 2 + }, + "rope_scaling": { + "type": "mrope", + "mrope_section": [ + 16, + 24, + 24 + ] + }, + "vocab_size": 152064 +} \ No newline at end of file diff --git a/configuration.json b/configuration.json new file mode 100644 index 0000000..4aef15d --- /dev/null +++ b/configuration.json @@ -0,0 +1 @@ +{"framework": "pytorch", "task": "image-text-to-text", "allow_remote": true} \ No newline at end of file diff --git a/example_scripts/inference_example_exllamav2.py b/example_scripts/inference_example_exllamav2.py new file mode 100644 index 0000000..d3a618f --- /dev/null +++ b/example_scripts/inference_example_exllamav2.py @@ -0,0 +1,131 @@ +import torch +from PIL import Image +from exllamav2 import ( + ExLlamaV2, + ExLlamaV2Config, + ExLlamaV2Cache, + ExLlamaV2Tokenizer, + ExLlamaV2VisionTower, +) + +from exllamav2.generator import ( + ExLlamaV2DynamicGenerator, + ExLlamaV2Sampler, +) + + +model_id='./ToriiGate-v04-7b' +max_new_tokens=1000 + +image_file='/path/to/image_1.jpg' + +image_info={} + +image_info["booru_tags"]="2girls, standing, looking_at_viewer, holding_hands, hatsune_miku, blue_hair, megurine_luka, pink_hair, ..." +#image_info["booru_tags"]=open('/path/to/image_1_tags.txt').read().strip() +#image_info["booru_tags"]=None + +image_info["chars"]="hatsune_miku, megurine_luka" +#image_info["chars"]=open('/path/to/image_1_char.txt').read().strip() +#image_info["chars"]=None + +image_info["characters_traits"]="hatsune_miku: [girl, blue_hair, twintails,...]\nmegurine_luka: [girl, pink hair, ...]" +#image_info["characters_traits"]=open('/path/to/image_1_char_traits.txt').read().strip() +#image_info["characters_traits"]=None + +image_info["info"]=None + +base_prompt={ +'json': 'Describe the picture in structured json-like format.', +'markdown': 'Describe the picture in structured markdown format.', +'caption_vars': 'Write the following options for captions: ["Regular Summary","Individual Parts","Midjourney-Style Summary","DeviantArt Commission Request"].', +'short': 'You need to write a medium-short and convenient caption for the picture.', +'long': 'You need to write a long and very detailed caption for the picture.', +'bbox': 'Write bounding boxes for each character and their faces.', +} + +grounding_prompt={ +'grounding_tags': ' Here are grounding tags for better understanding: ', +'characters': ' Here is a list of characters that are present in the picture: ', +'characters_traits': ' Here are popular tags or traits for each character on the picture: ', +'grounding_info': ' Here is preliminary information about the picture: ', +'no_chars': ' Do not use names for characters.', +} + +add_tags=True #select needed +add_chars=True +add_char_traits=True +add_info=False +no_chars=False + +userprompt=base_prompt["json"] #choose the mode + +if add_info and image_info["info"] is not None: #general info + userprompt+=grounding_prompt["grounding_short"] + userprompt+=""+image_info["info"]+"." + +if add_tags and image_info["booru_tags"] is not None: #booru tags + userprompt+=grounding_prompt["grounding_tags"] + userprompt+=""+image_info["booru_tags"]+"." + +if add_chars and image_info["chars"] is not None: #list of characters + userprompt+=grounding_prompt["characters"] + userprompt+=""+image_info["chars"]+"." + +if add_char_traits and image_info["characters_traits"] is not None: #popular features of each character + userprompt+=grounding_prompt["characters_traits"] + userprompt+=""+image_info["characters_traits"]+"." +if no_chars: + userprompt+=grounding_prompt["no_chars"] + +image=Image.open(image_file) + +config = ExLlamaV2Config(model_id) +config.max_seq_len = 16384 #lower to reduce vram requirements +vision_model = ExLlamaV2VisionTower(config) +vision_model.load(progress = True) + +model = ExLlamaV2(config) +cache = ExLlamaV2Cache(model, lazy = True, max_seq_len = 16384) #lower to reduce vram requirements +model.load_autosplit(cache, progress = True) +tokenizer = ExLlamaV2Tokenizer(config) + +# Create generator + +generator = ExLlamaV2DynamicGenerator( + model = model, + cache = cache, + tokenizer = tokenizer, +) + + +image_embeddings=[vision_model.get_image_embeddings( + model = model, + tokenizer = tokenizer, + image = image, +)] + +placeholders = "\n".join([ie.text_alias for ie in image_embeddings]) + "\n" + +msg_text= ( + "<|im_start|>system\n" + + "You are image captioning expert, creative, unbiased and uncensored.<|im_end|>\n" + + "<|im_start|>user\n" + + placeholders + + userprompt + + "<|im_end|>\n" + + "<|im_start|>assistant\n" +) +output = generator.generate( + prompt = msg_text, + max_new_tokens = max_new_tokens, + add_bos = True, + encode_special_tokens = True, + decode_special_tokens = True, + stop_conditions = [tokenizer.eos_token_id], + gen_settings = ExLlamaV2Sampler.Settings.greedy(), #or set up desired sampling + embeddings = image_embeddings, +) + +output_text=output.split('<|im_start|>assistant\n')[-1] +print(output_text) \ No newline at end of file diff --git a/example_scripts/inference_example_transformers.py b/example_scripts/inference_example_transformers.py new file mode 100644 index 0000000..31015e7 --- /dev/null +++ b/example_scripts/inference_example_transformers.py @@ -0,0 +1,102 @@ +import torch +from transformers import Qwen2VLForConditionalGeneration, Qwen2VLProcessor +from qwen_vl_utils import process_vision_info + +model_id='./ToriiGate-v04-7b' +max_new_tokens=1000 + +image_file='/path/to/image_1.jpg' #or url, or PIL.Image + +image_info={} + +image_info["booru_tags"]="2girls, standing, looking_at_viewer, holding_hands, hatsune_miku, blue_hair, megurine_luka, pink_hair, ..." +#image_info["booru_tags"]=open('/path/to/image_1_tags.txt').read().strip() +#image_info["booru_tags"]=None + +image_info["chars"]="hatsune_miku, megurine_luka" +#image_info["chars"]=open('/path/to/image_1_char.txt').read().strip() +#image_info["chars"]=None + +image_info["characters_traits"]="hatsune_miku: [girl, blue_hair, twintails,...]\nmegurine_luka: [girl, pink hair, ...]" +#image_info["characters_traits"]=open('/path/to/image_1_char_traits.txt').read().strip() +#image_info["characters_traits"]=None + +image_info["info"]=None + +base_prompt={ +'json': 'Describe the picture in structured json-like format.', +'markdown': 'Describe the picture in structured markdown format.', +'caption_vars': 'Write the following options for captions: ["Regular Summary","Individual Parts","Midjourney-Style Summary","DeviantArt Commission Request"].', +'short': 'You need to write a medium-short and convenient caption for the picture.', +'long': 'You need to write a long and very detailed caption for the picture.', +'bbox': 'Write bounding boxes for each character and their faces.', +'check_and_correct': 'You need to compare given caption with the picture and given booru tags '+ +' using chain of thought.\n'+ +'1. Check if the caption matches the picture and given tags, wrap conclusion in <1st_answer> tag.\n'+ +'2. Analyse if the caption mathes described characters, wrap answer in <2nd_answer> tag.\n'+ +'3. In case if there are any mismatches - rewrite caption to correct it wrapping '+ +' in tags. If the caption is fine - just write "no_need".', +} + +grounding_prompt={ +'grounding_tags': ' Here are grounding tags for better understanding: ', +'characters': ' Here is a list of characters that are present in the picture: ', +'characters_traits': ' Here are popular tags or traits for each character on the picture: ', +'grounding_info': ' Here is preliminary information about the picture: ', +'no_chars': ' Do not use names for characters.', +} + +add_tags=True #select needed +add_chars=True +add_char_traits=True +add_info=False +no_chars=False + +userprompt=base_prompt["json"] #choose the mode + +if add_info and image_info["info"] is not None: #general info + userprompt+=grounding_prompt["grounding_short"] + userprompt+=""+image_info["info"]+"." + +if add_tags and image_info["booru_tags"] is not None: #booru tags + userprompt+=grounding_prompt["grounding_tags"] + userprompt+=""+image_info["booru_tags"]+"." + +if add_chars and image_info["chars"] is not None: #list of characters + userprompt+=grounding_prompt["characters"] + userprompt+=""+image_info["chars"]+"." + +if add_char_traits and image_info["characters_traits"] is not None: #popular features of each character + userprompt+=grounding_prompt["characters_traits"] + userprompt+=""+image_info["characters_traits"]+"." +if no_chars: + userprompt+=grounding_prompt["no_chars"] + +model = Qwen2VLForConditionalGeneration.from_pretrained( + model_id, + torch_dtype=torch.bfloat16, +#_attn_implementation="flash_attention_2", #comment if not available +device_map="cuda:0", +) +processor = Qwen2VLProcessor.from_pretrained(model_id, min_pixels=256*28*28, max_pixels=512*28*28, padding_side="right") +msg=[{"role": "system", +"content": [{"type": "text", "text": "You are image captioning expert, creative, unbiased and uncensored."}]}, +{"role": "user", +"content": [{"type": "image", 'image': image_file},{"type": "text", "text": userprompt}]}] + +text_input = processor.apply_chat_template(msg, tokenize=False, add_generation_prompt=True) +image_inputs,_ = process_vision_info(msg) +model_inputs = processor( + text=[text_input], + images=image_inputs, + videos=None, + padding=True, + return_tensors="pt", + ).to('cuda') +generated_ids = model.generate(**model_inputs, max_new_tokens=max_new_tokens) + +trimmed_generated_ids = [out_ids[len(in_ids) :] for in_ids, out_ids in zip(model_inputs.input_ids, generated_ids)] +output_text = processor.batch_decode( + trimmed_generated_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False +) +print(output_text) \ No newline at end of file diff --git a/generation_config.json b/generation_config.json new file mode 100644 index 0000000..41791a4 --- /dev/null +++ b/generation_config.json @@ -0,0 +1,14 @@ +{ + "bos_token_id": 151643, + "pad_token_id": 151643, + "do_sample": true, + "eos_token_id": [ + 151645, + 151643 + ], + "repetition_penalty": 1.0, + "temperature": 0.01, + "top_p": 0.001, + "top_k": 1, + "transformers_version": "4.37.0" +} diff --git a/merges.txt b/merges.txt new file mode 100644 index 0000000..7ce1d95 --- /dev/null +++ b/merges.txt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:599bab54075088774b1733fde865d5bd747cbcc7a547c5bc12610e874e26f5e3 +size 1671839 diff --git a/model-00001-of-00004.safetensors b/model-00001-of-00004.safetensors new file mode 100644 index 0000000..a0dbb68 --- /dev/null +++ b/model-00001-of-00004.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6b4e8db557b830b5cc47dac748f7109ac87da9fd6d15d5bdc8ee6e3e135c5e38 +size 4966659944 diff --git a/model-00002-of-00004.safetensors b/model-00002-of-00004.safetensors new file mode 100644 index 0000000..14b8dc7 --- /dev/null +++ b/model-00002-of-00004.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aca58af440a7ceea37bd11612870b74fabc90929f23f4b846743aeecc5d3009b +size 4991495816 diff --git a/model-00003-of-00004.safetensors b/model-00003-of-00004.safetensors new file mode 100644 index 0000000..ef0eb42 --- /dev/null +++ b/model-00003-of-00004.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:37b06df062736fec12eb7f354ce3ea5057e639b27da08f62d943a0c0a756d45e +size 4932751040 diff --git a/model-00004-of-00004.safetensors b/model-00004-of-00004.safetensors new file mode 100644 index 0000000..dc962ac --- /dev/null +++ b/model-00004-of-00004.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:77b53f3ee692a4e25fa6970e3815c8e43244dfa3e040455be955d1a5650cfc59 +size 1691924384 diff --git a/model.safetensors.index.json b/model.safetensors.index.json new file mode 100644 index 0000000..6dc22ff --- /dev/null +++ b/model.safetensors.index.json @@ -0,0 +1,737 @@ +{ + "metadata": { + "total_size": 16582751232 + }, + "weight_map": { + "lm_head.weight": "model-00004-of-00004.safetensors", + "model.embed_tokens.weight": "model-00001-of-00004.safetensors", + "model.layers.0.input_layernorm.weight": "model-00001-of-00004.safetensors", + "model.layers.0.mlp.down_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.0.mlp.gate_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.0.mlp.up_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.0.post_attention_layernorm.weight": "model-00001-of-00004.safetensors", + "model.layers.0.self_attn.k_proj.bias": "model-00001-of-00004.safetensors", + "model.layers.0.self_attn.k_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.0.self_attn.o_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.0.self_attn.q_proj.bias": "model-00001-of-00004.safetensors", + "model.layers.0.self_attn.q_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.0.self_attn.v_proj.bias": "model-00001-of-00004.safetensors", + "model.layers.0.self_attn.v_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.1.input_layernorm.weight": "model-00001-of-00004.safetensors", + "model.layers.1.mlp.down_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.1.mlp.gate_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.1.mlp.up_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.1.post_attention_layernorm.weight": "model-00001-of-00004.safetensors", + "model.layers.1.self_attn.k_proj.bias": "model-00001-of-00004.safetensors", + "model.layers.1.self_attn.k_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.1.self_attn.o_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.1.self_attn.q_proj.bias": "model-00001-of-00004.safetensors", + "model.layers.1.self_attn.q_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.1.self_attn.v_proj.bias": "model-00001-of-00004.safetensors", + "model.layers.1.self_attn.v_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.10.input_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.10.mlp.down_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.10.mlp.gate_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.10.mlp.up_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.10.post_attention_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.10.self_attn.k_proj.bias": "model-00002-of-00004.safetensors", + "model.layers.10.self_attn.k_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.10.self_attn.o_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.10.self_attn.q_proj.bias": "model-00002-of-00004.safetensors", + "model.layers.10.self_attn.q_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.10.self_attn.v_proj.bias": "model-00002-of-00004.safetensors", + "model.layers.10.self_attn.v_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.11.input_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.11.mlp.down_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.11.mlp.gate_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.11.mlp.up_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.11.post_attention_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.11.self_attn.k_proj.bias": "model-00002-of-00004.safetensors", + "model.layers.11.self_attn.k_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.11.self_attn.o_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.11.self_attn.q_proj.bias": "model-00002-of-00004.safetensors", + "model.layers.11.self_attn.q_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.11.self_attn.v_proj.bias": "model-00002-of-00004.safetensors", + "model.layers.11.self_attn.v_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.12.input_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.12.mlp.down_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.12.mlp.gate_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.12.mlp.up_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.12.post_attention_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.12.self_attn.k_proj.bias": "model-00002-of-00004.safetensors", + "model.layers.12.self_attn.k_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.12.self_attn.o_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.12.self_attn.q_proj.bias": "model-00002-of-00004.safetensors", + "model.layers.12.self_attn.q_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.12.self_attn.v_proj.bias": "model-00002-of-00004.safetensors", + "model.layers.12.self_attn.v_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.13.input_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.13.mlp.down_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.13.mlp.gate_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.13.mlp.up_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.13.post_attention_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.13.self_attn.k_proj.bias": "model-00002-of-00004.safetensors", + "model.layers.13.self_attn.k_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.13.self_attn.o_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.13.self_attn.q_proj.bias": "model-00002-of-00004.safetensors", + "model.layers.13.self_attn.q_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.13.self_attn.v_proj.bias": "model-00002-of-00004.safetensors", + "model.layers.13.self_attn.v_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.14.input_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.14.mlp.down_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.14.mlp.gate_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.14.mlp.up_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.14.post_attention_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.14.self_attn.k_proj.bias": "model-00002-of-00004.safetensors", + "model.layers.14.self_attn.k_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.14.self_attn.o_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.14.self_attn.q_proj.bias": "model-00002-of-00004.safetensors", + "model.layers.14.self_attn.q_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.14.self_attn.v_proj.bias": "model-00002-of-00004.safetensors", + "model.layers.14.self_attn.v_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.15.input_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.15.mlp.down_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.15.mlp.gate_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.15.mlp.up_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.15.post_attention_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.15.self_attn.k_proj.bias": "model-00002-of-00004.safetensors", + "model.layers.15.self_attn.k_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.15.self_attn.o_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.15.self_attn.q_proj.bias": "model-00002-of-00004.safetensors", + "model.layers.15.self_attn.q_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.15.self_attn.v_proj.bias": "model-00002-of-00004.safetensors", + "model.layers.15.self_attn.v_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.16.input_layernorm.weight": "model-00003-of-00004.safetensors", + "model.layers.16.mlp.down_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.16.mlp.gate_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.16.mlp.up_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.16.post_attention_layernorm.weight": "model-00003-of-00004.safetensors", + "model.layers.16.self_attn.k_proj.bias": "model-00002-of-00004.safetensors", + "model.layers.16.self_attn.k_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.16.self_attn.o_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.16.self_attn.q_proj.bias": "model-00002-of-00004.safetensors", + "model.layers.16.self_attn.q_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.16.self_attn.v_proj.bias": "model-00002-of-00004.safetensors", + "model.layers.16.self_attn.v_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.17.input_layernorm.weight": "model-00003-of-00004.safetensors", + "model.layers.17.mlp.down_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.17.mlp.gate_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.17.mlp.up_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.17.post_attention_layernorm.weight": "model-00003-of-00004.safetensors", + "model.layers.17.self_attn.k_proj.bias": "model-00003-of-00004.safetensors", + "model.layers.17.self_attn.k_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.17.self_attn.o_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.17.self_attn.q_proj.bias": "model-00003-of-00004.safetensors", + "model.layers.17.self_attn.q_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.17.self_attn.v_proj.bias": "model-00003-of-00004.safetensors", + "model.layers.17.self_attn.v_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.18.input_layernorm.weight": "model-00003-of-00004.safetensors", + "model.layers.18.mlp.down_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.18.mlp.gate_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.18.mlp.up_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.18.post_attention_layernorm.weight": "model-00003-of-00004.safetensors", + "model.layers.18.self_attn.k_proj.bias": "model-00003-of-00004.safetensors", + "model.layers.18.self_attn.k_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.18.self_attn.o_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.18.self_attn.q_proj.bias": "model-00003-of-00004.safetensors", + "model.layers.18.self_attn.q_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.18.self_attn.v_proj.bias": "model-00003-of-00004.safetensors", + "model.layers.18.self_attn.v_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.19.input_layernorm.weight": "model-00003-of-00004.safetensors", + "model.layers.19.mlp.down_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.19.mlp.gate_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.19.mlp.up_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.19.post_attention_layernorm.weight": "model-00003-of-00004.safetensors", + "model.layers.19.self_attn.k_proj.bias": "model-00003-of-00004.safetensors", + "model.layers.19.self_attn.k_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.19.self_attn.o_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.19.self_attn.q_proj.bias": "model-00003-of-00004.safetensors", + "model.layers.19.self_attn.q_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.19.self_attn.v_proj.bias": "model-00003-of-00004.safetensors", + "model.layers.19.self_attn.v_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.2.input_layernorm.weight": "model-00001-of-00004.safetensors", + "model.layers.2.mlp.down_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.2.mlp.gate_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.2.mlp.up_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.2.post_attention_layernorm.weight": "model-00001-of-00004.safetensors", + "model.layers.2.self_attn.k_proj.bias": "model-00001-of-00004.safetensors", + "model.layers.2.self_attn.k_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.2.self_attn.o_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.2.self_attn.q_proj.bias": "model-00001-of-00004.safetensors", + "model.layers.2.self_attn.q_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.2.self_attn.v_proj.bias": "model-00001-of-00004.safetensors", + "model.layers.2.self_attn.v_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.20.input_layernorm.weight": "model-00003-of-00004.safetensors", + "model.layers.20.mlp.down_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.20.mlp.gate_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.20.mlp.up_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.20.post_attention_layernorm.weight": "model-00003-of-00004.safetensors", + "model.layers.20.self_attn.k_proj.bias": "model-00003-of-00004.safetensors", + "model.layers.20.self_attn.k_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.20.self_attn.o_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.20.self_attn.q_proj.bias": "model-00003-of-00004.safetensors", + "model.layers.20.self_attn.q_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.20.self_attn.v_proj.bias": "model-00003-of-00004.safetensors", + "model.layers.20.self_attn.v_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.21.input_layernorm.weight": "model-00003-of-00004.safetensors", + "model.layers.21.mlp.down_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.21.mlp.gate_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.21.mlp.up_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.21.post_attention_layernorm.weight": "model-00003-of-00004.safetensors", + "model.layers.21.self_attn.k_proj.bias": "model-00003-of-00004.safetensors", + "model.layers.21.self_attn.k_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.21.self_attn.o_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.21.self_attn.q_proj.bias": "model-00003-of-00004.safetensors", + "model.layers.21.self_attn.q_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.21.self_attn.v_proj.bias": "model-00003-of-00004.safetensors", + "model.layers.21.self_attn.v_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.22.input_layernorm.weight": "model-00003-of-00004.safetensors", + "model.layers.22.mlp.down_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.22.mlp.gate_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.22.mlp.up_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.22.post_attention_layernorm.weight": "model-00003-of-00004.safetensors", + "model.layers.22.self_attn.k_proj.bias": "model-00003-of-00004.safetensors", + "model.layers.22.self_attn.k_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.22.self_attn.o_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.22.self_attn.q_proj.bias": "model-00003-of-00004.safetensors", + "model.layers.22.self_attn.q_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.22.self_attn.v_proj.bias": "model-00003-of-00004.safetensors", + "model.layers.22.self_attn.v_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.23.input_layernorm.weight": "model-00003-of-00004.safetensors", + "model.layers.23.mlp.down_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.23.mlp.gate_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.23.mlp.up_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.23.post_attention_layernorm.weight": "model-00003-of-00004.safetensors", + "model.layers.23.self_attn.k_proj.bias": "model-00003-of-00004.safetensors", + "model.layers.23.self_attn.k_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.23.self_attn.o_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.23.self_attn.q_proj.bias": "model-00003-of-00004.safetensors", + "model.layers.23.self_attn.q_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.23.self_attn.v_proj.bias": "model-00003-of-00004.safetensors", + "model.layers.23.self_attn.v_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.24.input_layernorm.weight": "model-00003-of-00004.safetensors", + "model.layers.24.mlp.down_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.24.mlp.gate_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.24.mlp.up_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.24.post_attention_layernorm.weight": "model-00003-of-00004.safetensors", + "model.layers.24.self_attn.k_proj.bias": "model-00003-of-00004.safetensors", + "model.layers.24.self_attn.k_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.24.self_attn.o_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.24.self_attn.q_proj.bias": "model-00003-of-00004.safetensors", + "model.layers.24.self_attn.q_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.24.self_attn.v_proj.bias": "model-00003-of-00004.safetensors", + "model.layers.24.self_attn.v_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.25.input_layernorm.weight": "model-00003-of-00004.safetensors", + "model.layers.25.mlp.down_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.25.mlp.gate_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.25.mlp.up_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.25.post_attention_layernorm.weight": "model-00003-of-00004.safetensors", + "model.layers.25.self_attn.k_proj.bias": "model-00003-of-00004.safetensors", + "model.layers.25.self_attn.k_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.25.self_attn.o_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.25.self_attn.q_proj.bias": "model-00003-of-00004.safetensors", + "model.layers.25.self_attn.q_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.25.self_attn.v_proj.bias": "model-00003-of-00004.safetensors", + "model.layers.25.self_attn.v_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.26.input_layernorm.weight": "model-00004-of-00004.safetensors", + "model.layers.26.mlp.down_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.26.mlp.gate_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.26.mlp.up_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.26.post_attention_layernorm.weight": "model-00004-of-00004.safetensors", + "model.layers.26.self_attn.k_proj.bias": "model-00003-of-00004.safetensors", + "model.layers.26.self_attn.k_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.26.self_attn.o_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.26.self_attn.q_proj.bias": "model-00003-of-00004.safetensors", + "model.layers.26.self_attn.q_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.26.self_attn.v_proj.bias": "model-00003-of-00004.safetensors", + "model.layers.26.self_attn.v_proj.weight": "model-00003-of-00004.safetensors", + "model.layers.27.input_layernorm.weight": "model-00004-of-00004.safetensors", + "model.layers.27.mlp.down_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.27.mlp.gate_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.27.mlp.up_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.27.post_attention_layernorm.weight": "model-00004-of-00004.safetensors", + "model.layers.27.self_attn.k_proj.bias": "model-00004-of-00004.safetensors", + "model.layers.27.self_attn.k_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.27.self_attn.o_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.27.self_attn.q_proj.bias": "model-00004-of-00004.safetensors", + "model.layers.27.self_attn.q_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.27.self_attn.v_proj.bias": "model-00004-of-00004.safetensors", + "model.layers.27.self_attn.v_proj.weight": "model-00004-of-00004.safetensors", + "model.layers.3.input_layernorm.weight": "model-00001-of-00004.safetensors", + "model.layers.3.mlp.down_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.3.mlp.gate_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.3.mlp.up_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.3.post_attention_layernorm.weight": "model-00001-of-00004.safetensors", + "model.layers.3.self_attn.k_proj.bias": "model-00001-of-00004.safetensors", + "model.layers.3.self_attn.k_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.3.self_attn.o_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.3.self_attn.q_proj.bias": "model-00001-of-00004.safetensors", + "model.layers.3.self_attn.q_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.3.self_attn.v_proj.bias": "model-00001-of-00004.safetensors", + "model.layers.3.self_attn.v_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.4.input_layernorm.weight": "model-00001-of-00004.safetensors", + "model.layers.4.mlp.down_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.4.mlp.gate_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.4.mlp.up_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.4.post_attention_layernorm.weight": "model-00001-of-00004.safetensors", + "model.layers.4.self_attn.k_proj.bias": "model-00001-of-00004.safetensors", + "model.layers.4.self_attn.k_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.4.self_attn.o_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.4.self_attn.q_proj.bias": "model-00001-of-00004.safetensors", + "model.layers.4.self_attn.q_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.4.self_attn.v_proj.bias": "model-00001-of-00004.safetensors", + "model.layers.4.self_attn.v_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.5.input_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.5.mlp.down_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.5.mlp.gate_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.5.mlp.up_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.5.post_attention_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.5.self_attn.k_proj.bias": "model-00001-of-00004.safetensors", + "model.layers.5.self_attn.k_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.5.self_attn.o_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.5.self_attn.q_proj.bias": "model-00001-of-00004.safetensors", + "model.layers.5.self_attn.q_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.5.self_attn.v_proj.bias": "model-00001-of-00004.safetensors", + "model.layers.5.self_attn.v_proj.weight": "model-00001-of-00004.safetensors", + "model.layers.6.input_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.6.mlp.down_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.6.mlp.gate_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.6.mlp.up_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.6.post_attention_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.6.self_attn.k_proj.bias": "model-00002-of-00004.safetensors", + "model.layers.6.self_attn.k_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.6.self_attn.o_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.6.self_attn.q_proj.bias": "model-00002-of-00004.safetensors", + "model.layers.6.self_attn.q_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.6.self_attn.v_proj.bias": "model-00002-of-00004.safetensors", + "model.layers.6.self_attn.v_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.7.input_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.7.mlp.down_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.7.mlp.gate_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.7.mlp.up_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.7.post_attention_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.7.self_attn.k_proj.bias": "model-00002-of-00004.safetensors", + "model.layers.7.self_attn.k_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.7.self_attn.o_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.7.self_attn.q_proj.bias": "model-00002-of-00004.safetensors", + "model.layers.7.self_attn.q_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.7.self_attn.v_proj.bias": "model-00002-of-00004.safetensors", + "model.layers.7.self_attn.v_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.8.input_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.8.mlp.down_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.8.mlp.gate_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.8.mlp.up_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.8.post_attention_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.8.self_attn.k_proj.bias": "model-00002-of-00004.safetensors", + "model.layers.8.self_attn.k_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.8.self_attn.o_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.8.self_attn.q_proj.bias": "model-00002-of-00004.safetensors", + "model.layers.8.self_attn.q_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.8.self_attn.v_proj.bias": "model-00002-of-00004.safetensors", + "model.layers.8.self_attn.v_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.9.input_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.9.mlp.down_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.9.mlp.gate_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.9.mlp.up_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.9.post_attention_layernorm.weight": "model-00002-of-00004.safetensors", + "model.layers.9.self_attn.k_proj.bias": "model-00002-of-00004.safetensors", + "model.layers.9.self_attn.k_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.9.self_attn.o_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.9.self_attn.q_proj.bias": "model-00002-of-00004.safetensors", + "model.layers.9.self_attn.q_proj.weight": "model-00002-of-00004.safetensors", + "model.layers.9.self_attn.v_proj.bias": "model-00002-of-00004.safetensors", + "model.layers.9.self_attn.v_proj.weight": "model-00002-of-00004.safetensors", + "model.norm.weight": "model-00004-of-00004.safetensors", + "visual.blocks.0.attn.proj.bias": "model-00001-of-00004.safetensors", + "visual.blocks.0.attn.proj.weight": "model-00001-of-00004.safetensors", + "visual.blocks.0.attn.qkv.bias": "model-00001-of-00004.safetensors", + "visual.blocks.0.attn.qkv.weight": "model-00001-of-00004.safetensors", + "visual.blocks.0.mlp.fc1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.0.mlp.fc1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.0.mlp.fc2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.0.mlp.fc2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.0.norm1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.0.norm1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.0.norm2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.0.norm2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.1.attn.proj.bias": "model-00001-of-00004.safetensors", + "visual.blocks.1.attn.proj.weight": "model-00001-of-00004.safetensors", + "visual.blocks.1.attn.qkv.bias": "model-00001-of-00004.safetensors", + "visual.blocks.1.attn.qkv.weight": "model-00001-of-00004.safetensors", + "visual.blocks.1.mlp.fc1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.1.mlp.fc1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.1.mlp.fc2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.1.mlp.fc2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.1.norm1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.1.norm1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.1.norm2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.1.norm2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.10.attn.proj.bias": "model-00001-of-00004.safetensors", + "visual.blocks.10.attn.proj.weight": "model-00001-of-00004.safetensors", + "visual.blocks.10.attn.qkv.bias": "model-00001-of-00004.safetensors", + "visual.blocks.10.attn.qkv.weight": "model-00001-of-00004.safetensors", + "visual.blocks.10.mlp.fc1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.10.mlp.fc1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.10.mlp.fc2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.10.mlp.fc2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.10.norm1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.10.norm1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.10.norm2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.10.norm2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.11.attn.proj.bias": "model-00001-of-00004.safetensors", + "visual.blocks.11.attn.proj.weight": "model-00001-of-00004.safetensors", + "visual.blocks.11.attn.qkv.bias": "model-00001-of-00004.safetensors", + "visual.blocks.11.attn.qkv.weight": "model-00001-of-00004.safetensors", + "visual.blocks.11.mlp.fc1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.11.mlp.fc1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.11.mlp.fc2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.11.mlp.fc2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.11.norm1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.11.norm1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.11.norm2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.11.norm2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.12.attn.proj.bias": "model-00001-of-00004.safetensors", + "visual.blocks.12.attn.proj.weight": "model-00001-of-00004.safetensors", + "visual.blocks.12.attn.qkv.bias": "model-00001-of-00004.safetensors", + "visual.blocks.12.attn.qkv.weight": "model-00001-of-00004.safetensors", + "visual.blocks.12.mlp.fc1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.12.mlp.fc1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.12.mlp.fc2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.12.mlp.fc2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.12.norm1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.12.norm1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.12.norm2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.12.norm2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.13.attn.proj.bias": "model-00001-of-00004.safetensors", + "visual.blocks.13.attn.proj.weight": "model-00001-of-00004.safetensors", + "visual.blocks.13.attn.qkv.bias": "model-00001-of-00004.safetensors", + "visual.blocks.13.attn.qkv.weight": "model-00001-of-00004.safetensors", + "visual.blocks.13.mlp.fc1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.13.mlp.fc1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.13.mlp.fc2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.13.mlp.fc2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.13.norm1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.13.norm1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.13.norm2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.13.norm2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.14.attn.proj.bias": "model-00001-of-00004.safetensors", + "visual.blocks.14.attn.proj.weight": "model-00001-of-00004.safetensors", + "visual.blocks.14.attn.qkv.bias": "model-00001-of-00004.safetensors", + "visual.blocks.14.attn.qkv.weight": "model-00001-of-00004.safetensors", + "visual.blocks.14.mlp.fc1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.14.mlp.fc1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.14.mlp.fc2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.14.mlp.fc2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.14.norm1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.14.norm1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.14.norm2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.14.norm2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.15.attn.proj.bias": "model-00001-of-00004.safetensors", + "visual.blocks.15.attn.proj.weight": "model-00001-of-00004.safetensors", + "visual.blocks.15.attn.qkv.bias": "model-00001-of-00004.safetensors", + "visual.blocks.15.attn.qkv.weight": "model-00001-of-00004.safetensors", + "visual.blocks.15.mlp.fc1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.15.mlp.fc1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.15.mlp.fc2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.15.mlp.fc2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.15.norm1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.15.norm1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.15.norm2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.15.norm2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.16.attn.proj.bias": "model-00001-of-00004.safetensors", + "visual.blocks.16.attn.proj.weight": "model-00001-of-00004.safetensors", + "visual.blocks.16.attn.qkv.bias": "model-00001-of-00004.safetensors", + "visual.blocks.16.attn.qkv.weight": "model-00001-of-00004.safetensors", + "visual.blocks.16.mlp.fc1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.16.mlp.fc1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.16.mlp.fc2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.16.mlp.fc2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.16.norm1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.16.norm1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.16.norm2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.16.norm2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.17.attn.proj.bias": "model-00001-of-00004.safetensors", + "visual.blocks.17.attn.proj.weight": "model-00001-of-00004.safetensors", + "visual.blocks.17.attn.qkv.bias": "model-00001-of-00004.safetensors", + "visual.blocks.17.attn.qkv.weight": "model-00001-of-00004.safetensors", + "visual.blocks.17.mlp.fc1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.17.mlp.fc1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.17.mlp.fc2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.17.mlp.fc2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.17.norm1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.17.norm1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.17.norm2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.17.norm2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.18.attn.proj.bias": "model-00001-of-00004.safetensors", + "visual.blocks.18.attn.proj.weight": "model-00001-of-00004.safetensors", + "visual.blocks.18.attn.qkv.bias": "model-00001-of-00004.safetensors", + "visual.blocks.18.attn.qkv.weight": "model-00001-of-00004.safetensors", + "visual.blocks.18.mlp.fc1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.18.mlp.fc1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.18.mlp.fc2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.18.mlp.fc2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.18.norm1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.18.norm1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.18.norm2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.18.norm2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.19.attn.proj.bias": "model-00001-of-00004.safetensors", + "visual.blocks.19.attn.proj.weight": "model-00001-of-00004.safetensors", + "visual.blocks.19.attn.qkv.bias": "model-00001-of-00004.safetensors", + "visual.blocks.19.attn.qkv.weight": "model-00001-of-00004.safetensors", + "visual.blocks.19.mlp.fc1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.19.mlp.fc1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.19.mlp.fc2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.19.mlp.fc2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.19.norm1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.19.norm1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.19.norm2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.19.norm2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.2.attn.proj.bias": "model-00001-of-00004.safetensors", + "visual.blocks.2.attn.proj.weight": "model-00001-of-00004.safetensors", + "visual.blocks.2.attn.qkv.bias": "model-00001-of-00004.safetensors", + "visual.blocks.2.attn.qkv.weight": "model-00001-of-00004.safetensors", + "visual.blocks.2.mlp.fc1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.2.mlp.fc1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.2.mlp.fc2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.2.mlp.fc2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.2.norm1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.2.norm1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.2.norm2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.2.norm2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.20.attn.proj.bias": "model-00001-of-00004.safetensors", + "visual.blocks.20.attn.proj.weight": "model-00001-of-00004.safetensors", + "visual.blocks.20.attn.qkv.bias": "model-00001-of-00004.safetensors", + "visual.blocks.20.attn.qkv.weight": "model-00001-of-00004.safetensors", + "visual.blocks.20.mlp.fc1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.20.mlp.fc1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.20.mlp.fc2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.20.mlp.fc2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.20.norm1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.20.norm1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.20.norm2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.20.norm2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.21.attn.proj.bias": "model-00001-of-00004.safetensors", + "visual.blocks.21.attn.proj.weight": "model-00001-of-00004.safetensors", + "visual.blocks.21.attn.qkv.bias": "model-00001-of-00004.safetensors", + "visual.blocks.21.attn.qkv.weight": "model-00001-of-00004.safetensors", + "visual.blocks.21.mlp.fc1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.21.mlp.fc1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.21.mlp.fc2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.21.mlp.fc2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.21.norm1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.21.norm1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.21.norm2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.21.norm2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.22.attn.proj.bias": "model-00001-of-00004.safetensors", + "visual.blocks.22.attn.proj.weight": "model-00001-of-00004.safetensors", + "visual.blocks.22.attn.qkv.bias": "model-00001-of-00004.safetensors", + "visual.blocks.22.attn.qkv.weight": "model-00001-of-00004.safetensors", + "visual.blocks.22.mlp.fc1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.22.mlp.fc1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.22.mlp.fc2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.22.mlp.fc2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.22.norm1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.22.norm1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.22.norm2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.22.norm2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.23.attn.proj.bias": "model-00001-of-00004.safetensors", + "visual.blocks.23.attn.proj.weight": "model-00001-of-00004.safetensors", + "visual.blocks.23.attn.qkv.bias": "model-00001-of-00004.safetensors", + "visual.blocks.23.attn.qkv.weight": "model-00001-of-00004.safetensors", + "visual.blocks.23.mlp.fc1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.23.mlp.fc1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.23.mlp.fc2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.23.mlp.fc2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.23.norm1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.23.norm1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.23.norm2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.23.norm2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.24.attn.proj.bias": "model-00001-of-00004.safetensors", + "visual.blocks.24.attn.proj.weight": "model-00001-of-00004.safetensors", + "visual.blocks.24.attn.qkv.bias": "model-00001-of-00004.safetensors", + "visual.blocks.24.attn.qkv.weight": "model-00001-of-00004.safetensors", + "visual.blocks.24.mlp.fc1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.24.mlp.fc1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.24.mlp.fc2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.24.mlp.fc2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.24.norm1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.24.norm1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.24.norm2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.24.norm2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.25.attn.proj.bias": "model-00001-of-00004.safetensors", + "visual.blocks.25.attn.proj.weight": "model-00001-of-00004.safetensors", + "visual.blocks.25.attn.qkv.bias": "model-00001-of-00004.safetensors", + "visual.blocks.25.attn.qkv.weight": "model-00001-of-00004.safetensors", + "visual.blocks.25.mlp.fc1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.25.mlp.fc1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.25.mlp.fc2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.25.mlp.fc2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.25.norm1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.25.norm1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.25.norm2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.25.norm2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.26.attn.proj.bias": "model-00001-of-00004.safetensors", + "visual.blocks.26.attn.proj.weight": "model-00001-of-00004.safetensors", + "visual.blocks.26.attn.qkv.bias": "model-00001-of-00004.safetensors", + "visual.blocks.26.attn.qkv.weight": "model-00001-of-00004.safetensors", + "visual.blocks.26.mlp.fc1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.26.mlp.fc1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.26.mlp.fc2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.26.mlp.fc2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.26.norm1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.26.norm1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.26.norm2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.26.norm2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.27.attn.proj.bias": "model-00001-of-00004.safetensors", + "visual.blocks.27.attn.proj.weight": "model-00001-of-00004.safetensors", + "visual.blocks.27.attn.qkv.bias": "model-00001-of-00004.safetensors", + "visual.blocks.27.attn.qkv.weight": "model-00001-of-00004.safetensors", + "visual.blocks.27.mlp.fc1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.27.mlp.fc1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.27.mlp.fc2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.27.mlp.fc2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.27.norm1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.27.norm1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.27.norm2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.27.norm2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.28.attn.proj.bias": "model-00001-of-00004.safetensors", + "visual.blocks.28.attn.proj.weight": "model-00001-of-00004.safetensors", + "visual.blocks.28.attn.qkv.bias": "model-00001-of-00004.safetensors", + "visual.blocks.28.attn.qkv.weight": "model-00001-of-00004.safetensors", + "visual.blocks.28.mlp.fc1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.28.mlp.fc1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.28.mlp.fc2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.28.mlp.fc2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.28.norm1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.28.norm1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.28.norm2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.28.norm2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.29.attn.proj.bias": "model-00001-of-00004.safetensors", + "visual.blocks.29.attn.proj.weight": "model-00001-of-00004.safetensors", + "visual.blocks.29.attn.qkv.bias": "model-00001-of-00004.safetensors", + "visual.blocks.29.attn.qkv.weight": "model-00001-of-00004.safetensors", + "visual.blocks.29.mlp.fc1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.29.mlp.fc1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.29.mlp.fc2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.29.mlp.fc2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.29.norm1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.29.norm1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.29.norm2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.29.norm2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.3.attn.proj.bias": "model-00001-of-00004.safetensors", + "visual.blocks.3.attn.proj.weight": "model-00001-of-00004.safetensors", + "visual.blocks.3.attn.qkv.bias": "model-00001-of-00004.safetensors", + "visual.blocks.3.attn.qkv.weight": "model-00001-of-00004.safetensors", + "visual.blocks.3.mlp.fc1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.3.mlp.fc1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.3.mlp.fc2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.3.mlp.fc2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.3.norm1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.3.norm1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.3.norm2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.3.norm2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.30.attn.proj.bias": "model-00001-of-00004.safetensors", + "visual.blocks.30.attn.proj.weight": "model-00001-of-00004.safetensors", + "visual.blocks.30.attn.qkv.bias": "model-00001-of-00004.safetensors", + "visual.blocks.30.attn.qkv.weight": "model-00001-of-00004.safetensors", + "visual.blocks.30.mlp.fc1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.30.mlp.fc1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.30.mlp.fc2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.30.mlp.fc2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.30.norm1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.30.norm1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.30.norm2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.30.norm2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.31.attn.proj.bias": "model-00001-of-00004.safetensors", + "visual.blocks.31.attn.proj.weight": "model-00001-of-00004.safetensors", + "visual.blocks.31.attn.qkv.bias": "model-00001-of-00004.safetensors", + "visual.blocks.31.attn.qkv.weight": "model-00001-of-00004.safetensors", + "visual.blocks.31.mlp.fc1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.31.mlp.fc1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.31.mlp.fc2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.31.mlp.fc2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.31.norm1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.31.norm1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.31.norm2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.31.norm2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.4.attn.proj.bias": "model-00001-of-00004.safetensors", + "visual.blocks.4.attn.proj.weight": "model-00001-of-00004.safetensors", + "visual.blocks.4.attn.qkv.bias": "model-00001-of-00004.safetensors", + "visual.blocks.4.attn.qkv.weight": "model-00001-of-00004.safetensors", + "visual.blocks.4.mlp.fc1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.4.mlp.fc1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.4.mlp.fc2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.4.mlp.fc2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.4.norm1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.4.norm1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.4.norm2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.4.norm2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.5.attn.proj.bias": "model-00001-of-00004.safetensors", + "visual.blocks.5.attn.proj.weight": "model-00001-of-00004.safetensors", + "visual.blocks.5.attn.qkv.bias": "model-00001-of-00004.safetensors", + "visual.blocks.5.attn.qkv.weight": "model-00001-of-00004.safetensors", + "visual.blocks.5.mlp.fc1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.5.mlp.fc1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.5.mlp.fc2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.5.mlp.fc2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.5.norm1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.5.norm1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.5.norm2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.5.norm2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.6.attn.proj.bias": "model-00001-of-00004.safetensors", + "visual.blocks.6.attn.proj.weight": "model-00001-of-00004.safetensors", + "visual.blocks.6.attn.qkv.bias": "model-00001-of-00004.safetensors", + "visual.blocks.6.attn.qkv.weight": "model-00001-of-00004.safetensors", + "visual.blocks.6.mlp.fc1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.6.mlp.fc1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.6.mlp.fc2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.6.mlp.fc2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.6.norm1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.6.norm1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.6.norm2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.6.norm2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.7.attn.proj.bias": "model-00001-of-00004.safetensors", + "visual.blocks.7.attn.proj.weight": "model-00001-of-00004.safetensors", + "visual.blocks.7.attn.qkv.bias": "model-00001-of-00004.safetensors", + "visual.blocks.7.attn.qkv.weight": "model-00001-of-00004.safetensors", + "visual.blocks.7.mlp.fc1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.7.mlp.fc1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.7.mlp.fc2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.7.mlp.fc2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.7.norm1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.7.norm1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.7.norm2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.7.norm2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.8.attn.proj.bias": "model-00001-of-00004.safetensors", + "visual.blocks.8.attn.proj.weight": "model-00001-of-00004.safetensors", + "visual.blocks.8.attn.qkv.bias": "model-00001-of-00004.safetensors", + "visual.blocks.8.attn.qkv.weight": "model-00001-of-00004.safetensors", + "visual.blocks.8.mlp.fc1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.8.mlp.fc1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.8.mlp.fc2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.8.mlp.fc2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.8.norm1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.8.norm1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.8.norm2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.8.norm2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.9.attn.proj.bias": "model-00001-of-00004.safetensors", + "visual.blocks.9.attn.proj.weight": "model-00001-of-00004.safetensors", + "visual.blocks.9.attn.qkv.bias": "model-00001-of-00004.safetensors", + "visual.blocks.9.attn.qkv.weight": "model-00001-of-00004.safetensors", + "visual.blocks.9.mlp.fc1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.9.mlp.fc1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.9.mlp.fc2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.9.mlp.fc2.weight": "model-00001-of-00004.safetensors", + "visual.blocks.9.norm1.bias": "model-00001-of-00004.safetensors", + "visual.blocks.9.norm1.weight": "model-00001-of-00004.safetensors", + "visual.blocks.9.norm2.bias": "model-00001-of-00004.safetensors", + "visual.blocks.9.norm2.weight": "model-00001-of-00004.safetensors", + "visual.merger.ln_q.bias": "model-00001-of-00004.safetensors", + "visual.merger.ln_q.weight": "model-00001-of-00004.safetensors", + "visual.merger.mlp.0.bias": "model-00001-of-00004.safetensors", + "visual.merger.mlp.0.weight": "model-00001-of-00004.safetensors", + "visual.merger.mlp.2.bias": "model-00001-of-00004.safetensors", + "visual.merger.mlp.2.weight": "model-00001-of-00004.safetensors", + "visual.patch_embed.proj.weight": "model-00001-of-00004.safetensors" + } +} diff --git a/preprocessor_config.json b/preprocessor_config.json new file mode 100644 index 0000000..c8bf52b --- /dev/null +++ b/preprocessor_config.json @@ -0,0 +1,19 @@ +{ + "min_pixels": 3136, + "max_pixels": 12845056, + "patch_size": 14, + "temporal_patch_size": 2, + "merge_size": 2, + "image_mean": [ + 0.48145466, + 0.4578275, + 0.40821073 + ], + "image_std": [ + 0.26862954, + 0.26130258, + 0.27577711 + ], + "image_processor_type": "Qwen2VLImageProcessor", + "processor_class": "Qwen2VLProcessor" +} \ No newline at end of file diff --git a/tg04_splash.jpg b/tg04_splash.jpg new file mode 100644 index 0000000000000000000000000000000000000000..32388da72fd13ffa143e65bc27eec2d550a1caff GIT binary patch literal 92232 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�}*+t;oe9~G*%rUfxCuu1Cd3&Kzw%Uw$G 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 HyjTC()iYe~ literal 0 HcmV?d00001 diff --git a/tokenizer.json b/tokenizer.json new file mode 100644 index 0000000..f359599 --- /dev/null +++ b/tokenizer.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cb63a0a23eef3d5b01063a9880a1925a65aaf4d1591d519910ee3527852950a0 +size 7029741 diff --git a/tokenizer_config.json b/tokenizer_config.json new file mode 100644 index 0000000..ecbc13d --- /dev/null +++ b/tokenizer_config.json @@ -0,0 +1,129 @@ +{ + "add_prefix_space": false, + "added_tokens_decoder": { + "151643": { + "content": "<|endoftext|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "151644": { + "content": "<|im_start|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "151645": { + "content": "<|im_end|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "151646": { + "content": "<|object_ref_start|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "151647": { + "content": "<|object_ref_end|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "151648": { + "content": "<|box_start|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "151649": { + "content": "<|box_end|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "151650": { + "content": "<|quad_start|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "151651": { + "content": "<|quad_end|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "151652": { + "content": "<|vision_start|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "151653": { + "content": "<|vision_end|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "151654": { + "content": "<|vision_pad|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "151655": { + "content": "<|image_pad|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "151656": { + "content": "<|video_pad|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + } + }, + "additional_special_tokens": ["<|im_start|>", "<|im_end|>", "<|object_ref_start|>","<|object_ref_end|>","<|box_start|>","<|box_end|>","<|quad_start|>","<|quad_end|>","<|vision_start|>","<|vision_end|>","<|vision_pad|>","<|image_pad|>","<|video_pad|>"], + "bos_token": null, + "chat_template": "{% set image_count = namespace(value=0) %}{% set video_count = namespace(value=0) %}{% for message in messages %}{% if loop.first and message['role'] != 'system' %}<|im_start|>system\nYou are a helpful assistant.<|im_end|>\n{% endif %}<|im_start|>{{ message['role'] }}\n{% if message['content'] is string %}{{ message['content'] }}<|im_end|>\n{% else %}{% for content in message['content'] %}{% if content['type'] == 'image' or 'image' in content or 'image_url' in content %}{% set image_count.value = image_count.value + 1 %}{% if add_vision_id %}Picture {{ image_count.value }}: {% endif %}<|vision_start|><|image_pad|><|vision_end|>{% elif content['type'] == 'video' or 'video' in content %}{% set video_count.value = video_count.value + 1 %}{% if add_vision_id %}Video {{ video_count.value }}: {% endif %}<|vision_start|><|video_pad|><|vision_end|>{% elif 'text' in content %}{{ content['text'] }}{% endif %}{% endfor %}<|im_end|>\n{% endif %}{% endfor %}{% if add_generation_prompt %}<|im_start|>assistant\n{% endif %}", + "clean_up_tokenization_spaces": false, + "eos_token": "<|im_end|>", + "padding_side": "left", + "errors": "replace", + "model_max_length": 32768, + "pad_token": "<|endoftext|>", + "split_special_tokens": false, + "tokenizer_class": "Qwen2Tokenizer", + "unk_token": null +} diff --git a/vocab.json b/vocab.json new file mode 100644 index 0000000..6c49fc6 --- /dev/null +++ b/vocab.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ca10d7e9fb3ed18575dd1e277a2579c16d108e32f27439684afa0e10b1440910 +size 2776833