Instructions to use vladmandic/VIBE-Image-Edit with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Diffusers
How to use vladmandic/VIBE-Image-Edit with Diffusers:
pip install -U diffusers transformers accelerate
import torch from diffusers import DiffusionPipeline from diffusers.utils import load_image # switch to "mps" for apple devices pipe = DiffusionPipeline.from_pretrained("vladmandic/VIBE-Image-Edit", dtype=torch.bfloat16, device_map="cuda") prompt = "Turn this cat into a dog" input_image = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/cat.png") image = pipe(image=input_image, prompt=prompt).images[0] - Notebooks
- Google Colab
- Kaggle
Commit ·
7c8053f
0
Parent(s):
Duplicate from iitolstykh/VIBE-Image-Edit
Browse filesCo-authored-by: Irina Tolstykh <iitolstykh@users.noreply.huggingface.co>
This view is limited to 50 files because it contains too many changes. See raw diff
- .gitattributes +72 -0
- README.md +302 -0
- VIBE.png +3 -0
- images/1.png +3 -0
- images/11.png +3 -0
- images/12.png +3 -0
- images/13.png +3 -0
- images/2.png +3 -0
- images/3.png +3 -0
- images/4.png +3 -0
- images/5.png +3 -0
- images/6.png +3 -0
- images/7.png +3 -0
- images/8.png +3 -0
- images/9.png +3 -0
- images/other/1.png +3 -0
- images/other/10.png +3 -0
- images/other/2.png +3 -0
- images/other/3.png +3 -0
- images/other/4.png +3 -0
- images/other/5.png +3 -0
- images/other/6.png +3 -0
- images/other/8.png +3 -0
- images/other/9.png +3 -0
- images/sana/image_1.png +3 -0
- images/sana/image_2.png +3 -0
- images/sana/image_3.png +3 -0
- images/sana/image_4.png +3 -0
- images/sana/image_5.png +3 -0
- images/sana/image_6.png +3 -0
- images/sana/image_7.png +3 -0
- images/vibe/image_1.png +3 -0
- images/vibe/image_2.png +3 -0
- images/vibe/image_3.png +3 -0
- images/vibe/image_4.png +3 -0
- images/vibe/image_5.png +3 -0
- images/vibe/image_6.png +3 -0
- images/vibe/image_7.png +3 -0
- model_index.json +24 -0
- scheduler/scheduler_config.json +30 -0
- text_encoder/config.json +63 -0
- text_encoder/generation_config.json +14 -0
- text_encoder/model.safetensors +3 -0
- tokenizer/chat_template.json +4 -0
- tokenizer/merges.txt +0 -0
- tokenizer/preprocessor_config.json +21 -0
- tokenizer/tokenizer.json +0 -0
- tokenizer/tokenizer_config.json +239 -0
- tokenizer/video_preprocessor_config.json +21 -0
- tokenizer/vocab.json +0 -0
.gitattributes
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
*.7z filter=lfs diff=lfs merge=lfs -text
|
| 2 |
+
*.arrow filter=lfs diff=lfs merge=lfs -text
|
| 3 |
+
*.bin filter=lfs diff=lfs merge=lfs -text
|
| 4 |
+
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
| 5 |
+
*.ckpt filter=lfs diff=lfs merge=lfs -text
|
| 6 |
+
*.ftz filter=lfs diff=lfs merge=lfs -text
|
| 7 |
+
*.gz filter=lfs diff=lfs merge=lfs -text
|
| 8 |
+
*.h5 filter=lfs diff=lfs merge=lfs -text
|
| 9 |
+
*.joblib filter=lfs diff=lfs merge=lfs -text
|
| 10 |
+
*.lfs.* filter=lfs diff=lfs merge=lfs -text
|
| 11 |
+
*.mlmodel filter=lfs diff=lfs merge=lfs -text
|
| 12 |
+
*.model filter=lfs diff=lfs merge=lfs -text
|
| 13 |
+
*.msgpack filter=lfs diff=lfs merge=lfs -text
|
| 14 |
+
*.npy filter=lfs diff=lfs merge=lfs -text
|
| 15 |
+
*.npz filter=lfs diff=lfs merge=lfs -text
|
| 16 |
+
*.onnx filter=lfs diff=lfs merge=lfs -text
|
| 17 |
+
*.ot filter=lfs diff=lfs merge=lfs -text
|
| 18 |
+
*.parquet filter=lfs diff=lfs merge=lfs -text
|
| 19 |
+
*.pb filter=lfs diff=lfs merge=lfs -text
|
| 20 |
+
*.pickle filter=lfs diff=lfs merge=lfs -text
|
| 21 |
+
*.pkl filter=lfs diff=lfs merge=lfs -text
|
| 22 |
+
*.pt filter=lfs diff=lfs merge=lfs -text
|
| 23 |
+
*.pth filter=lfs diff=lfs merge=lfs -text
|
| 24 |
+
*.rar filter=lfs diff=lfs merge=lfs -text
|
| 25 |
+
*.safetensors filter=lfs diff=lfs merge=lfs -text
|
| 26 |
+
saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
| 27 |
+
*.tar.* filter=lfs diff=lfs merge=lfs -text
|
| 28 |
+
*.tar filter=lfs diff=lfs merge=lfs -text
|
| 29 |
+
*.tflite filter=lfs diff=lfs merge=lfs -text
|
| 30 |
+
*.tgz filter=lfs diff=lfs merge=lfs -text
|
| 31 |
+
*.wasm filter=lfs diff=lfs merge=lfs -text
|
| 32 |
+
*.xz filter=lfs diff=lfs merge=lfs -text
|
| 33 |
+
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
+
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
+
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
| 36 |
+
VIBE.png filter=lfs diff=lfs merge=lfs -text
|
| 37 |
+
images/1.png filter=lfs diff=lfs merge=lfs -text
|
| 38 |
+
images/11.png filter=lfs diff=lfs merge=lfs -text
|
| 39 |
+
images/12.png filter=lfs diff=lfs merge=lfs -text
|
| 40 |
+
images/13.png filter=lfs diff=lfs merge=lfs -text
|
| 41 |
+
images/2.png filter=lfs diff=lfs merge=lfs -text
|
| 42 |
+
images/3.png filter=lfs diff=lfs merge=lfs -text
|
| 43 |
+
images/4.png filter=lfs diff=lfs merge=lfs -text
|
| 44 |
+
images/5.png filter=lfs diff=lfs merge=lfs -text
|
| 45 |
+
images/6.png filter=lfs diff=lfs merge=lfs -text
|
| 46 |
+
images/7.png filter=lfs diff=lfs merge=lfs -text
|
| 47 |
+
images/8.png filter=lfs diff=lfs merge=lfs -text
|
| 48 |
+
images/9.png filter=lfs diff=lfs merge=lfs -text
|
| 49 |
+
images/other/1.png filter=lfs diff=lfs merge=lfs -text
|
| 50 |
+
images/other/10.png filter=lfs diff=lfs merge=lfs -text
|
| 51 |
+
images/other/2.png filter=lfs diff=lfs merge=lfs -text
|
| 52 |
+
images/other/3.png filter=lfs diff=lfs merge=lfs -text
|
| 53 |
+
images/other/4.png filter=lfs diff=lfs merge=lfs -text
|
| 54 |
+
images/other/5.png filter=lfs diff=lfs merge=lfs -text
|
| 55 |
+
images/other/6.png filter=lfs diff=lfs merge=lfs -text
|
| 56 |
+
images/other/7.png filter=lfs diff=lfs merge=lfs -text
|
| 57 |
+
images/other/8.png filter=lfs diff=lfs merge=lfs -text
|
| 58 |
+
images/other/9.png filter=lfs diff=lfs merge=lfs -text
|
| 59 |
+
images/sana/image_1.png filter=lfs diff=lfs merge=lfs -text
|
| 60 |
+
images/sana/image_2.png filter=lfs diff=lfs merge=lfs -text
|
| 61 |
+
images/sana/image_3.png filter=lfs diff=lfs merge=lfs -text
|
| 62 |
+
images/sana/image_4.png filter=lfs diff=lfs merge=lfs -text
|
| 63 |
+
images/sana/image_5.png filter=lfs diff=lfs merge=lfs -text
|
| 64 |
+
images/sana/image_6.png filter=lfs diff=lfs merge=lfs -text
|
| 65 |
+
images/vibe/image_1.png filter=lfs diff=lfs merge=lfs -text
|
| 66 |
+
images/vibe/image_2.png filter=lfs diff=lfs merge=lfs -text
|
| 67 |
+
images/vibe/image_3.png filter=lfs diff=lfs merge=lfs -text
|
| 68 |
+
images/vibe/image_4.png filter=lfs diff=lfs merge=lfs -text
|
| 69 |
+
images/vibe/image_5.png filter=lfs diff=lfs merge=lfs -text
|
| 70 |
+
images/vibe/image_6.png filter=lfs diff=lfs merge=lfs -text
|
| 71 |
+
images/sana/image_7.png filter=lfs diff=lfs merge=lfs -text
|
| 72 |
+
images/vibe/image_7.png filter=lfs diff=lfs merge=lfs -text
|
README.md
ADDED
|
@@ -0,0 +1,302 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
language:
|
| 3 |
+
- en
|
| 4 |
+
pipeline_tag: image-to-image
|
| 5 |
+
tags:
|
| 6 |
+
- image-editing
|
| 7 |
+
- text-guided-editing
|
| 8 |
+
- diffusion
|
| 9 |
+
- sana
|
| 10 |
+
- qwen-vl
|
| 11 |
+
- multimodal
|
| 12 |
+
base_model:
|
| 13 |
+
- Efficient-Large-Model/SANA1.5_1.6B_1024px
|
| 14 |
+
- Qwen/Qwen3-VL-2B-Instruct
|
| 15 |
+
library_name: diffusers
|
| 16 |
+
---
|
| 17 |
+
|
| 18 |
+
# VIBE: Visual Instruction Based Editor
|
| 19 |
+
|
| 20 |
+
<div align="center">
|
| 21 |
+
<img src="VIBE.png" width="800" alt="VIBE"/>
|
| 22 |
+
</div>
|
| 23 |
+
|
| 24 |
+
<p style="text-align: center;">
|
| 25 |
+
<div align="center">
|
| 26 |
+
</div>
|
| 27 |
+
<p align="center">
|
| 28 |
+
<a href="https://riko0.github.io/VIBE"> 🌐 Project Page </a> |
|
| 29 |
+
<a href="https://arxiv.org/abs/2601.02242"> 📜 Paper on arXiv </a> |
|
| 30 |
+
<a href="https://github.com/ai-forever/vibe"> Github </a> |
|
| 31 |
+
<a href="https://huggingface.co/spaces/iitolstykh/VIBE-Image-Edit-DEMO">🤗 Space | </a>
|
| 32 |
+
<a href="https://huggingface.co/iitolstykh/VIBE-Image-Edit-DistilledCFG">🤗 VIBE-Image-Edit-DistilledCFG | </a>
|
| 33 |
+
</p>
|
| 34 |
+
|
| 35 |
+
**VIBE** is a powerful open-source framework for text-guided image editing. It leverages the efficiency of the [Sana1.5-1.6B](https://github.com/NVlabs/Sana) diffusion model and the visual understanding capabilities of [Qwen3-VL-2B-Instruct](https://github.com/QwenLM/Qwen3-VL) to provide **exceptionally fast** and high-quality, instruction-based image manipulation.
|
| 36 |
+
|
| 37 |
+
We also provide a faster, **CFG-distilled** version of this model available at [VIBE-Image-Edit-DistilledCFG](https://huggingface.co/iitolstykh/VIBE-Image-Edit-DistilledCFG).
|
| 38 |
+
|
| 39 |
+
## Model Details
|
| 40 |
+
|
| 41 |
+
- **Name:** VIBE
|
| 42 |
+
- **Task:** Text-Guided Image Editing
|
| 43 |
+
- **Architecture:**
|
| 44 |
+
- **Diffusion Backbone:** Sana1.5 (1.6B parameters) with Linear Attention.
|
| 45 |
+
- **Condition Encoder:** Qwen3-VL (2B parameters) for multimodal understanding.
|
| 46 |
+
- **Framework:** Built on `diffusers` and `transformers`.
|
| 47 |
+
- **Model precision**: torch.bfloat16 (BF16)
|
| 48 |
+
- **Model resolution**: This model is developed to edit up to 2048px images with multi-scale heigh and width.
|
| 49 |
+
|
| 50 |
+
## Features
|
| 51 |
+
|
| 52 |
+
- **Text-Guided Editing:** Edit images using natural language instructions (e.g., "Add a cat on the sofa").
|
| 53 |
+
- **Compact & Efficient:** Combines a 1.6B parameter diffusion model with a 2B parameter encoder for a lightweight footprint.
|
| 54 |
+
- **High-Speed Inference:** Utilizes Sana1.5's linear attention mechanism for rapid generation.
|
| 55 |
+
- **Multimodal Understanding:** Qwen3-VL ensures strong alignment between visual content and text instructions.
|
| 56 |
+
- **Text-to-Image** support.
|
| 57 |
+
|
| 58 |
+
|
| 59 |
+
# Inference Requirements
|
| 60 |
+
|
| 61 |
+
- `vibe` library
|
| 62 |
+
```bash
|
| 63 |
+
pip install git+https://github.com/ai-forever/VIBE
|
| 64 |
+
```
|
| 65 |
+
- requirements for `vibe` library:
|
| 66 |
+
```bash
|
| 67 |
+
pip install transformers==4.57.1 torchvision==0.21.0 torch==2.6.0 diffusers==0.33.1 loguru==0.7.3
|
| 68 |
+
```
|
| 69 |
+
|
| 70 |
+
# Quick start
|
| 71 |
+
|
| 72 |
+
```python
|
| 73 |
+
from PIL import Image
|
| 74 |
+
import requests
|
| 75 |
+
from io import BytesIO
|
| 76 |
+
from huggingface_hub import snapshot_download
|
| 77 |
+
|
| 78 |
+
from vibe.editor import ImageEditor
|
| 79 |
+
|
| 80 |
+
# Download model
|
| 81 |
+
model_path = snapshot_download(
|
| 82 |
+
repo_id="iitolstykh/VIBE-Image-Edit",
|
| 83 |
+
repo_type="model",
|
| 84 |
+
)
|
| 85 |
+
|
| 86 |
+
# Load model
|
| 87 |
+
editor = ImageEditor(
|
| 88 |
+
checkpoint_path=model_path,
|
| 89 |
+
image_guidance_scale=1.2,
|
| 90 |
+
guidance_scale=4.5,
|
| 91 |
+
num_inference_steps=20,
|
| 92 |
+
device="cuda:0",
|
| 93 |
+
)
|
| 94 |
+
|
| 95 |
+
# Download test image
|
| 96 |
+
resp = requests.get('https://image.civitai.com/xG1nkqKTMzGDvpLrqFT7WA/3f58a82a-b4b4-40c3-a318-43f9350fcd02/original=true,quality=90/115610275.jpeg')
|
| 97 |
+
image = Image.open(BytesIO(resp.content))
|
| 98 |
+
|
| 99 |
+
# Generate edited image
|
| 100 |
+
edited_image = editor.generate_edited_image(
|
| 101 |
+
instruction="let this case swim in the river",
|
| 102 |
+
conditioning_image=image,
|
| 103 |
+
num_images_per_prompt=1,
|
| 104 |
+
)[0]
|
| 105 |
+
|
| 106 |
+
edited_image.save(f"edited_image.jpg", quality=100)
|
| 107 |
+
```
|
| 108 |
+
|
| 109 |
+
## T2I Examples
|
| 110 |
+
|
| 111 |
+
<details open>
|
| 112 |
+
<summary>(<b>Seed:</b> 234) <b>Prompt:</b> View through the clouds at Earth from a plane</summary>
|
| 113 |
+
|
| 114 |
+

|
| 115 |
+
|
| 116 |
+
</details>
|
| 117 |
+
|
| 118 |
+
<details open>
|
| 119 |
+
<summary>(<b>Seed:</b> 2) <b>Prompt:</b> Medieval castle at sunset surrounded by dense forest and mist</summary>
|
| 120 |
+
|
| 121 |
+

|
| 122 |
+
|
| 123 |
+
</details>
|
| 124 |
+
|
| 125 |
+
<details open>
|
| 126 |
+
<summary>(<b>Seed:</b> 666) <b>Prompt:</b> Portrait of an old wise man with a long white beard surrounded by books and candles</summary>
|
| 127 |
+
|
| 128 |
+

|
| 129 |
+
|
| 130 |
+
</details>
|
| 131 |
+
|
| 132 |
+
<details>
|
| 133 |
+
<summary>(<b>Seed:</b> 9513) <b>Prompt:</b> Night urban street with wet asphalt reflections and neon signs</summary>
|
| 134 |
+
|
| 135 |
+

|
| 136 |
+
|
| 137 |
+
</details>
|
| 138 |
+
|
| 139 |
+
<details>
|
| 140 |
+
<summary>(<b>Seed:</b> 142) <b>Prompt:</b> Futuristic sports car racing in the desert</summary>
|
| 141 |
+
|
| 142 |
+

|
| 143 |
+
|
| 144 |
+
</details>
|
| 145 |
+
|
| 146 |
+
<details>
|
| 147 |
+
<summary>(<b>Seed:</b> 1325) <b>Prompt:</b> Pirate boat in ocean</summary>
|
| 148 |
+
|
| 149 |
+

|
| 150 |
+
|
| 151 |
+
</details>
|
| 152 |
+
|
| 153 |
+
<details>
|
| 154 |
+
<summary>(<b>Seed:</b> 4241) <b>Prompt:</b> Davy Jones portrait</summary>
|
| 155 |
+
|
| 156 |
+

|
| 157 |
+
|
| 158 |
+
</details>
|
| 159 |
+
|
| 160 |
+
<details>
|
| 161 |
+
<summary>(<b>Seed:</b> 142) <b>Prompt:</b> Epic cosmic scene with a huge space station and distant stars</summary>
|
| 162 |
+
|
| 163 |
+

|
| 164 |
+
|
| 165 |
+
</details>
|
| 166 |
+
|
| 167 |
+
<details>
|
| 168 |
+
<summary>(<b>Seed:</b> 42) <b>Prompt:</b> Cherry blossom park in spring with petals falling to the ground</summary>
|
| 169 |
+
|
| 170 |
+

|
| 171 |
+
|
| 172 |
+
</details>
|
| 173 |
+
|
| 174 |
+
|
| 175 |
+
## Comparison with SANA1.5_1.6B_1024px
|
| 176 |
+
|
| 177 |
+
**Prompt:** Generate an interior of a rustic cabin workshop during winter evening. The viewpoint is from the doorway, showing a workbench with tools, wood shavings on the floor, and a cast-iron stove glowing softly. Place shelves with jars of nails, coils of rope, and folded blankets. Through a small window, show snow falling and pine trees in the twilight. Add warm lamplight creating soft gradients and a gentle vignette. Include a person in a thick sweater sanding a wooden object at the bench, but keep the person small in frame
|
| 178 |
+
|
| 179 |
+
<div style="display: flex; gap: 24px; justify-content: center; align-items: flex-start;">
|
| 180 |
+
<div style="text-align: center; flex: 1; min-width: 0;">
|
| 181 |
+
<img src="images/vibe/image_3.png" alt="VIBE" style="width: 100%; max-width: 500px; height: auto; display: block; margin: 0 auto 8px auto;">
|
| 182 |
+
<div>VIBE (Seed: 4411)</div>
|
| 183 |
+
</div>
|
| 184 |
+
<div style="text-align: center; flex: 1; min-width: 0;">
|
| 185 |
+
<img src="images/sana/image_3.png" alt="SANA1.5_1.6B_1024px" style="width: 100%; max-width: 500px; height: auto; display: block; margin: 0 auto 8px auto;">
|
| 186 |
+
<div>SANA1.5_1.6B_1024px (Seed: 1521)</div>
|
| 187 |
+
</div>
|
| 188 |
+
</div>
|
| 189 |
+
|
| 190 |
+
|
| 191 |
+
---
|
| 192 |
+
|
| 193 |
+
**Prompt:** Generate an ancient jungle temple ruin partially covered in moss and vines, with a waterfall cascading nearby into a shallow pool. Show broken stone steps, carved patterns that are abstract, and damp surfaces with realistic moss detail. Add mist, shafts of sunlight through leaves, and small floating insects. Include a human explorer in the mid-ground, small in frame, wearing a backpack. Lush, cinematic realism.
|
| 194 |
+
|
| 195 |
+
<div style="display: flex; gap: 24px; justify-content: center; align-items: flex-start;">
|
| 196 |
+
<div style="text-align: center; flex: 1; min-width: 0;">
|
| 197 |
+
<img src="images/vibe/image_4.png" alt="VIBE" style="width: 100%; max-width: 500px; height: auto; display: block; margin: 0 auto 8px auto;">
|
| 198 |
+
<div>VIBE (Seed: 1995)</div>
|
| 199 |
+
</div>
|
| 200 |
+
<div style="text-align: center; flex: 1; min-width: 0;">
|
| 201 |
+
<img src="images/sana/image_4.png" alt="SANA1.5_1.6B_1024px" style="width: 100%; max-width: 500px; height: auto; display: block; margin: 0 auto 8px auto;">
|
| 202 |
+
<div>SANA1.5_1.6B_1024px (Seed: 9842)</div>
|
| 203 |
+
</div>
|
| 204 |
+
</div>
|
| 205 |
+
|
| 206 |
+
---
|
| 207 |
+
|
| 208 |
+
**Prompt:** Create a science-fiction interior of a space greenhouse module with hydroponic racks, glowing grow lights, and condensation on transparent walls. Plants include leafy greens and flowering specimens. Tools and tablets have UI elements. Add soft floating dust or microgravity droplets. Clean, detailed, plausible sci-fi aesthetic.
|
| 209 |
+
|
| 210 |
+
<div style="display: flex; gap: 24px; justify-content: center; align-items: flex-start;">
|
| 211 |
+
<div style="text-align: center; flex: 1; min-width: 0;">
|
| 212 |
+
<img src="images/vibe/image_5.png" alt="VIBE" style="width: 100%; max-width: 500px; height: auto; display: block; margin: 0 auto 8px auto;">
|
| 213 |
+
<div>VIBE (Seed: 2203)</div>
|
| 214 |
+
</div>
|
| 215 |
+
<div style="text-align: center; flex: 1; min-width: 0;">
|
| 216 |
+
<img src="images/sana/image_5.png" alt="SANA1.5_1.6B_1024px" style="width: 100%; max-width: 500px; height: auto; display: block; margin: 0 auto 8px auto;">
|
| 217 |
+
<div>SANA1.5_1.6B_1024px (Seed: 143)</div>
|
| 218 |
+
</div>
|
| 219 |
+
</div>
|
| 220 |
+
|
| 221 |
+
---
|
| 222 |
+
|
| 223 |
+
**Prompt:** Beautiful tropical beach with guinea pig swimming in the water and human drinking wine
|
| 224 |
+
|
| 225 |
+
<div style="display: flex; gap: 24px; justify-content: center; align-items: flex-start;">
|
| 226 |
+
<div style="text-align: center; flex: 1; min-width: 0;">
|
| 227 |
+
<img src="images/vibe/image_6.png" alt="VIBE" style="width: 100%; max-width: 500px; height: auto; display: block; margin: 0 auto 8px auto;">
|
| 228 |
+
<div>VIBE (Seed: 132142)</div>
|
| 229 |
+
</div>
|
| 230 |
+
<div style="text-align: center; flex: 1; min-width: 0;">
|
| 231 |
+
<img src="images/sana/image_6.png" alt="SANA1.5_1.6B_1024px" style="width: 100%; max-width: 500px; height: auto; display: block; margin: 0 auto 8px auto;">
|
| 232 |
+
<div>SANA1.5_1.6B_1024px (Seed: 132142)</div>
|
| 233 |
+
</div>
|
| 234 |
+
</div>
|
| 235 |
+
|
| 236 |
+
---
|
| 237 |
+
|
| 238 |
+
**Prompt:** Create a cinematic, rainy night scene in a narrow backstreet of an old downtown area. The camera is at street level, slightly tilted upward, emphasizing wet cobblestones reflecting neon-like colored lights without readable text. Show a small ramen stall with steam rising from pots, hanging paper lanterns that are blank or patterned (no letters), and acouple of stools under a simple awning. Add puddles, scattered trash like crumpled paper, and subtle mist. Include a passerby in the mid-ground seen from behind wearing a hooded jacket and carrying an umbrella, face not visible. Use a moody color palette of deep blues and warm oranges, with soft bokeh highlights and realistic rain streaks
|
| 239 |
+
|
| 240 |
+
<div style="display: flex; gap: 24px; justify-content: center; align-items: flex-start;">
|
| 241 |
+
<div style="text-align: center; flex: 1; min-width: 0;">
|
| 242 |
+
<img src="images/vibe/image_2.png" alt="VIBE" style="width: 100%; max-width: 500px; height: auto; display: block; margin: 0 auto 8px auto;">
|
| 243 |
+
<div>VIBE (Seed: 1003)</div>
|
| 244 |
+
</div>
|
| 245 |
+
<div style="text-align: center; flex: 1; min-width: 0;">
|
| 246 |
+
<img src="images/sana/image_2.png" alt="SANA1.5_1.6B_1024px" style="width: 100%; max-width: 500px; height: auto; display: block; margin: 0 auto 8px auto;">
|
| 247 |
+
<div>SANA1.5_1.6B_1024px (Seed: 3114)</div>
|
| 248 |
+
</div>
|
| 249 |
+
</div>
|
| 250 |
+
|
| 251 |
+
---
|
| 252 |
+
|
| 253 |
+
**Prompt:** Depict a volcanic lava field at twilight with cooled black rock, glowing cracks of magma in the distance, and heat shimmer. The sky is darkening with faint stars emerging. Add thin smoke plumes and red-orange reflections on nearby rocks. Cinematic realism, dramatic contrast
|
| 254 |
+
|
| 255 |
+
<div style="display: flex; gap: 24px; justify-content: center; align-items: flex-start;">
|
| 256 |
+
<div style="text-align: center; flex: 1; min-width: 0;">
|
| 257 |
+
<img src="images/vibe/image_7.png" alt="VIBE" style="width: 100%; max-width: 500px; height: auto; display: block; margin: 0 auto 8px auto;">
|
| 258 |
+
<div>VIBE (Seed: 1520)</div>
|
| 259 |
+
</div>
|
| 260 |
+
<div style="text-align: center; flex: 1; min-width: 0;">
|
| 261 |
+
<img src="images/sana/image_7.png" alt="SANA1.5_1.6B_1024px" style="width: 100%; max-width: 500px; height: auto; display: block; margin: 0 auto 8px auto;">
|
| 262 |
+
<div>SANA1.5_1.6B_1024px (Seed: 1267)</div>
|
| 263 |
+
</div>
|
| 264 |
+
</div>
|
| 265 |
+
|
| 266 |
+
---
|
| 267 |
+
|
| 268 |
+
**Prompt:** Portrait from back of a young woman dressed in Victorian attire standing in an ancient library filled with mirrors and stained glass windows, softly illuminated by sunlight streaming through
|
| 269 |
+
|
| 270 |
+
<div style="display: flex; gap: 24px; justify-content: center; align-items: flex-start;">
|
| 271 |
+
<div style="text-align: center; flex: 1; min-width: 0;">
|
| 272 |
+
<img src="images/vibe/image_1.png" alt="VIBE" style="width: 100%; max-width: 500px; height: auto; display: block; margin: 0 auto 8px auto;">
|
| 273 |
+
<div>VIBE (Seed: 4152)</div>
|
| 274 |
+
</div>
|
| 275 |
+
<div style="text-align: center; flex: 1; min-width: 0;">
|
| 276 |
+
<img src="images/sana/image_1.png" alt="SANA1.5_1.6B_1024px" style="width: 100%; max-width: 500px; height: auto; display: block; margin: 0 auto 8px auto;">
|
| 277 |
+
<div>SANA1.5_1.6B_1024px (Seed: 6742)</div>
|
| 278 |
+
</div>
|
| 279 |
+
</div>
|
| 280 |
+
|
| 281 |
+
|
| 282 |
+
|
| 283 |
+
## License
|
| 284 |
+
|
| 285 |
+
This project is built upon the SANA. Please refer to the original SANA license for usage terms:
|
| 286 |
+
[SANA License](https://huggingface.co/Efficient-Large-Model/SANA1.5_4.8B_1024px_diffusers/blob/main/LICENSE.txt)
|
| 287 |
+
|
| 288 |
+
## Citation
|
| 289 |
+
|
| 290 |
+
If you use this model in your research or applications, please acknowledge the original projects:
|
| 291 |
+
|
| 292 |
+
- [SANA 1.5: Efficient Scaling of Training-Time and Inference-Time Compute in Linear Diffusion Transformer](https://github.com/NVlabs/Sana)
|
| 293 |
+
- [Qwen3-VL](https://github.com/QwenLM/Qwen3-VL)
|
| 294 |
+
|
| 295 |
+
```bibtex
|
| 296 |
+
@misc{vibe2026,
|
| 297 |
+
Author = {Grigorii Alekseenko and Aleksandr Gordeev and Irina Tolstykh and Bulat Suleimanov and Vladimir Dokholyan and Georgii Fedorov and Sergey Yakubson and Aleksandra Tsybina and Mikhail Chernyshov and Maksim Kuprashevich},
|
| 298 |
+
Title = {VIBE: Visual Instruction Based Editor},
|
| 299 |
+
Year = {2026},
|
| 300 |
+
Eprint = {arXiv:2601.02242},
|
| 301 |
+
}
|
| 302 |
+
```
|
VIBE.png
ADDED
|
Git LFS Details
|
images/1.png
ADDED
|
Git LFS Details
|
images/11.png
ADDED
|
Git LFS Details
|
images/12.png
ADDED
|
Git LFS Details
|
images/13.png
ADDED
|
Git LFS Details
|
images/2.png
ADDED
|
Git LFS Details
|
images/3.png
ADDED
|
Git LFS Details
|
images/4.png
ADDED
|
Git LFS Details
|
images/5.png
ADDED
|
Git LFS Details
|
images/6.png
ADDED
|
Git LFS Details
|
images/7.png
ADDED
|
Git LFS Details
|
images/8.png
ADDED
|
Git LFS Details
|
images/9.png
ADDED
|
Git LFS Details
|
images/other/1.png
ADDED
|
Git LFS Details
|
images/other/10.png
ADDED
|
Git LFS Details
|
images/other/2.png
ADDED
|
Git LFS Details
|
images/other/3.png
ADDED
|
Git LFS Details
|
images/other/4.png
ADDED
|
Git LFS Details
|
images/other/5.png
ADDED
|
Git LFS Details
|
images/other/6.png
ADDED
|
Git LFS Details
|
images/other/8.png
ADDED
|
Git LFS Details
|
images/other/9.png
ADDED
|
Git LFS Details
|
images/sana/image_1.png
ADDED
|
Git LFS Details
|
images/sana/image_2.png
ADDED
|
Git LFS Details
|
images/sana/image_3.png
ADDED
|
Git LFS Details
|
images/sana/image_4.png
ADDED
|
Git LFS Details
|
images/sana/image_5.png
ADDED
|
Git LFS Details
|
images/sana/image_6.png
ADDED
|
Git LFS Details
|
images/sana/image_7.png
ADDED
|
Git LFS Details
|
images/vibe/image_1.png
ADDED
|
Git LFS Details
|
images/vibe/image_2.png
ADDED
|
Git LFS Details
|
images/vibe/image_3.png
ADDED
|
Git LFS Details
|
images/vibe/image_4.png
ADDED
|
Git LFS Details
|
images/vibe/image_5.png
ADDED
|
Git LFS Details
|
images/vibe/image_6.png
ADDED
|
Git LFS Details
|
images/vibe/image_7.png
ADDED
|
Git LFS Details
|
model_index.json
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"_class_name": "VIBESanaEditingPipeline",
|
| 3 |
+
"_diffusers_version": "0.33.1",
|
| 4 |
+
"scheduler": [
|
| 5 |
+
"diffusers",
|
| 6 |
+
"DPMSolverMultistepScheduler"
|
| 7 |
+
],
|
| 8 |
+
"text_encoder": [
|
| 9 |
+
"transformers",
|
| 10 |
+
"Qwen3VLForConditionalGeneration"
|
| 11 |
+
],
|
| 12 |
+
"tokenizer": [
|
| 13 |
+
"transformers",
|
| 14 |
+
"Qwen3VLProcessor"
|
| 15 |
+
],
|
| 16 |
+
"transformer": [
|
| 17 |
+
"vibe.transformer.vibe_sana_editing",
|
| 18 |
+
"VIBESanaEditingModel"
|
| 19 |
+
],
|
| 20 |
+
"vae": [
|
| 21 |
+
"diffusers",
|
| 22 |
+
"AutoencoderDC"
|
| 23 |
+
]
|
| 24 |
+
}
|
scheduler/scheduler_config.json
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"_class_name": "DPMSolverMultistepScheduler",
|
| 3 |
+
"_diffusers_version": "0.33.1",
|
| 4 |
+
"algorithm_type": "dpmsolver++",
|
| 5 |
+
"beta_end": 0.02,
|
| 6 |
+
"beta_schedule": "linear",
|
| 7 |
+
"beta_start": 0.0001,
|
| 8 |
+
"dynamic_thresholding_ratio": 0.995,
|
| 9 |
+
"euler_at_final": false,
|
| 10 |
+
"final_sigmas_type": "zero",
|
| 11 |
+
"flow_shift": 3.0,
|
| 12 |
+
"lambda_min_clipped": -Infinity,
|
| 13 |
+
"lower_order_final": true,
|
| 14 |
+
"num_train_timesteps": 1000,
|
| 15 |
+
"prediction_type": "flow_prediction",
|
| 16 |
+
"rescale_betas_zero_snr": false,
|
| 17 |
+
"sample_max_value": 1.0,
|
| 18 |
+
"solver_order": 2,
|
| 19 |
+
"solver_type": "midpoint",
|
| 20 |
+
"steps_offset": 0,
|
| 21 |
+
"thresholding": false,
|
| 22 |
+
"timestep_spacing": "linspace",
|
| 23 |
+
"trained_betas": null,
|
| 24 |
+
"use_beta_sigmas": false,
|
| 25 |
+
"use_exponential_sigmas": false,
|
| 26 |
+
"use_flow_sigmas": true,
|
| 27 |
+
"use_karras_sigmas": false,
|
| 28 |
+
"use_lu_lambdas": false,
|
| 29 |
+
"variance_type": null
|
| 30 |
+
}
|
text_encoder/config.json
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"architectures": [
|
| 3 |
+
"Qwen3VLForConditionalGeneration"
|
| 4 |
+
],
|
| 5 |
+
"image_token_id": 151655,
|
| 6 |
+
"model_type": "qwen3_vl",
|
| 7 |
+
"text_config": {
|
| 8 |
+
"attention_bias": false,
|
| 9 |
+
"attention_dropout": 0.0,
|
| 10 |
+
"bos_token_id": 151643,
|
| 11 |
+
"dtype": "bfloat16",
|
| 12 |
+
"eos_token_id": 151645,
|
| 13 |
+
"head_dim": 128,
|
| 14 |
+
"hidden_act": "silu",
|
| 15 |
+
"hidden_size": 2048,
|
| 16 |
+
"initializer_range": 0.02,
|
| 17 |
+
"intermediate_size": 6144,
|
| 18 |
+
"max_position_embeddings": 262144,
|
| 19 |
+
"model_type": "qwen3_vl_text",
|
| 20 |
+
"num_attention_heads": 16,
|
| 21 |
+
"num_hidden_layers": 28,
|
| 22 |
+
"num_key_value_heads": 8,
|
| 23 |
+
"rms_norm_eps": 1e-06,
|
| 24 |
+
"rope_scaling": {
|
| 25 |
+
"mrope_interleaved": true,
|
| 26 |
+
"mrope_section": [
|
| 27 |
+
24,
|
| 28 |
+
20,
|
| 29 |
+
20
|
| 30 |
+
],
|
| 31 |
+
"rope_type": "default"
|
| 32 |
+
},
|
| 33 |
+
"rope_theta": 5000000,
|
| 34 |
+
"tie_word_embeddings": true,
|
| 35 |
+
"use_cache": true,
|
| 36 |
+
"vocab_size": 151936
|
| 37 |
+
},
|
| 38 |
+
"tie_word_embeddings": true,
|
| 39 |
+
"transformers_version": "4.57.1",
|
| 40 |
+
"video_token_id": 151656,
|
| 41 |
+
"vision_config": {
|
| 42 |
+
"deepstack_visual_indexes": [
|
| 43 |
+
5,
|
| 44 |
+
11,
|
| 45 |
+
17
|
| 46 |
+
],
|
| 47 |
+
"depth": 24,
|
| 48 |
+
"hidden_act": "gelu_pytorch_tanh",
|
| 49 |
+
"hidden_size": 1024,
|
| 50 |
+
"in_channels": 3,
|
| 51 |
+
"initializer_range": 0.02,
|
| 52 |
+
"intermediate_size": 4096,
|
| 53 |
+
"model_type": "qwen3_vl",
|
| 54 |
+
"num_heads": 16,
|
| 55 |
+
"num_position_embeddings": 2304,
|
| 56 |
+
"out_hidden_size": 2048,
|
| 57 |
+
"patch_size": 16,
|
| 58 |
+
"spatial_merge_size": 2,
|
| 59 |
+
"temporal_patch_size": 2
|
| 60 |
+
},
|
| 61 |
+
"vision_end_token_id": 151653,
|
| 62 |
+
"vision_start_token_id": 151652
|
| 63 |
+
}
|
text_encoder/generation_config.json
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"bos_token_id": 151643,
|
| 3 |
+
"pad_token_id": 151643,
|
| 4 |
+
"do_sample": true,
|
| 5 |
+
"eos_token_id": [
|
| 6 |
+
151645,
|
| 7 |
+
151643
|
| 8 |
+
],
|
| 9 |
+
"top_p": 0.8,
|
| 10 |
+
"top_k": 20,
|
| 11 |
+
"temperature": 0.7,
|
| 12 |
+
"repetition_penalty": 1.0,
|
| 13 |
+
"transformers_version": "4.56.0"
|
| 14 |
+
}
|
text_encoder/model.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:7de1838c87a5349b016c26a1c3f7d2bc400a3d485f95ef39a7059ffd734977a0
|
| 3 |
+
size 4255140312
|
tokenizer/chat_template.json
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"chat_template": "{%- if tools %}\n {{- '<|im_start|>system\\n' }}\n {%- if messages[0].role == 'system' %}\n {%- if messages[0].content is string %}\n {{- messages[0].content }}\n {%- else %}\n {%- for content in messages[0].content %}\n {%- if 'text' in content %}\n {{- content.text }}\n {%- endif %}\n {%- endfor %}\n {%- endif %}\n {{- '\\n\\n' }}\n {%- endif %}\n {{- \"# Tools\\n\\nYou may call one or more functions to assist with the user query.\\n\\nYou are provided with function signatures within <tools></tools> XML tags:\\n<tools>\" }}\n {%- for tool in tools %}\n {{- \"\\n\" }}\n {{- tool | tojson }}\n {%- endfor %}\n {{- \"\\n</tools>\\n\\nFor each function call, return a json object with function name and arguments within <tool_call></tool_call> XML tags:\\n<tool_call>\\n{\\\"name\\\": <function-name>, \\\"arguments\\\": <args-json-object>}\\n</tool_call><|im_end|>\\n\" }}\n{%- else %}\n {%- if messages[0].role == 'system' %}\n {{- '<|im_start|>system\\n' }}\n {%- if messages[0].content is string %}\n {{- messages[0].content }}\n {%- else %}\n {%- for content in messages[0].content %}\n {%- if 'text' in content %}\n {{- content.text }}\n {%- endif %}\n {%- endfor %}\n {%- endif %}\n {{- '<|im_end|>\\n' }}\n {%- endif %}\n{%- endif %}\n{%- set image_count = namespace(value=0) %}\n{%- set video_count = namespace(value=0) %}\n{%- for message in messages %}\n {%- if message.role == \"user\" %}\n {{- '<|im_start|>' + message.role + '\\n' }}\n {%- if message.content is string %}\n {{- message.content }}\n {%- else %}\n {%- for content in message.content %}\n {%- if content.type == 'image' or 'image' in content or 'image_url' in content %}\n {%- set image_count.value = image_count.value + 1 %}\n {%- if add_vision_id %}Picture {{ image_count.value }}: {% endif -%}\n <|vision_start|><|image_pad|><|vision_end|>\n {%- elif content.type == 'video' or 'video' in content %}\n {%- set video_count.value = video_count.value + 1 %}\n {%- if add_vision_id %}Video {{ video_count.value }}: {% endif -%}\n <|vision_start|><|video_pad|><|vision_end|>\n {%- elif 'text' in content %}\n {{- content.text }}\n {%- endif %}\n {%- endfor %}\n {%- endif %}\n {{- '<|im_end|>\\n' }}\n {%- elif message.role == \"assistant\" %}\n {{- '<|im_start|>' + message.role + '\\n' }}\n {%- if message.content is string %}\n {{- message.content }}\n {%- else %}\n {%- for content_item in message.content %}\n {%- if 'text' in content_item %}\n {{- content_item.text }}\n {%- endif %}\n {%- endfor %}\n {%- endif %}\n {%- if message.tool_calls %}\n {%- for tool_call in message.tool_calls %}\n {%- if (loop.first and message.content) or (not loop.first) %}\n {{- '\\n' }}\n {%- endif %}\n {%- if tool_call.function %}\n {%- set tool_call = tool_call.function %}\n {%- endif %}\n {{- '<tool_call>\\n{\"name\": \"' }}\n {{- tool_call.name }}\n {{- '\", \"arguments\": ' }}\n {%- if tool_call.arguments is string %}\n {{- tool_call.arguments }}\n {%- else %}\n {{- tool_call.arguments | tojson }}\n {%- endif %}\n {{- '}\\n</tool_call>' }}\n {%- endfor %}\n {%- endif %}\n {{- '<|im_end|>\\n' }}\n {%- elif message.role == \"tool\" %}\n {%- if loop.first or (messages[loop.index0 - 1].role != \"tool\") %}\n {{- '<|im_start|>user' }}\n {%- endif %}\n {{- '\\n<tool_response>\\n' }}\n {%- if message.content is string %}\n {{- message.content }}\n {%- else %}\n {%- for content in message.content %}\n {%- if content.type == 'image' or 'image' in content or 'image_url' in content %}\n {%- set image_count.value = image_count.value + 1 %}\n {%- if add_vision_id %}Picture {{ image_count.value }}: {% endif -%}\n <|vision_start|><|image_pad|><|vision_end|>\n {%- elif content.type == 'video' or 'video' in content %}\n {%- set video_count.value = video_count.value + 1 %}\n {%- if add_vision_id %}Video {{ video_count.value }}: {% endif -%}\n <|vision_start|><|video_pad|><|vision_end|>\n {%- elif 'text' in content %}\n {{- content.text }}\n {%- endif %}\n {%- endfor %}\n {%- endif %}\n {{- '\\n</tool_response>' }}\n {%- if loop.last or (messages[loop.index0 + 1].role != \"tool\") %}\n {{- '<|im_end|>\\n' }}\n {%- endif %}\n {%- endif %}\n{%- endfor %}\n{%- if add_generation_prompt %}\n {{- '<|im_start|>assistant\\n' }}\n{%- endif %}\n"
|
| 3 |
+
}
|
| 4 |
+
|
tokenizer/merges.txt
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
tokenizer/preprocessor_config.json
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"size": {
|
| 3 |
+
"longest_edge": 16777216,
|
| 4 |
+
"shortest_edge": 65536
|
| 5 |
+
},
|
| 6 |
+
"patch_size": 16,
|
| 7 |
+
"temporal_patch_size": 2,
|
| 8 |
+
"merge_size": 2,
|
| 9 |
+
"image_mean": [
|
| 10 |
+
0.5,
|
| 11 |
+
0.5,
|
| 12 |
+
0.5
|
| 13 |
+
],
|
| 14 |
+
"image_std": [
|
| 15 |
+
0.5,
|
| 16 |
+
0.5,
|
| 17 |
+
0.5
|
| 18 |
+
],
|
| 19 |
+
"processor_class": "Qwen3VLProcessor",
|
| 20 |
+
"image_processor_type": "Qwen2VLImageProcessorFast"
|
| 21 |
+
}
|
tokenizer/tokenizer.json
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
tokenizer/tokenizer_config.json
ADDED
|
@@ -0,0 +1,239 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"add_bos_token": false,
|
| 3 |
+
"add_prefix_space": false,
|
| 4 |
+
"added_tokens_decoder": {
|
| 5 |
+
"151643": {
|
| 6 |
+
"content": "<|endoftext|>",
|
| 7 |
+
"lstrip": false,
|
| 8 |
+
"normalized": false,
|
| 9 |
+
"rstrip": false,
|
| 10 |
+
"single_word": false,
|
| 11 |
+
"special": true
|
| 12 |
+
},
|
| 13 |
+
"151644": {
|
| 14 |
+
"content": "<|im_start|>",
|
| 15 |
+
"lstrip": false,
|
| 16 |
+
"normalized": false,
|
| 17 |
+
"rstrip": false,
|
| 18 |
+
"single_word": false,
|
| 19 |
+
"special": true
|
| 20 |
+
},
|
| 21 |
+
"151645": {
|
| 22 |
+
"content": "<|im_end|>",
|
| 23 |
+
"lstrip": false,
|
| 24 |
+
"normalized": false,
|
| 25 |
+
"rstrip": false,
|
| 26 |
+
"single_word": false,
|
| 27 |
+
"special": true
|
| 28 |
+
},
|
| 29 |
+
"151646": {
|
| 30 |
+
"content": "<|object_ref_start|>",
|
| 31 |
+
"lstrip": false,
|
| 32 |
+
"normalized": false,
|
| 33 |
+
"rstrip": false,
|
| 34 |
+
"single_word": false,
|
| 35 |
+
"special": true
|
| 36 |
+
},
|
| 37 |
+
"151647": {
|
| 38 |
+
"content": "<|object_ref_end|>",
|
| 39 |
+
"lstrip": false,
|
| 40 |
+
"normalized": false,
|
| 41 |
+
"rstrip": false,
|
| 42 |
+
"single_word": false,
|
| 43 |
+
"special": true
|
| 44 |
+
},
|
| 45 |
+
"151648": {
|
| 46 |
+
"content": "<|box_start|>",
|
| 47 |
+
"lstrip": false,
|
| 48 |
+
"normalized": false,
|
| 49 |
+
"rstrip": false,
|
| 50 |
+
"single_word": false,
|
| 51 |
+
"special": true
|
| 52 |
+
},
|
| 53 |
+
"151649": {
|
| 54 |
+
"content": "<|box_end|>",
|
| 55 |
+
"lstrip": false,
|
| 56 |
+
"normalized": false,
|
| 57 |
+
"rstrip": false,
|
| 58 |
+
"single_word": false,
|
| 59 |
+
"special": true
|
| 60 |
+
},
|
| 61 |
+
"151650": {
|
| 62 |
+
"content": "<|quad_start|>",
|
| 63 |
+
"lstrip": false,
|
| 64 |
+
"normalized": false,
|
| 65 |
+
"rstrip": false,
|
| 66 |
+
"single_word": false,
|
| 67 |
+
"special": true
|
| 68 |
+
},
|
| 69 |
+
"151651": {
|
| 70 |
+
"content": "<|quad_end|>",
|
| 71 |
+
"lstrip": false,
|
| 72 |
+
"normalized": false,
|
| 73 |
+
"rstrip": false,
|
| 74 |
+
"single_word": false,
|
| 75 |
+
"special": true
|
| 76 |
+
},
|
| 77 |
+
"151652": {
|
| 78 |
+
"content": "<|vision_start|>",
|
| 79 |
+
"lstrip": false,
|
| 80 |
+
"normalized": false,
|
| 81 |
+
"rstrip": false,
|
| 82 |
+
"single_word": false,
|
| 83 |
+
"special": true
|
| 84 |
+
},
|
| 85 |
+
"151653": {
|
| 86 |
+
"content": "<|vision_end|>",
|
| 87 |
+
"lstrip": false,
|
| 88 |
+
"normalized": false,
|
| 89 |
+
"rstrip": false,
|
| 90 |
+
"single_word": false,
|
| 91 |
+
"special": true
|
| 92 |
+
},
|
| 93 |
+
"151654": {
|
| 94 |
+
"content": "<|vision_pad|>",
|
| 95 |
+
"lstrip": false,
|
| 96 |
+
"normalized": false,
|
| 97 |
+
"rstrip": false,
|
| 98 |
+
"single_word": false,
|
| 99 |
+
"special": true
|
| 100 |
+
},
|
| 101 |
+
"151655": {
|
| 102 |
+
"content": "<|image_pad|>",
|
| 103 |
+
"lstrip": false,
|
| 104 |
+
"normalized": false,
|
| 105 |
+
"rstrip": false,
|
| 106 |
+
"single_word": false,
|
| 107 |
+
"special": true
|
| 108 |
+
},
|
| 109 |
+
"151656": {
|
| 110 |
+
"content": "<|video_pad|>",
|
| 111 |
+
"lstrip": false,
|
| 112 |
+
"normalized": false,
|
| 113 |
+
"rstrip": false,
|
| 114 |
+
"single_word": false,
|
| 115 |
+
"special": true
|
| 116 |
+
},
|
| 117 |
+
"151657": {
|
| 118 |
+
"content": "<tool_call>",
|
| 119 |
+
"lstrip": false,
|
| 120 |
+
"normalized": false,
|
| 121 |
+
"rstrip": false,
|
| 122 |
+
"single_word": false,
|
| 123 |
+
"special": false
|
| 124 |
+
},
|
| 125 |
+
"151658": {
|
| 126 |
+
"content": "</tool_call>",
|
| 127 |
+
"lstrip": false,
|
| 128 |
+
"normalized": false,
|
| 129 |
+
"rstrip": false,
|
| 130 |
+
"single_word": false,
|
| 131 |
+
"special": false
|
| 132 |
+
},
|
| 133 |
+
"151659": {
|
| 134 |
+
"content": "<|fim_prefix|>",
|
| 135 |
+
"lstrip": false,
|
| 136 |
+
"normalized": false,
|
| 137 |
+
"rstrip": false,
|
| 138 |
+
"single_word": false,
|
| 139 |
+
"special": false
|
| 140 |
+
},
|
| 141 |
+
"151660": {
|
| 142 |
+
"content": "<|fim_middle|>",
|
| 143 |
+
"lstrip": false,
|
| 144 |
+
"normalized": false,
|
| 145 |
+
"rstrip": false,
|
| 146 |
+
"single_word": false,
|
| 147 |
+
"special": false
|
| 148 |
+
},
|
| 149 |
+
"151661": {
|
| 150 |
+
"content": "<|fim_suffix|>",
|
| 151 |
+
"lstrip": false,
|
| 152 |
+
"normalized": false,
|
| 153 |
+
"rstrip": false,
|
| 154 |
+
"single_word": false,
|
| 155 |
+
"special": false
|
| 156 |
+
},
|
| 157 |
+
"151662": {
|
| 158 |
+
"content": "<|fim_pad|>",
|
| 159 |
+
"lstrip": false,
|
| 160 |
+
"normalized": false,
|
| 161 |
+
"rstrip": false,
|
| 162 |
+
"single_word": false,
|
| 163 |
+
"special": false
|
| 164 |
+
},
|
| 165 |
+
"151663": {
|
| 166 |
+
"content": "<|repo_name|>",
|
| 167 |
+
"lstrip": false,
|
| 168 |
+
"normalized": false,
|
| 169 |
+
"rstrip": false,
|
| 170 |
+
"single_word": false,
|
| 171 |
+
"special": false
|
| 172 |
+
},
|
| 173 |
+
"151664": {
|
| 174 |
+
"content": "<|file_sep|>",
|
| 175 |
+
"lstrip": false,
|
| 176 |
+
"normalized": false,
|
| 177 |
+
"rstrip": false,
|
| 178 |
+
"single_word": false,
|
| 179 |
+
"special": false
|
| 180 |
+
},
|
| 181 |
+
"151665": {
|
| 182 |
+
"content": "<tool_response>",
|
| 183 |
+
"lstrip": false,
|
| 184 |
+
"normalized": false,
|
| 185 |
+
"rstrip": false,
|
| 186 |
+
"single_word": false,
|
| 187 |
+
"special": false
|
| 188 |
+
},
|
| 189 |
+
"151666": {
|
| 190 |
+
"content": "</tool_response>",
|
| 191 |
+
"lstrip": false,
|
| 192 |
+
"normalized": false,
|
| 193 |
+
"rstrip": false,
|
| 194 |
+
"single_word": false,
|
| 195 |
+
"special": false
|
| 196 |
+
},
|
| 197 |
+
"151667": {
|
| 198 |
+
"content": "<think>",
|
| 199 |
+
"lstrip": false,
|
| 200 |
+
"normalized": false,
|
| 201 |
+
"rstrip": false,
|
| 202 |
+
"single_word": false,
|
| 203 |
+
"special": false
|
| 204 |
+
},
|
| 205 |
+
"151668": {
|
| 206 |
+
"content": "</think>",
|
| 207 |
+
"lstrip": false,
|
| 208 |
+
"normalized": false,
|
| 209 |
+
"rstrip": false,
|
| 210 |
+
"single_word": false,
|
| 211 |
+
"special": false
|
| 212 |
+
}
|
| 213 |
+
},
|
| 214 |
+
"additional_special_tokens": [
|
| 215 |
+
"<|im_start|>",
|
| 216 |
+
"<|im_end|>",
|
| 217 |
+
"<|object_ref_start|>",
|
| 218 |
+
"<|object_ref_end|>",
|
| 219 |
+
"<|box_start|>",
|
| 220 |
+
"<|box_end|>",
|
| 221 |
+
"<|quad_start|>",
|
| 222 |
+
"<|quad_end|>",
|
| 223 |
+
"<|vision_start|>",
|
| 224 |
+
"<|vision_end|>",
|
| 225 |
+
"<|vision_pad|>",
|
| 226 |
+
"<|image_pad|>",
|
| 227 |
+
"<|video_pad|>"
|
| 228 |
+
],
|
| 229 |
+
"bos_token": null,
|
| 230 |
+
"chat_template": "{%- if tools %}\n {{- '<|im_start|>system\\n' }}\n {%- if messages[0].role == 'system' %}\n {%- if messages[0].content is string %}\n {{- messages[0].content }}\n {%- else %}\n {%- for content in messages[0].content %}\n {%- if 'text' in content %}\n {{- content.text }}\n {%- endif %}\n {%- endfor %}\n {%- endif %}\n {{- '\\n\\n' }}\n {%- endif %}\n {{- \"# Tools\\n\\nYou may call one or more functions to assist with the user query.\\n\\nYou are provided with function signatures within <tools></tools> XML tags:\\n<tools>\" }}\n {%- for tool in tools %}\n {{- \"\\n\" }}\n {{- tool | tojson }}\n {%- endfor %}\n {{- \"\\n</tools>\\n\\nFor each function call, return a json object with function name and arguments within <tool_call></tool_call> XML tags:\\n<tool_call>\\n{\\\"name\\\": <function-name>, \\\"arguments\\\": <args-json-object>}\\n</tool_call><|im_end|>\\n\" }}\n{%- else %}\n {%- if messages[0].role == 'system' %}\n {{- '<|im_start|>system\\n' }}\n {%- if messages[0].content is string %}\n {{- messages[0].content }}\n {%- else %}\n {%- for content in messages[0].content %}\n {%- if 'text' in content %}\n {{- content.text }}\n {%- endif %}\n {%- endfor %}\n {%- endif %}\n {{- '<|im_end|>\\n' }}\n {%- endif %}\n{%- endif %}\n{%- set image_count = namespace(value=0) %}\n{%- set video_count = namespace(value=0) %}\n{%- for message in messages %}\n {%- if message.role == \"user\" %}\n {{- '<|im_start|>' + message.role + '\\n' }}\n {%- if message.content is string %}\n {{- message.content }}\n {%- else %}\n {%- for content in message.content %}\n {%- if content.type == 'image' or 'image' in content or 'image_url' in content %}\n {%- set image_count.value = image_count.value + 1 %}\n {%- if add_vision_id %}Picture {{ image_count.value }}: {% endif -%}\n <|vision_start|><|image_pad|><|vision_end|>\n {%- elif content.type == 'video' or 'video' in content %}\n {%- set video_count.value = video_count.value + 1 %}\n {%- if add_vision_id %}Video {{ video_count.value }}: {% endif -%}\n <|vision_start|><|video_pad|><|vision_end|>\n {%- elif 'text' in content %}\n {{- content.text }}\n {%- endif %}\n {%- endfor %}\n {%- endif %}\n {{- '<|im_end|>\\n' }}\n {%- elif message.role == \"assistant\" %}\n {{- '<|im_start|>' + message.role + '\\n' }}\n {%- if message.content is string %}\n {{- message.content }}\n {%- else %}\n {%- for content_item in message.content %}\n {%- if 'text' in content_item %}\n {{- content_item.text }}\n {%- endif %}\n {%- endfor %}\n {%- endif %}\n {%- if message.tool_calls %}\n {%- for tool_call in message.tool_calls %}\n {%- if (loop.first and message.content) or (not loop.first) %}\n {{- '\\n' }}\n {%- endif %}\n {%- if tool_call.function %}\n {%- set tool_call = tool_call.function %}\n {%- endif %}\n {{- '<tool_call>\\n{\"name\": \"' }}\n {{- tool_call.name }}\n {{- '\", \"arguments\": ' }}\n {%- if tool_call.arguments is string %}\n {{- tool_call.arguments }}\n {%- else %}\n {{- tool_call.arguments | tojson }}\n {%- endif %}\n {{- '}\\n</tool_call>' }}\n {%- endfor %}\n {%- endif %}\n {{- '<|im_end|>\\n' }}\n {%- elif message.role == \"tool\" %}\n {%- if loop.first or (messages[loop.index0 - 1].role != \"tool\") %}\n {{- '<|im_start|>user' }}\n {%- endif %}\n {{- '\\n<tool_response>\\n' }}\n {%- if message.content is string %}\n {{- message.content }}\n {%- else %}\n {%- for content in message.content %}\n {%- if content.type == 'image' or 'image' in content or 'image_url' in content %}\n {%- set image_count.value = image_count.value + 1 %}\n {%- if add_vision_id %}Picture {{ image_count.value }}: {% endif -%}\n <|vision_start|><|image_pad|><|vision_end|>\n {%- elif content.type == 'video' or 'video' in content %}\n {%- set video_count.value = video_count.value + 1 %}\n {%- if add_vision_id %}Video {{ video_count.value }}: {% endif -%}\n <|vision_start|><|video_pad|><|vision_end|>\n {%- elif 'text' in content %}\n {{- content.text }}\n {%- endif %}\n {%- endfor %}\n {%- endif %}\n {{- '\\n</tool_response>' }}\n {%- if loop.last or (messages[loop.index0 + 1].role != \"tool\") %}\n {{- '<|im_end|>\\n' }}\n {%- endif %}\n {%- endif %}\n{%- endfor %}\n{%- if add_generation_prompt %}\n {{- '<|im_start|>assistant\\n' }}\n{%- endif %}\n",
|
| 231 |
+
"clean_up_tokenization_spaces": false,
|
| 232 |
+
"eos_token": "<|im_end|>",
|
| 233 |
+
"errors": "replace",
|
| 234 |
+
"model_max_length": 262144,
|
| 235 |
+
"pad_token": "<|endoftext|>",
|
| 236 |
+
"split_special_tokens": false,
|
| 237 |
+
"tokenizer_class": "Qwen2Tokenizer",
|
| 238 |
+
"unk_token": null
|
| 239 |
+
}
|
tokenizer/video_preprocessor_config.json
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"size": {
|
| 3 |
+
"longest_edge": 25165824,
|
| 4 |
+
"shortest_edge": 4096
|
| 5 |
+
},
|
| 6 |
+
"patch_size": 16,
|
| 7 |
+
"temporal_patch_size": 2,
|
| 8 |
+
"merge_size": 2,
|
| 9 |
+
"image_mean": [
|
| 10 |
+
0.5,
|
| 11 |
+
0.5,
|
| 12 |
+
0.5
|
| 13 |
+
],
|
| 14 |
+
"image_std": [
|
| 15 |
+
0.5,
|
| 16 |
+
0.5,
|
| 17 |
+
0.5
|
| 18 |
+
],
|
| 19 |
+
"processor_class": "Qwen3VLProcessor",
|
| 20 |
+
"video_processor_type": "Qwen3VLVideoProcessor"
|
| 21 |
+
}
|
tokenizer/vocab.json
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|