Feature Extraction
sentence-transformers
Safetensors
English
modernvbert
sparse-retrieval
splade
visual-document-retrieval
multimodal
information-retrieval
inference-free
sparse-encoder
custom_code
Instructions to use naver/v-splade-efficient with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- sentence-transformers
How to use naver/v-splade-efficient with sentence-transformers:
from sentence_transformers import SparseEncoder model = SparseEncoder("naver/v-splade-efficient", trust_remote_code=True) queries = ["Which planet is known as the Red Planet?"] documents = [ "Venus is often called Earth's twin because of its similar size and proximity.", "Mars, known for its reddish appearance, is often referred to as the Red Planet.", "Jupiter, the largest planet in our solar system, has a prominent red spot.", ] query_embeddings = model.encode_query(queries) document_embeddings = model.encode_document(documents) similarities = model.similarity(query_embeddings, document_embeddings) print(similarities) - Notebooks
- Google Colab
- Kaggle
Commit ·
882a2d4
0
Parent(s):
V-SPLADE initial release
Browse files- .gitattributes +36 -0
- README.md +139 -0
- chat_template.json +3 -0
- config.json +107 -0
- configuration_modernvbert.py +225 -0
- model.safetensors +3 -0
- modeling_modernvbert.py +610 -0
- preprocessor_config.json +28 -0
- processor_config.json +4 -0
- special_tokens_map.json +79 -0
- tokenizer.json +0 -0
- tokenizer_config.json +1310 -0
- v-splade-logo.png +3 -0
- vsplade_config.json +15 -0
.gitattributes
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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 |
+
v-splade-logo.png filter=lfs diff=lfs merge=lfs -text
|
README.md
ADDED
|
@@ -0,0 +1,139 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
license: apache-2.0
|
| 3 |
+
language:
|
| 4 |
+
- en
|
| 5 |
+
tags:
|
| 6 |
+
- sparse-retrieval
|
| 7 |
+
- splade
|
| 8 |
+
- visual-document-retrieval
|
| 9 |
+
- multimodal
|
| 10 |
+
- information-retrieval
|
| 11 |
+
- inference-free
|
| 12 |
+
pipeline_tag: feature-extraction
|
| 13 |
+
library_name: transformers
|
| 14 |
+
---
|
| 15 |
+
|
| 16 |
+
<p align="center">
|
| 17 |
+
<img src="v-splade-logo.png" alt="V-SPLADE" width="480"/>
|
| 18 |
+
</p>
|
| 19 |
+
|
| 20 |
+
# V-SPLADE: Inference-Free Multimodal Learned Sparse Retrieval for Production-Scale Visual Document Search
|
| 21 |
+
|
| 22 |
+
**Paper:** [arXiv:2605.30917](https://arxiv.org/abs/2605.30917) · **Code:** [github.com/naver/v-splade](https://github.com/naver/v-splade)
|
| 23 |
+
|
| 24 |
+
> **This repository hosts the `Efficient` variant** (lower FLOPs). For the higher-quality checkpoint, see [`naver/v-splade-quality`](https://huggingface.co/naver/v-splade-quality).
|
| 25 |
+
|
| 26 |
+
## Model Summary
|
| 27 |
+
|
| 28 |
+
**V-SPLADE** is a **0.25B (250M) inference-free sparse retriever** for visual-document retrieval — retrieving image-based document pages (rendered PDFs, slides, scanned reports) from a text query.
|
| 29 |
+
|
| 30 |
+
- **Inference-free** — queries are resolved by a learned Bag-of-Words lookup with **no neural query encoding at serving time**, so retrieval runs on a standard inverted index (Pyserini / PISA) without a GPU.
|
| 31 |
+
- **Direct visual embedding** — document pages are encoded directly into sparse vectors, building indexes **over 20× faster** than caption- or OCR-based text-extraction pipelines.
|
| 32 |
+
|
| 33 |
+
## Benchmark Performance
|
| 34 |
+
|
| 35 |
+
### Six visual-document benchmarks (NDCG@5)
|
| 36 |
+
|
| 37 |
+
| Model | Size | ViDoRe v1 | v2 | v3 | VisRAG | VisDoc OOD | IRPAPERS | Avg |
|
| 38 |
+
| --- | --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: |
|
| 39 |
+
| BiModernVBERT (dense) | 0.25B | 67.6 | 35.7 | 28.9 | 60.5 | 53.4 | 31.8 | 46.3 |
|
| 40 |
+
| BM25 (caption, Qwen3-VL) | — | 67.5 | 44.1 | 38.3 | 76.5 | 58.0 | 38.4 | 53.8 |
|
| 41 |
+
| BM25 (unstructured OCR) | — | 68.2 | 41.7 | 38.7 | 61.1 | 51.2 | 65.7 | 54.4 |
|
| 42 |
+
| [**V-SPLADE Quality**](https://huggingface.co/naver/v-splade-quality) | 0.25B | **77.4** | **49.9** | **40.9** | 76.4 | **61.7** | 54.0 | **60.1** |
|
| 43 |
+
| [**V-SPLADE Efficient**](https://huggingface.co/naver/v-splade-efficient) | 0.25B | 74.6 | 46.6 | 37.6 | 73.0 | 59.5 | 47.1 | 56.4 |
|
| 44 |
+
|
| 45 |
+
V-SPLADE Quality improves average NDCG@5 by **+13.8pp** over the same-scale dense baseline (BiModernVBERT) and by up to **+6.3pp** over the OCR/caption BM25 baselines.
|
| 46 |
+
|
| 47 |
+
### Production-scale retrieval (18.7M-document corpus)
|
| 48 |
+
|
| 49 |
+
| Model | R@5 | R@100 | Query latency |
|
| 50 |
+
| --- | ---: | ---: | --- |
|
| 51 |
+
| BiModernVBERT (same-scale dense) | 0.090 | 0.299 | ~HNSW |
|
| 52 |
+
| **V-SPLADE** | **0.228** | **0.520** | ~HNSW approx |
|
| 53 |
+
|
| 54 |
+
V-SPLADE more than **doubles R@5** over the same-backbone dense retriever at production scale, and retains recall more robustly as the corpus grows from 500K to 18.7M pages.
|
| 55 |
+
|
| 56 |
+
### Document encoding throughput
|
| 57 |
+
|
| 58 |
+
| Method | Pages/sec |
|
| 59 |
+
| --- | ---: |
|
| 60 |
+
| **V-SPLADE (ours)** | **20.19** |
|
| 61 |
+
| Qwen3-VL-30B-A3B caption (vLLM, eff. 3B) | 0.83 |
|
| 62 |
+
| Unstructured OCR (Tesseract hi_res) | 0.90 |
|
| 63 |
+
|
| 64 |
+
Measured on a single H100 GPU with 4 CPU cores, using 1,000 sampled documents across the six benchmarks. V-SPLADE is **over 20× faster** than caption- or OCR-based text-extraction pipelines for index building.
|
| 65 |
+
|
| 66 |
+
## Quick Start
|
| 67 |
+
|
| 68 |
+
Install (see the [code repository](https://github.com/naver/v-splade) for full instructions):
|
| 69 |
+
|
| 70 |
+
```bash
|
| 71 |
+
git clone https://github.com/naver/v-splade.git
|
| 72 |
+
cd v-splade
|
| 73 |
+
python -m venv .venv && source .venv/bin/activate
|
| 74 |
+
pip install --upgrade pip
|
| 75 |
+
pip install torch torchvision torchaudio \
|
| 76 |
+
--index-url https://download.pytorch.org/whl/cu128
|
| 77 |
+
grep -v -E '^(torch|flash-attn)==' requirements.txt > requirements_filtered.txt
|
| 78 |
+
pip install -r requirements_filtered.txt
|
| 79 |
+
pip install flash-attn==2.8.3 --no-build-isolation --no-cache-dir
|
| 80 |
+
```
|
| 81 |
+
|
| 82 |
+
### Single-image inference (minimal example)
|
| 83 |
+
|
| 84 |
+
The shortest path to seeing V-SPLADE work on your own page image — encode one image into a sparse vocabulary vector, inspect the top-activated tokens, and score a text query against it:
|
| 85 |
+
|
| 86 |
+
```bash
|
| 87 |
+
python examples/quickstart.py \
|
| 88 |
+
--hf_dir naver/v-splade-efficient \
|
| 89 |
+
--image examples/sample_page.png \
|
| 90 |
+
--queries "send signed forms" "records office"
|
| 91 |
+
```
|
| 92 |
+
|
| 93 |
+
Expected output (against the sample page):
|
| 94 |
+
|
| 95 |
+
```
|
| 96 |
+
[2/3] Encoding image: examples/sample_page.png
|
| 97 |
+
sparse vector shape=(50368,) nnz=552 max=1.836
|
| 98 |
+
Top-10 activated tokens:
|
| 99 |
+
1.836 'dog'
|
| 100 |
+
1.672 'dogs'
|
| 101 |
+
1.586 'puppy'
|
| 102 |
+
1.570 'Records'
|
| 103 |
+
1.523 'Bennett'
|
| 104 |
+
...
|
| 105 |
+
[3/3] Query-image similarity scores
|
| 106 |
+
score= 0.997 query='send signed forms'
|
| 107 |
+
top matches: forms(0.438), send(0.403), signed(0.156)
|
| 108 |
+
score= 0.594 query='records office'
|
| 109 |
+
top matches: office(0.594)
|
| 110 |
+
```
|
| 111 |
+
|
| 112 |
+
## License
|
| 113 |
+
|
| 114 |
+
This model and the accompanying code are released under the **Apache License 2.0**. See `LICENSE` in the repository for the full text.
|
| 115 |
+
|
| 116 |
+
Base model ([ModernVBERT/modernvbert](https://huggingface.co/ModernVBERT/modernvbert)) and caption generator ([Qwen3-VL-30B-A3B](https://huggingface.co/Qwen/Qwen3-VL-30B-A3B-Instruct)) are subject to their own licenses; please review them before redistribution or commercial use.
|
| 117 |
+
|
| 118 |
+
**Training data.** This model was trained on [vidore/colpali_train_set](https://huggingface.co/datasets/vidore/colpali_train_set) and [rlhn/rlhn-680K](https://huggingface.co/datasets/rlhn/rlhn-680K). `rlhn/rlhn-680K` is distributed under **CC BY-SA 4.0**. `vidore/colpali_train_set` is a collection of multiple source datasets, each of which remains under its own original license.
|
| 119 |
+
|
| 120 |
+
## Citation
|
| 121 |
+
|
| 122 |
+
```bibtex
|
| 123 |
+
@misc{cho2026vsplade,
|
| 124 |
+
title = {Inference-Free Multimodal Learned Sparse Retrieval for Production-Scale Visual Document Search},
|
| 125 |
+
author = {Cho, Gyu-Hwung and Lee, Youngjune and Jeong, Kiyoon and Lee, Siyoung and Han, Sanggyu and Dejean, Herv{\'e} and Clinchant, St{\'e}phane and Hwang, Seung-won},
|
| 126 |
+
year = {2026},
|
| 127 |
+
eprint = {2605.30917},
|
| 128 |
+
archivePrefix = {arXiv},
|
| 129 |
+
primaryClass = {cs.IR}
|
| 130 |
+
}
|
| 131 |
+
```
|
| 132 |
+
|
| 133 |
+
## Authors
|
| 134 |
+
|
| 135 |
+
Gyu-Hwung Cho (NAVER Corp. & Seoul National University), Youngjune Lee, Kiyoon Jeong, Siyoung Lee, Sanggyu Han (NAVER Corp.), Hervé Dejean, Stéphane Clinchant (Naver Labs Europe), Seung-won Hwang (Seoul National University, corresponding).
|
| 136 |
+
|
| 137 |
+
## Contact
|
| 138 |
+
|
| 139 |
+
Issues and pull requests welcome at [github.com/naver/v-splade](https://github.com/naver/v-splade). For research questions, contact the author at `gyuhwung.cho@navercorp.com`.
|
chat_template.json
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"chat_template": "{% for message in messages %}{{message['role'] | capitalize}}{% if message['content'][0]['type'] == 'image' %}{{':'}}{% else %}{{': '}}{% endif %}{% for line in message['content'] %}{% if line['type'] == 'text' %}{{line['text']}}{% elif line['type'] == 'image' %}{{ '<image>' }}{% endif %}{% endfor %}{% if add_generation_prompt %}<end_of_utterance>\n{% endif %}{% endfor %}{% if add_generation_prompt %}{{ 'Assistant:' }}{% endif %}"
|
| 3 |
+
}
|
config.json
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"image_token_id": 50407,
|
| 3 |
+
"initializer_range": 0.02,
|
| 4 |
+
"model_type": "modernvbert",
|
| 5 |
+
"pixel_shuffle_factor": 4,
|
| 6 |
+
"text_config": {
|
| 7 |
+
"_name_or_path": "ettin-encoder-150m",
|
| 8 |
+
"architectures": [
|
| 9 |
+
"ModernBertForMaskedLM"
|
| 10 |
+
],
|
| 11 |
+
"attention_bias": false,
|
| 12 |
+
"attention_dropout": 0.0,
|
| 13 |
+
"causal_mask": false,
|
| 14 |
+
"classifier_activation": "gelu",
|
| 15 |
+
"classifier_bias": false,
|
| 16 |
+
"classifier_dropout": 0.0,
|
| 17 |
+
"classifier_pooling": "mean",
|
| 18 |
+
"cls_token_id": 50281,
|
| 19 |
+
"decoder_bias": true,
|
| 20 |
+
"deterministic_flash_attn": false,
|
| 21 |
+
"dtype": "float32",
|
| 22 |
+
"embedding_dropout": 0.0,
|
| 23 |
+
"global_attn_every_n_layers": 3,
|
| 24 |
+
"global_rope_theta": 160000.0,
|
| 25 |
+
"gradient_checkpointing": false,
|
| 26 |
+
"hidden_activation": "gelu",
|
| 27 |
+
"hidden_size": 768,
|
| 28 |
+
"initializer_cutoff_factor": 2.0,
|
| 29 |
+
"initializer_range": 0.02,
|
| 30 |
+
"intermediate_size": 1152,
|
| 31 |
+
"is_causal": false,
|
| 32 |
+
"layer_norm_eps": 1e-05,
|
| 33 |
+
"layer_types": [
|
| 34 |
+
"full_attention",
|
| 35 |
+
"sliding_attention",
|
| 36 |
+
"sliding_attention",
|
| 37 |
+
"full_attention",
|
| 38 |
+
"sliding_attention",
|
| 39 |
+
"sliding_attention",
|
| 40 |
+
"full_attention",
|
| 41 |
+
"sliding_attention",
|
| 42 |
+
"sliding_attention",
|
| 43 |
+
"full_attention",
|
| 44 |
+
"sliding_attention",
|
| 45 |
+
"sliding_attention",
|
| 46 |
+
"full_attention",
|
| 47 |
+
"sliding_attention",
|
| 48 |
+
"sliding_attention",
|
| 49 |
+
"full_attention",
|
| 50 |
+
"sliding_attention",
|
| 51 |
+
"sliding_attention",
|
| 52 |
+
"full_attention",
|
| 53 |
+
"sliding_attention",
|
| 54 |
+
"sliding_attention",
|
| 55 |
+
"full_attention"
|
| 56 |
+
],
|
| 57 |
+
"local_attention": 128,
|
| 58 |
+
"local_rope_theta": 160000.0,
|
| 59 |
+
"max_position_embeddings": 7999,
|
| 60 |
+
"mlp_bias": false,
|
| 61 |
+
"mlp_dropout": 0.0,
|
| 62 |
+
"model_type": "modernbert",
|
| 63 |
+
"norm_bias": false,
|
| 64 |
+
"norm_eps": 1e-05,
|
| 65 |
+
"num_attention_heads": 12,
|
| 66 |
+
"num_hidden_layers": 22,
|
| 67 |
+
"position_embedding_type": "sans_pos",
|
| 68 |
+
"repad_logits_with_grad": false,
|
| 69 |
+
"rope_parameters": {
|
| 70 |
+
"full_attention": {
|
| 71 |
+
"rope_theta": 160000.0,
|
| 72 |
+
"rope_type": "default"
|
| 73 |
+
},
|
| 74 |
+
"sliding_attention": {
|
| 75 |
+
"rope_theta": 160000.0,
|
| 76 |
+
"rope_type": "default"
|
| 77 |
+
}
|
| 78 |
+
},
|
| 79 |
+
"sparse_pred_ignore_index": -100,
|
| 80 |
+
"sparse_prediction": false,
|
| 81 |
+
"vocab_size": 50408
|
| 82 |
+
},
|
| 83 |
+
"transformers_version": "5.0.0.dev0",
|
| 84 |
+
"vision_config": {
|
| 85 |
+
"attention_dropout": 0.0,
|
| 86 |
+
"hidden_act": "gelu_pytorch_tanh",
|
| 87 |
+
"hidden_size": 768,
|
| 88 |
+
"image_size": 512,
|
| 89 |
+
"intermediate_size": 3072,
|
| 90 |
+
"layer_norm_eps": 1e-06,
|
| 91 |
+
"model_type": "siglip_vision_model",
|
| 92 |
+
"num_attention_heads": 12,
|
| 93 |
+
"num_channels": 3,
|
| 94 |
+
"num_hidden_layers": 12,
|
| 95 |
+
"patch_size": 16
|
| 96 |
+
},
|
| 97 |
+
"tie_word_embeddings": false,
|
| 98 |
+
"architectures": [
|
| 99 |
+
"BiModernVBert"
|
| 100 |
+
],
|
| 101 |
+
"freeze_config": {
|
| 102 |
+
"freeze_lm_head": true,
|
| 103 |
+
"freeze_text_layers": true,
|
| 104 |
+
"freeze_vision_layers": true
|
| 105 |
+
},
|
| 106 |
+
"additional_vocab_size": 40
|
| 107 |
+
}
|
configuration_modernvbert.py
ADDED
|
@@ -0,0 +1,225 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# 🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨
|
| 2 |
+
# This file was automatically generated from src/transformers/models/modernvbert/modular_modernvbert.py.
|
| 3 |
+
# Do NOT edit this file manually as any edits will be overwritten by the generation of
|
| 4 |
+
# the file from the modular. If any change should be done, please apply the change to the
|
| 5 |
+
# modular_modernvbert.py file directly. One of our CI enforces this.
|
| 6 |
+
# 🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨
|
| 7 |
+
import os
|
| 8 |
+
from typing import Any, Union
|
| 9 |
+
|
| 10 |
+
from ...configuration_utils import PretrainedConfig
|
| 11 |
+
from ..modernbert import ModernBertConfig
|
| 12 |
+
from ..siglip import SiglipConfig
|
| 13 |
+
|
| 14 |
+
|
| 15 |
+
class ModernVBertTextConfig(PretrainedConfig):
|
| 16 |
+
r"""
|
| 17 |
+
This is the configuration class to store the configuration of a [`ModernBERT`]. It is used to instantiate an ModernBERT
|
| 18 |
+
model according to the specified arguments, defining the model architecture. Instantiating a configuration with the
|
| 19 |
+
defaults will yield a similar configuration to that of the [jhu-clsp/ettin-encoder-150m](https://huggingface.co/jhu-clsp/ettin-encoder-150m) architecture.
|
| 20 |
+
|
| 21 |
+
Configuration objects inherit from [`PretrainedConfig`] and can be used to control the model outputs. Read the
|
| 22 |
+
documentation from [`PretrainedConfig`] for more information.
|
| 23 |
+
"""
|
| 24 |
+
|
| 25 |
+
model_type = "modernvbert_text"
|
| 26 |
+
|
| 27 |
+
def __init__(
|
| 28 |
+
self,
|
| 29 |
+
text_model_name="jhu-clsp/ettin-encoder-150m",
|
| 30 |
+
hidden_size=768,
|
| 31 |
+
num_hidden_layers=22,
|
| 32 |
+
intermediate_size=1152,
|
| 33 |
+
mlp_bias=False,
|
| 34 |
+
vocab_size=50368,
|
| 35 |
+
**kwargs,
|
| 36 |
+
):
|
| 37 |
+
super().__init__(
|
| 38 |
+
text_model_name=text_model_name,
|
| 39 |
+
hidden_size=hidden_size,
|
| 40 |
+
num_hidden_layers=num_hidden_layers,
|
| 41 |
+
intermediate_size=intermediate_size,
|
| 42 |
+
mlp_bias=mlp_bias,
|
| 43 |
+
vocab_size=vocab_size,
|
| 44 |
+
**kwargs,
|
| 45 |
+
)
|
| 46 |
+
|
| 47 |
+
@classmethod
|
| 48 |
+
def from_base_model(
|
| 49 |
+
cls,
|
| 50 |
+
text_model_name,
|
| 51 |
+
**kwargs,
|
| 52 |
+
):
|
| 53 |
+
text_config = ModernBertConfig.from_pretrained(text_model_name)
|
| 54 |
+
if hasattr(text_config, "text_config"):
|
| 55 |
+
text_config = text_config.text_config
|
| 56 |
+
|
| 57 |
+
return cls(
|
| 58 |
+
text_model_name=text_model_name,
|
| 59 |
+
hidden_size=text_config.hidden_size,
|
| 60 |
+
num_hidden_layers=text_config.num_hidden_layers,
|
| 61 |
+
intermediate_size=text_config.intermediate_size,
|
| 62 |
+
mlp_bias=text_config.mlp_bias,
|
| 63 |
+
vocab_size=text_config.vocab_size,
|
| 64 |
+
**kwargs,
|
| 65 |
+
)
|
| 66 |
+
|
| 67 |
+
|
| 68 |
+
class ModernVBertVisionConfig(PretrainedConfig):
|
| 69 |
+
r"""
|
| 70 |
+
This is the configuration class to store the configuration of a [`SigLIP`]. It is used to instantiate the vision encoder part of the ModernVBERT
|
| 71 |
+
model according to the specified arguments, defining the model architecture. Instantiating a configuration with the
|
| 72 |
+
defaults will yield a similar configuration to that of the SigLIP.
|
| 73 |
+
|
| 74 |
+
Configuration objects inherit from [`PretrainedConfig`] and can be used to control the model outputs. Read the
|
| 75 |
+
documentation from [`PretrainedConfig`] for more information.
|
| 76 |
+
"""
|
| 77 |
+
|
| 78 |
+
model_type = "modernvbert_vision"
|
| 79 |
+
|
| 80 |
+
attribute_map = {
|
| 81 |
+
"hidden_size": "embed_dim",
|
| 82 |
+
}
|
| 83 |
+
|
| 84 |
+
def __init__(
|
| 85 |
+
self,
|
| 86 |
+
vision_model_name="google/siglip2-base-patch16-512",
|
| 87 |
+
embed_dim=768,
|
| 88 |
+
image_size=512,
|
| 89 |
+
patch_size=16,
|
| 90 |
+
num_hidden_layers=12,
|
| 91 |
+
intermediate_size=3072,
|
| 92 |
+
**kwargs,
|
| 93 |
+
):
|
| 94 |
+
super().__init__(
|
| 95 |
+
vision_model_name=vision_model_name,
|
| 96 |
+
embed_dim=embed_dim,
|
| 97 |
+
image_size=image_size,
|
| 98 |
+
patch_size=patch_size,
|
| 99 |
+
num_hidden_layers=num_hidden_layers,
|
| 100 |
+
intermediate_size=intermediate_size,
|
| 101 |
+
**kwargs,
|
| 102 |
+
)
|
| 103 |
+
|
| 104 |
+
@classmethod
|
| 105 |
+
def from_base_model(
|
| 106 |
+
cls,
|
| 107 |
+
vision_model_name,
|
| 108 |
+
**kwargs,
|
| 109 |
+
):
|
| 110 |
+
vision_config = SiglipConfig.from_pretrained(vision_model_name)
|
| 111 |
+
if hasattr(vision_config, "vision_config"):
|
| 112 |
+
vision_config = vision_config.vision_config
|
| 113 |
+
|
| 114 |
+
return cls(
|
| 115 |
+
vision_model_name=vision_model_name,
|
| 116 |
+
embed_dim=vision_config.hidden_size,
|
| 117 |
+
image_size=vision_config.image_size,
|
| 118 |
+
patch_size=vision_config.patch_size,
|
| 119 |
+
num_hidden_layers=vision_config.num_hidden_layers,
|
| 120 |
+
intermediate_size=vision_config.intermediate_size,
|
| 121 |
+
**kwargs,
|
| 122 |
+
)
|
| 123 |
+
|
| 124 |
+
|
| 125 |
+
class ModernVBertConfig(PretrainedConfig):
|
| 126 |
+
r"""
|
| 127 |
+
This is the configuration class to store the configuration of a `ModernVBert` model. It is used to
|
| 128 |
+
instantiate a ModernVBert model according to the specified arguments and defines the model architecture.
|
| 129 |
+
|
| 130 |
+
Configuration objects inherit from [`PretrainedConfig`] and can be used to control the model outputs.
|
| 131 |
+
See the documentation for [`PretrainedConfig`] for more details.
|
| 132 |
+
|
| 133 |
+
Args:
|
| 134 |
+
text_config (`PretrainedConfig` or `dict`, optional):
|
| 135 |
+
Custom text config or a dict with a `text_model_name` key for the text encoder. If `None`, the
|
| 136 |
+
default text backbone defined by `DEFAULT_TEXT_MODEL_NAME` is used.
|
| 137 |
+
vision_config (`PretrainedConfig` or `dict`, optional):
|
| 138 |
+
Custom vision config or a dict with a `vision_model_name` key for the vision encoder. If `None`, the
|
| 139 |
+
default vision backbone defined by `DEFAULT_VISION_MODEL_NAME` is used.
|
| 140 |
+
image_token_id (`int`, optional, defaults to 128257):
|
| 141 |
+
Token id reserved for image tokens inserted into the text stream.
|
| 142 |
+
vocab_size (`int`, optional, defaults to 128256):
|
| 143 |
+
Vocabulary size used by the text embeddings.
|
| 144 |
+
tie_word_embeddings (`bool`, optional, defaults to `False`):
|
| 145 |
+
Whether to tie input token embeddings and output token embeddings.
|
| 146 |
+
pixel_shuffle_factor (`int`, optional, defaults to 4):
|
| 147 |
+
Scale factor used by any pixel-shuffle / upsampling operations in the vision head.
|
| 148 |
+
additional_vocab_size (`int`, optional, defaults to 0):
|
| 149 |
+
Number of extra tokens appended to the base vocabulary (useful for adapters / special tokens).
|
| 150 |
+
pad_token_id (`int`, optional):
|
| 151 |
+
Padding token id.
|
| 152 |
+
initializer_range (`float`, optional, defaults to 0.02):
|
| 153 |
+
Stddev used for weight initialization.
|
| 154 |
+
|
| 155 |
+
Example:
|
| 156 |
+
```python
|
| 157 |
+
>>> from modernvbert import ModernVBertConfig
|
| 158 |
+
|
| 159 |
+
>>> # Initializing configuration
|
| 160 |
+
>>> configuration = ModernVBertConfig()
|
| 161 |
+
|
| 162 |
+
>>> # Initializing a model from the configuration (model class is implemented in
|
| 163 |
+
>>> # `modernvbert.modeling_modernvbert`)
|
| 164 |
+
|
| 165 |
+
>>> from modernvbert import ModernVBertModel
|
| 166 |
+
>>> model = ModernVBertModel(configuration)
|
| 167 |
+
|
| 168 |
+
>>> # Accessing the model configuration
|
| 169 |
+
>>> cfg = model.config
|
| 170 |
+
```"""
|
| 171 |
+
|
| 172 |
+
model_type = "modernvbert"
|
| 173 |
+
sub_configs: dict[str, Any] = {"text_config": ModernVBertTextConfig, "vision_config": ModernVBertVisionConfig}
|
| 174 |
+
|
| 175 |
+
def __init__(
|
| 176 |
+
self,
|
| 177 |
+
text_config=None,
|
| 178 |
+
vision_config=None,
|
| 179 |
+
image_token_id: int = 50407,
|
| 180 |
+
initializer_range=0.02,
|
| 181 |
+
vocab_size=50368,
|
| 182 |
+
pad_token_id=None,
|
| 183 |
+
pixel_shuffle_factor=4,
|
| 184 |
+
additional_vocab_size=0,
|
| 185 |
+
**kwargs,
|
| 186 |
+
):
|
| 187 |
+
super().__init__(**kwargs)
|
| 188 |
+
|
| 189 |
+
if text_config is None:
|
| 190 |
+
text_config = self.sub_configs["text_config"].from_base_model("jhu-clsp/ettin-encoder-150m")
|
| 191 |
+
elif isinstance(text_config, dict):
|
| 192 |
+
text_config = self.sub_configs["text_config"].from_dict(text_config)
|
| 193 |
+
self.text_config = text_config
|
| 194 |
+
|
| 195 |
+
if vision_config is None:
|
| 196 |
+
vision_config = self.sub_configs["vision_config"].from_base_model("google/siglip2-base-patch16-512")
|
| 197 |
+
elif isinstance(vision_config, dict):
|
| 198 |
+
vision_config = self.sub_configs["vision_config"].from_dict(vision_config)
|
| 199 |
+
self.vision_config = vision_config
|
| 200 |
+
|
| 201 |
+
self.initializer_range = initializer_range
|
| 202 |
+
self.image_token_id = image_token_id
|
| 203 |
+
self.pad_token_id = pad_token_id
|
| 204 |
+
self.pixel_shuffle_factor = pixel_shuffle_factor
|
| 205 |
+
self.vocab_size = vocab_size
|
| 206 |
+
self.additional_vocab_size = additional_vocab_size
|
| 207 |
+
self.hidden_size = kwargs.pop("hidden_size", self.text_config.hidden_size)
|
| 208 |
+
|
| 209 |
+
@classmethod
|
| 210 |
+
def from_pretrained_models(
|
| 211 |
+
cls,
|
| 212 |
+
text_model_name: Union[str, os.PathLike],
|
| 213 |
+
vision_model_name: Union[str, os.PathLike],
|
| 214 |
+
**kwargs,
|
| 215 |
+
) -> "PretrainedConfig":
|
| 216 |
+
text_model_config = ModernVBertTextConfig.from_base_model(text_model_name)
|
| 217 |
+
vision_model_config = ModernVBertVisionConfig.from_base_model(vision_model_name)
|
| 218 |
+
return cls(
|
| 219 |
+
text_config=text_model_config,
|
| 220 |
+
vision_config=vision_model_config,
|
| 221 |
+
**kwargs,
|
| 222 |
+
)
|
| 223 |
+
|
| 224 |
+
|
| 225 |
+
__all__ = ["ModernVBertConfig", "ModernVBertTextConfig", "ModernVBertVisionConfig"]
|
model.safetensors
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:98267e6f8b102a88667dec368ae8247d9d0fd7c60a5ce59053474331f72a84ff
|
| 3 |
+
size 660070138
|
modeling_modernvbert.py
ADDED
|
@@ -0,0 +1,610 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# 🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨
|
| 2 |
+
# This file was automatically generated from src/transformers/models/modernvbert/modular_modernvbert.py.
|
| 3 |
+
# Do NOT edit this file manually as any edits will be overwritten by the generation of
|
| 4 |
+
# the file from the modular. If any change should be done, please apply the change to the
|
| 5 |
+
# modular_modernvbert.py file directly. One of our CI enforces this.
|
| 6 |
+
# 🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨
|
| 7 |
+
from dataclasses import dataclass
|
| 8 |
+
from typing import Optional, Union
|
| 9 |
+
|
| 10 |
+
import torch
|
| 11 |
+
import torch.nn as nn
|
| 12 |
+
import torch.nn.functional as F
|
| 13 |
+
from torch.nn import CrossEntropyLoss
|
| 14 |
+
|
| 15 |
+
from ...modeling_flash_attention_utils import FlashAttentionKwargs
|
| 16 |
+
from ...modeling_outputs import BaseModelOutput, BaseModelOutputWithPoolingAndCrossAttentions, MaskedLMOutput
|
| 17 |
+
from ...modeling_utils import PreTrainedModel
|
| 18 |
+
from ...processing_utils import Unpack
|
| 19 |
+
from ...utils import auto_docstring, can_return_tuple
|
| 20 |
+
from ..modernbert import ModernBertConfig, ModernBertForMaskedLM, ModernBertModel
|
| 21 |
+
from ..siglip import SiglipVisionConfig, SiglipVisionModel
|
| 22 |
+
from .configuration_modernvbert import ModernVBertConfig
|
| 23 |
+
|
| 24 |
+
|
| 25 |
+
class DecoupledEmbedding(nn.Embedding):
|
| 26 |
+
# Derived from https://pytorch.org/docs/stable/_modules/torch/nn/modules/sparse.html#Embedding
|
| 27 |
+
"""
|
| 28 |
+
Implements a decoupling of parameters to allow freezing (or not) a subset of the embeddings.
|
| 29 |
+
In practise, the regular `weight` can be trained or frozen (i.e. `partially_freeze=True`), and if `num_additional_embeddings` > 0, then it will create `num_additional_embeddings` additional parameters that are always trained.
|
| 30 |
+
If `num_additional_embeddings=0`, then the module defaults back to the regular behavior of `nn.Embedding`.
|
| 31 |
+
"""
|
| 32 |
+
|
| 33 |
+
def __init__(
|
| 34 |
+
self,
|
| 35 |
+
num_embeddings,
|
| 36 |
+
num_additional_embeddings,
|
| 37 |
+
embedding_dim,
|
| 38 |
+
partially_freeze=False,
|
| 39 |
+
device=None,
|
| 40 |
+
dtype=None,
|
| 41 |
+
padding_idx=None,
|
| 42 |
+
**kwargs,
|
| 43 |
+
) -> None:
|
| 44 |
+
"""
|
| 45 |
+
num_additional_embeddings: int. Number of additional embeddings. Only useful when you `partially_freeze=True`.
|
| 46 |
+
partially_freeze: bool. If True, the regular `weight` will be frozen. `additional_weight` is never frozen.
|
| 47 |
+
|
| 48 |
+
Note: there are a lot of other parameters to initialize a standard `nn.Embedding` such as `padding_idx`, `max_norm` or `norm_type`. We are not supporting these.
|
| 49 |
+
"""
|
| 50 |
+
if padding_idx is not None and padding_idx > num_embeddings:
|
| 51 |
+
raise ValueError(f"padding_idx must be within num_embeddings. Got {padding_idx} and {num_embeddings}")
|
| 52 |
+
|
| 53 |
+
super().__init__(
|
| 54 |
+
num_embeddings=num_embeddings,
|
| 55 |
+
embedding_dim=embedding_dim,
|
| 56 |
+
device=device,
|
| 57 |
+
dtype=dtype,
|
| 58 |
+
padding_idx=padding_idx,
|
| 59 |
+
**kwargs,
|
| 60 |
+
)
|
| 61 |
+
self.num_embeddings = num_embeddings
|
| 62 |
+
self.num_additional_embeddings = num_additional_embeddings
|
| 63 |
+
self.partially_freeze = partially_freeze
|
| 64 |
+
|
| 65 |
+
if partially_freeze:
|
| 66 |
+
self.weight.requires_grad_(False)
|
| 67 |
+
|
| 68 |
+
if self.num_additional_embeddings > 0:
|
| 69 |
+
self.additional_embedding = nn.Embedding(
|
| 70 |
+
num_embeddings=num_additional_embeddings,
|
| 71 |
+
embedding_dim=embedding_dim,
|
| 72 |
+
device=device,
|
| 73 |
+
dtype=dtype,
|
| 74 |
+
)
|
| 75 |
+
|
| 76 |
+
def forward(self, input_ids):
|
| 77 |
+
"""
|
| 78 |
+
we have 2 embeddings, with different indices - one pretrained self.weight and another
|
| 79 |
+
self.additional_embedding.weight that is being trained.
|
| 80 |
+
|
| 81 |
+
in order to make a lookup of the input ids, we:
|
| 82 |
+
1. find out the indices of the entries belonging to the 2nd embedding
|
| 83 |
+
2. extract those values while subtracting the size of the first embedding (num_embeddings),
|
| 84 |
+
since the 2nd embedding starts from 0 and not num_embeddings
|
| 85 |
+
3. perform the 2nd embedding lookup
|
| 86 |
+
4. now we handle the 1st embedding, we overwrite indices belonging to the 2nd embedding with a padding index
|
| 87 |
+
5. perform the 1st embedding lookup
|
| 88 |
+
6. now we overwrite the values in the 1st embedding lookup with the values of the 2nd embedding lookup
|
| 89 |
+
|
| 90 |
+
note: for the 1st embedding lookup we could have looked up only the low indices and not do
|
| 91 |
+
the padding, but then we have to create a new tensor and populate it with 2 tensors that are
|
| 92 |
+
spread out across various indices - i.e. not a simple concat - I haven't benchmarked the
|
| 93 |
+
complex case if it's any faster, given that seqlens are usually relatively short it's
|
| 94 |
+
probably not faster or if faster not by much - but might be a good idea to measure.
|
| 95 |
+
|
| 96 |
+
"""
|
| 97 |
+
if self.num_additional_embeddings == 0:
|
| 98 |
+
return super().forward(input_ids)
|
| 99 |
+
|
| 100 |
+
input_ids = input_ids.clone()
|
| 101 |
+
additional_vocab_indices = torch.where(input_ids >= self.num_embeddings)
|
| 102 |
+
input_ids_additional_vocab = input_ids[additional_vocab_indices]
|
| 103 |
+
additional_embeddings = self.additional_embedding(input_ids_additional_vocab - self.num_embeddings)
|
| 104 |
+
|
| 105 |
+
# for successful lookup replace input_ids with 0, the results of these will be discarded anyway
|
| 106 |
+
input_ids[additional_vocab_indices] = 0
|
| 107 |
+
full_vector = F.embedding(input_ids, self.weight)
|
| 108 |
+
full_vector[additional_vocab_indices] = additional_embeddings # overwrite the records with high indices
|
| 109 |
+
return full_vector
|
| 110 |
+
|
| 111 |
+
|
| 112 |
+
@dataclass
|
| 113 |
+
class ModernVBertBaseModelOutput(BaseModelOutput):
|
| 114 |
+
"""
|
| 115 |
+
Base class for ModernVBERT model's outputs that may also contain a past key/values (to speed up sequential decoding).
|
| 116 |
+
Args:
|
| 117 |
+
last_hidden_state (`torch.FloatTensor` of shape `(batch_size, sequence_length, hidden_size)`):
|
| 118 |
+
Sequence of hidden-states at the output of the last layer of the model.
|
| 119 |
+
If `past_key_values` is used only the last hidden-state of the sequences of shape `(batch_size, 1,
|
| 120 |
+
hidden_size)` is output.
|
| 121 |
+
hidden_states (`tuple(torch.FloatTensor)`, *optional*, returned when `output_hidden_states=True` is passed or when `config.output_hidden_states=True`):
|
| 122 |
+
Tuple of `torch.FloatTensor` (one for the output of the embeddings, if the model has an embedding layer, +
|
| 123 |
+
one for the output of each layer) of shape `(batch_size, sequence_length, hidden_size)`.
|
| 124 |
+
Hidden-states of the model at the output of each layer plus the optional initial embedding outputs.
|
| 125 |
+
attentions (`tuple(torch.FloatTensor)`, *optional*, returned when `output_attentions=True` is passed or when `config.output_attentions=True`):
|
| 126 |
+
Tuple of `torch.FloatTensor` (one for each layer) of shape `(batch_size, num_heads, sequence_length,
|
| 127 |
+
sequence_length)`.
|
| 128 |
+
Attentions weights after the attention softmax, used to compute the weighted average in the self-attention
|
| 129 |
+
heads.
|
| 130 |
+
image_hidden_states (`tuple(torch.FloatTensor)`, *optional*):
|
| 131 |
+
Tuple of `torch.FloatTensor` (one for the output of the image embeddings, `(batch_size, num_images,
|
| 132 |
+
sequence_length, hidden_size)`.
|
| 133 |
+
image_hidden_states of the model produced by the vision encoder
|
| 134 |
+
"""
|
| 135 |
+
|
| 136 |
+
last_hidden_state: torch.FloatTensor = None
|
| 137 |
+
hidden_states: Optional[tuple[torch.FloatTensor]] = None
|
| 138 |
+
attentions: Optional[tuple[torch.FloatTensor]] = None
|
| 139 |
+
image_hidden_states: Optional[tuple[torch.FloatTensor]] = None
|
| 140 |
+
|
| 141 |
+
|
| 142 |
+
@dataclass
|
| 143 |
+
class ModernVBertMaskedLMOutput(MaskedLMOutput):
|
| 144 |
+
"""
|
| 145 |
+
Base class for ModernVBERT model's outputs that may also contain a past key/values (to speed up sequential decoding).
|
| 146 |
+
Args:
|
| 147 |
+
loss (`torch.FloatTensor`, *optional*, returned when `labels` is provided):
|
| 148 |
+
Masked language modeling (MLM) loss.
|
| 149 |
+
logits (`torch.FloatTensor`):
|
| 150 |
+
Prediction scores of the language modeling head (scores for each vocabulary token before SoftMax).
|
| 151 |
+
hidden_states (`tuple(torch.FloatTensor)`, *optional*, returned when `output_hidden_states=True` is passed or when `config.output_hidden_states=True`):
|
| 152 |
+
Tuple of `torch.FloatTensor` (one for the output of the embeddings, if the model has an embedding layer, +
|
| 153 |
+
one for the output of each layer) of shape `(batch_size, sequence_length, hidden_size)`.
|
| 154 |
+
Hidden-states of the model at the output of each layer plus the optional initial embedding outputs.
|
| 155 |
+
attentions (`tuple(torch.FloatTensor)`, *optional*, returned when `output_attentions=True` is passed or when `config.output_attentions=True`):
|
| 156 |
+
Tuple of `torch.FloatTensor` (one for each layer) of shape `(batch_size, num_heads, sequence_length,
|
| 157 |
+
sequence_length)`.
|
| 158 |
+
Attentions weights after the attention softmax, used to compute the weighted average in the self-attention
|
| 159 |
+
heads.
|
| 160 |
+
image_hidden_states (`tuple(torch.FloatTensor)`, *optional*):
|
| 161 |
+
Tuple of `torch.FloatTensor` (one for the output of the image embeddings, `(batch_size, num_images,
|
| 162 |
+
sequence_length, hidden_size)`.
|
| 163 |
+
image_hidden_states of the model produced by the vision encoder
|
| 164 |
+
"""
|
| 165 |
+
|
| 166 |
+
loss: Optional[torch.FloatTensor] = None
|
| 167 |
+
logits: torch.FloatTensor = None
|
| 168 |
+
hidden_states: Optional[tuple[torch.FloatTensor, ...]] = None
|
| 169 |
+
attentions: Optional[tuple[torch.FloatTensor, ...]] = None
|
| 170 |
+
image_hidden_states: Optional[torch.FloatTensor] = None
|
| 171 |
+
|
| 172 |
+
|
| 173 |
+
class ModernVBertSimpleMLP(nn.Module):
|
| 174 |
+
"""A simple linear projection layer to project the vision hidden states to the text hidden states."""
|
| 175 |
+
|
| 176 |
+
def __init__(self, input_size, output_size):
|
| 177 |
+
super().__init__()
|
| 178 |
+
self.proj = nn.Linear(input_size, output_size, bias=False)
|
| 179 |
+
|
| 180 |
+
def forward(self, x):
|
| 181 |
+
return self.proj(x)
|
| 182 |
+
|
| 183 |
+
|
| 184 |
+
class ModernVBertConnector(nn.Module):
|
| 185 |
+
"""
|
| 186 |
+
Connector module for ModernVBERT. It performs a pixel shuffle operation followed by a linear projection to match the text model's hidden size.
|
| 187 |
+
Based on https://pytorch.org/docs/stable/generated/torch.nn.PixelShuffle.html
|
| 188 |
+
"""
|
| 189 |
+
|
| 190 |
+
def __init__(self, config):
|
| 191 |
+
super().__init__()
|
| 192 |
+
self.pixel_shuffle_factor = config.pixel_shuffle_factor
|
| 193 |
+
self.modality_projection = ModernVBertSimpleMLP(
|
| 194 |
+
input_size=config.vision_config.hidden_size * (config.pixel_shuffle_factor**2),
|
| 195 |
+
output_size=config.text_config.hidden_size,
|
| 196 |
+
)
|
| 197 |
+
|
| 198 |
+
def pixel_shuffle(self, x, pixel_shuffle_factor):
|
| 199 |
+
bsz, seq, embed_dim = x.size()
|
| 200 |
+
height = width = int(seq**0.5)
|
| 201 |
+
x = x.view(bsz, height, width, embed_dim)
|
| 202 |
+
x = x.view(bsz, height, int(width / pixel_shuffle_factor), embed_dim * pixel_shuffle_factor)
|
| 203 |
+
x = x.permute(0, 2, 1, 3)
|
| 204 |
+
x = x.reshape(
|
| 205 |
+
bsz,
|
| 206 |
+
int(width / pixel_shuffle_factor),
|
| 207 |
+
int(height / pixel_shuffle_factor),
|
| 208 |
+
embed_dim * (pixel_shuffle_factor**2),
|
| 209 |
+
)
|
| 210 |
+
x = x.permute(0, 2, 1, 3)
|
| 211 |
+
return x.reshape(bsz, int(seq / (pixel_shuffle_factor**2)), embed_dim * (pixel_shuffle_factor**2))
|
| 212 |
+
|
| 213 |
+
def forward(self, image_hidden_states):
|
| 214 |
+
image_hidden_states = self.pixel_shuffle(image_hidden_states, self.pixel_shuffle_factor)
|
| 215 |
+
return self.modality_projection(image_hidden_states)
|
| 216 |
+
|
| 217 |
+
|
| 218 |
+
class ModernVBertPreTrainedModel(PreTrainedModel):
|
| 219 |
+
config_class = ModernVBertConfig
|
| 220 |
+
base_model_prefix = "model"
|
| 221 |
+
supports_gradient_checkpointing = True
|
| 222 |
+
_supports_flash_attn_2 = True
|
| 223 |
+
_supports_sdpa = True
|
| 224 |
+
|
| 225 |
+
def _init_weights(self, module):
|
| 226 |
+
std = getattr(self.config, "initializer_range", 0.02)
|
| 227 |
+
if isinstance(module, (nn.Linear, nn.Conv2d)):
|
| 228 |
+
module.weight.data.normal_(mean=0.0, std=std)
|
| 229 |
+
if module.bias is not None:
|
| 230 |
+
module.bias.data.zero_()
|
| 231 |
+
elif isinstance(module, nn.Embedding):
|
| 232 |
+
module.weight.data.normal_(mean=0.0, std=std)
|
| 233 |
+
if module.padding_idx is not None:
|
| 234 |
+
module.weight.data[module.padding_idx].zero_()
|
| 235 |
+
|
| 236 |
+
|
| 237 |
+
@auto_docstring
|
| 238 |
+
class ModernVBertModel(ModernVBertPreTrainedModel):
|
| 239 |
+
def __init__(self, config: ModernVBertConfig):
|
| 240 |
+
super().__init__(config)
|
| 241 |
+
|
| 242 |
+
# init components
|
| 243 |
+
self.vision_model = ModernVBertModel.init_vision_model(config)
|
| 244 |
+
self.connector = ModernVBertConnector(config)
|
| 245 |
+
self.text_model = ModernVBertModel.init_language_model(config)
|
| 246 |
+
|
| 247 |
+
# set the correct dtype for vision and text models
|
| 248 |
+
self.vision_model.to(self.dtype)
|
| 249 |
+
self.text_model.to(self.dtype)
|
| 250 |
+
self._use_flash_attention_2 = config._attn_implementation == "flash_attention_2"
|
| 251 |
+
|
| 252 |
+
self.image_seq_len = int(
|
| 253 |
+
((config.vision_config.image_size // config.vision_config.patch_size) ** 2)
|
| 254 |
+
/ (config.pixel_shuffle_factor**2)
|
| 255 |
+
)
|
| 256 |
+
|
| 257 |
+
self.post_init()
|
| 258 |
+
|
| 259 |
+
@staticmethod
|
| 260 |
+
def init_vision_model(config: ModernVBertConfig):
|
| 261 |
+
vision_model_config = SiglipVisionConfig.from_pretrained(
|
| 262 |
+
config.vision_config.vision_model_name,
|
| 263 |
+
_attn_implementation=config._attn_implementation,
|
| 264 |
+
)
|
| 265 |
+
vision_model = SiglipVisionModel(vision_model_config).vision_model
|
| 266 |
+
return vision_model
|
| 267 |
+
|
| 268 |
+
@staticmethod
|
| 269 |
+
def init_language_model(config: ModernVBertConfig):
|
| 270 |
+
text_model_config = ModernBertConfig.from_pretrained(
|
| 271 |
+
config.text_config.text_model_name,
|
| 272 |
+
_attn_implementation=config._attn_implementation,
|
| 273 |
+
)
|
| 274 |
+
text_model = ModernBertModel(text_model_config)
|
| 275 |
+
embed_layer = DecoupledEmbedding(
|
| 276 |
+
num_embeddings=text_model_config.vocab_size,
|
| 277 |
+
num_additional_embeddings=config.additional_vocab_size,
|
| 278 |
+
embedding_dim=config.hidden_size,
|
| 279 |
+
partially_freeze=getattr(config, "freeze_config", {"freeze_text_layers": False})["freeze_text_layers"],
|
| 280 |
+
padding_idx=config.pad_token_id,
|
| 281 |
+
)
|
| 282 |
+
text_model.set_input_embeddings(embed_layer)
|
| 283 |
+
return text_model
|
| 284 |
+
|
| 285 |
+
# Copied from transformers.models.idefics2.modeling_idefics2.Idefics2Model.enable_input_require_grads
|
| 286 |
+
def enable_input_require_grads(self):
|
| 287 |
+
"""
|
| 288 |
+
Enables the gradients for the input embeddings.
|
| 289 |
+
|
| 290 |
+
This is useful for lora when using gradient checkpointing.
|
| 291 |
+
c.f. https://github.com/huggingface/peft/issues/1402#issuecomment-1913675032
|
| 292 |
+
|
| 293 |
+
Override to set output.requires_grad = True for both the decoder's and vision model's embeddings.
|
| 294 |
+
"""
|
| 295 |
+
|
| 296 |
+
def get_lowest_module(module):
|
| 297 |
+
if len(list(module.children())) == 0:
|
| 298 |
+
# If the module has no children, it is a leaf module (e.g., Linear, Conv2d, etc.)
|
| 299 |
+
return module
|
| 300 |
+
else:
|
| 301 |
+
# Recursively call the function on each child module
|
| 302 |
+
return get_lowest_module(list(module.children())[0])
|
| 303 |
+
|
| 304 |
+
def make_inputs_require_grads(module, input, output):
|
| 305 |
+
output.requires_grad_(True)
|
| 306 |
+
|
| 307 |
+
self._text_require_grads_hook = self.get_input_embeddings().register_forward_hook(make_inputs_require_grads)
|
| 308 |
+
self._vision_require_grads_hook = get_lowest_module(self.vision_model).register_forward_hook(
|
| 309 |
+
make_inputs_require_grads
|
| 310 |
+
)
|
| 311 |
+
|
| 312 |
+
# Copied from transformers.models.idefics2.modeling_idefics2.Idefics2Model.disable_input_require_grads
|
| 313 |
+
def disable_input_require_grads(self):
|
| 314 |
+
self._text_require_grads_hook.remove()
|
| 315 |
+
self._vision_require_grads_hook.remove()
|
| 316 |
+
|
| 317 |
+
def get_input_embeddings(self):
|
| 318 |
+
return self.text_model.get_input_embeddings()
|
| 319 |
+
|
| 320 |
+
def set_input_embeddings(self, value):
|
| 321 |
+
self.text_model.set_input_embeddings(value)
|
| 322 |
+
|
| 323 |
+
def get_image_features(
|
| 324 |
+
self, pixel_values: torch.FloatTensor, pixel_attention_mask: Optional[torch.LongTensor] = None
|
| 325 |
+
):
|
| 326 |
+
"""
|
| 327 |
+
Derived from: https://github.com/huggingface/transformers/blob/main/src/transformers/models/smolvlm/modeling_smolvlm.py
|
| 328 |
+
Encodes images into continuous embeddings that can be forwarded to the language model.
|
| 329 |
+
|
| 330 |
+
Args:
|
| 331 |
+
pixel_values (`torch.FloatTensor` of shape `(batch_size, num_channels, image_size, image_size)`):
|
| 332 |
+
The tensors corresponding to the input images.
|
| 333 |
+
pixel_attention_mask (`torch.LongTensor`, *optional*):
|
| 334 |
+
The attention mask indicating padded regions in the image.
|
| 335 |
+
"""
|
| 336 |
+
batch_size, num_images, num_channels, height, width = pixel_values.shape
|
| 337 |
+
pixel_values = pixel_values.to(dtype=self.dtype) # fp16 compatibility
|
| 338 |
+
pixel_values = pixel_values.view(batch_size * num_images, *pixel_values.shape[2:])
|
| 339 |
+
|
| 340 |
+
# Remove padding images - padding images are full 0.
|
| 341 |
+
nb_values_per_image = pixel_values.shape[1:].numel()
|
| 342 |
+
real_images_inds = (pixel_values == 0.0).sum(dim=(-1, -2, -3)) != nb_values_per_image
|
| 343 |
+
|
| 344 |
+
if not any(real_images_inds):
|
| 345 |
+
real_images_inds[0] = True
|
| 346 |
+
|
| 347 |
+
pixel_values = pixel_values[real_images_inds].contiguous()
|
| 348 |
+
# Handle the vision attention mask
|
| 349 |
+
if pixel_attention_mask is None:
|
| 350 |
+
pixel_attention_mask = torch.ones(
|
| 351 |
+
size=[pixel_values.shape[i] for i in (0, 2, 3)],
|
| 352 |
+
dtype=torch.bool,
|
| 353 |
+
device=pixel_values.device,
|
| 354 |
+
)
|
| 355 |
+
else:
|
| 356 |
+
# Remove padding images from the mask
|
| 357 |
+
pixel_attention_mask = pixel_attention_mask.view(batch_size * num_images, *pixel_attention_mask.shape[2:])
|
| 358 |
+
pixel_attention_mask = pixel_attention_mask[real_images_inds].contiguous()
|
| 359 |
+
|
| 360 |
+
patch_size = self.config.vision_config.patch_size
|
| 361 |
+
patches_subgrid = pixel_attention_mask.unfold(dimension=1, size=patch_size, step=patch_size)
|
| 362 |
+
patches_subgrid = patches_subgrid.unfold(dimension=2, size=patch_size, step=patch_size)
|
| 363 |
+
patch_attention_mask = (patches_subgrid.sum(dim=(-1, -2)) > 0).bool()
|
| 364 |
+
|
| 365 |
+
# Get sequence from the vision encoder
|
| 366 |
+
image_hidden_states = self.vision_model(pixel_values=pixel_values, patch_attention_mask=patch_attention_mask)
|
| 367 |
+
image_hidden_states = image_hidden_states.last_hidden_state
|
| 368 |
+
|
| 369 |
+
return image_hidden_states
|
| 370 |
+
|
| 371 |
+
def inputs_merger(self, input_ids, inputs_embeds, image_hidden_states):
|
| 372 |
+
"""Adapted from https://github.com/huggingface/transformers/blob/main/src/transformers/models/smolvlm/modeling_smolvlm.py
|
| 373 |
+
|
| 374 |
+
This method aims at merging the token embeddings with the image hidden states into one single sequence of vectors that are fed to the transformer LM.
|
| 375 |
+
The merging happens as follows:
|
| 376 |
+
- The text token sequence is: `tok_1 tok_2 tok_3 <fake_token_around_image> <image> <image> ... <image> <fake_token_around_image> tok_4`.
|
| 377 |
+
- We get the image hidden states for the image through the vision encoder and that hidden state, after a pixel shuffle operation, is then projected into the text embedding space.
|
| 378 |
+
We thus have a sequence of image hidden states of size (1, image_seq_len, hidden_dim), where 1 is for batch_size of 1 image and hidden_dim is the hidden_dim of the LM transformer.
|
| 379 |
+
- The merging happens so that we obtain the following sequence: `vector_tok_1 vector_tok_2 vector_tok_3 vector_fake_tok_around_image {sequence of image_seq_len image hidden states} vector_fake_toke_around_image vector_tok_4`. That sequence is fed to the LM.
|
| 380 |
+
- To fit the format of that sequence, `input_ids`, `input_embeds`, `attention_mask` are all 3 adapted to insert the image hidden states.
|
| 381 |
+
"""
|
| 382 |
+
|
| 383 |
+
_, patch_size, _ = image_hidden_states.shape
|
| 384 |
+
|
| 385 |
+
if input_ids is None:
|
| 386 |
+
image_mask = inputs_embeds == self.get_input_embeddings()(
|
| 387 |
+
torch.tensor(self.config.image_token_id, dtype=torch.long, device=inputs_embeds.device)
|
| 388 |
+
)
|
| 389 |
+
image_mask = image_mask[..., 0] # slice off the hidden dim
|
| 390 |
+
else:
|
| 391 |
+
image_mask = input_ids == self.config.image_token_id
|
| 392 |
+
|
| 393 |
+
# Assert that the input <image> tokens are valid (i.e. multiple of patch_size)
|
| 394 |
+
num_image_tokens = image_mask.sum(dim=1)
|
| 395 |
+
if not torch.all(num_image_tokens % patch_size == 0):
|
| 396 |
+
raise ValueError("Number of <image> tokens not divisible by patch_size.")
|
| 397 |
+
|
| 398 |
+
blocks_per_sample = num_image_tokens // patch_size
|
| 399 |
+
|
| 400 |
+
offsets = torch.nn.functional.pad(blocks_per_sample.cumsum(dim=0), (1, 0), value=0)
|
| 401 |
+
block_offset = offsets[:-1]
|
| 402 |
+
row_cum = image_mask.cumsum(dim=-1)
|
| 403 |
+
chunk_idx = (row_cum - 1) // patch_size
|
| 404 |
+
local_idx = (row_cum - 1) % patch_size
|
| 405 |
+
block_idx = block_offset.unsqueeze(1) + chunk_idx
|
| 406 |
+
|
| 407 |
+
image_embeds = torch.zeros_like(inputs_embeds)
|
| 408 |
+
image_embeds[image_mask] = image_hidden_states[block_idx[image_mask], local_idx[image_mask], :]
|
| 409 |
+
|
| 410 |
+
return torch.where(image_mask.unsqueeze(-1), image_embeds, inputs_embeds)
|
| 411 |
+
|
| 412 |
+
@can_return_tuple
|
| 413 |
+
@auto_docstring(
|
| 414 |
+
custom_intro="""
|
| 415 |
+
Inputs fed to the model can have an arbitrary number of images. To account for this, pixel_values fed to
|
| 416 |
+
the model have image padding -> (batch_size, max_num_images, 3, max_heights, max_widths) where
|
| 417 |
+
max_num_images is the maximum number of images among the batch_size samples in the batch.
|
| 418 |
+
Padding images are not needed beyond padding the pixel_values at the entrance of the model.
|
| 419 |
+
For efficiency, we only pass through the vision_model's forward the real images by
|
| 420 |
+
discarding the padding images i.e. pixel_values of size (image_batch_size, 3, height, width) where
|
| 421 |
+
image_batch_size would be 7 when num_images_per_sample=[1, 3, 1, 2] and max_num_images would be 3.
|
| 422 |
+
""",
|
| 423 |
+
checkpoint="modernvbert/ModernVBert",
|
| 424 |
+
)
|
| 425 |
+
def forward(
|
| 426 |
+
self,
|
| 427 |
+
input_ids: torch.LongTensor = None,
|
| 428 |
+
attention_mask: Optional[torch.Tensor] = None,
|
| 429 |
+
position_ids: Optional[torch.LongTensor] = None,
|
| 430 |
+
inputs_embeds: Optional[torch.FloatTensor] = None,
|
| 431 |
+
pixel_values: Optional[torch.FloatTensor] = None,
|
| 432 |
+
pixel_attention_mask: Optional[torch.BoolTensor] = None,
|
| 433 |
+
image_hidden_states: Optional[torch.FloatTensor] = None,
|
| 434 |
+
output_attentions: Optional[bool] = None,
|
| 435 |
+
output_hidden_states: Optional[bool] = None,
|
| 436 |
+
return_dict: Optional[bool] = None,
|
| 437 |
+
**kwargs: Unpack[FlashAttentionKwargs],
|
| 438 |
+
) -> Union[tuple, BaseModelOutputWithPoolingAndCrossAttentions]:
|
| 439 |
+
r"""
|
| 440 |
+
pixel_attention_mask (`torch.Tensor` of shape `(batch_size, image_size, image_size)`, *optional*):
|
| 441 |
+
Mask to avoid performing attention on padding pixel indices.
|
| 442 |
+
image_hidden_states (`torch.FloatTensor` of shape `(batch_size, num_channels, image_size, image_size)`):
|
| 443 |
+
The hidden states of the image encoder after modality projection.
|
| 444 |
+
labels (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
|
| 445 |
+
Labels for computing the masked language modeling loss. Indices should either be in `[0, ...,
|
| 446 |
+
config.vocab_size]` or `model.image_token_id`. Tokens with indices set to `model.image_token_id` are
|
| 447 |
+
ignored (masked), the loss is only computed for the tokens with labels in `[0, ..., config.vocab_size]`.
|
| 448 |
+
"""
|
| 449 |
+
output_attentions = output_attentions if output_attentions is not None else self.config.output_attentions
|
| 450 |
+
output_hidden_states = (
|
| 451 |
+
output_hidden_states if output_hidden_states is not None else self.config.output_hidden_states
|
| 452 |
+
)
|
| 453 |
+
return_dict = return_dict if return_dict is not None else self.config.use_return_dict
|
| 454 |
+
|
| 455 |
+
if inputs_embeds is None:
|
| 456 |
+
inputs_embeds = self.text_model.get_input_embeddings()(input_ids).to(input_ids.device)
|
| 457 |
+
|
| 458 |
+
# Images processing
|
| 459 |
+
if pixel_values is not None:
|
| 460 |
+
# Vision encoder pass
|
| 461 |
+
image_hidden_states = self.get_image_features(
|
| 462 |
+
pixel_values=pixel_values, pixel_attention_mask=pixel_attention_mask
|
| 463 |
+
)
|
| 464 |
+
# Modality projection & resampling
|
| 465 |
+
image_hidden_states = self.connector(image_hidden_states)
|
| 466 |
+
|
| 467 |
+
# Merge image and text embeddings
|
| 468 |
+
if image_hidden_states is not None:
|
| 469 |
+
image_hidden_states = image_hidden_states.to(dtype=self.dtype, device=inputs_embeds.device)
|
| 470 |
+
inputs_embeds = self.inputs_merger(
|
| 471 |
+
input_ids=input_ids, inputs_embeds=inputs_embeds, image_hidden_states=image_hidden_states
|
| 472 |
+
)
|
| 473 |
+
|
| 474 |
+
# Language model pass
|
| 475 |
+
outputs = self.text_model(
|
| 476 |
+
inputs_embeds=inputs_embeds,
|
| 477 |
+
attention_mask=attention_mask,
|
| 478 |
+
position_ids=position_ids,
|
| 479 |
+
output_attentions=output_attentions,
|
| 480 |
+
output_hidden_states=output_hidden_states,
|
| 481 |
+
return_dict=return_dict,
|
| 482 |
+
**kwargs,
|
| 483 |
+
)
|
| 484 |
+
|
| 485 |
+
return ModernVBertBaseModelOutput(
|
| 486 |
+
last_hidden_state=outputs.last_hidden_state,
|
| 487 |
+
hidden_states=outputs.hidden_states,
|
| 488 |
+
attentions=outputs.attentions,
|
| 489 |
+
image_hidden_states=image_hidden_states,
|
| 490 |
+
)
|
| 491 |
+
|
| 492 |
+
|
| 493 |
+
class ModernVBertLMHead(nn.Module):
|
| 494 |
+
def __init__(self, config):
|
| 495 |
+
super().__init__()
|
| 496 |
+
pretrained_config = ModernBertConfig.from_pretrained(config.text_config.text_model_name)
|
| 497 |
+
pretrained_model = ModernBertForMaskedLM(pretrained_config)
|
| 498 |
+
self.head = pretrained_model.head
|
| 499 |
+
self.decoder = pretrained_model.decoder
|
| 500 |
+
|
| 501 |
+
def forward(self, hidden_states):
|
| 502 |
+
return self.decoder(self.head(hidden_states))
|
| 503 |
+
|
| 504 |
+
|
| 505 |
+
@auto_docstring
|
| 506 |
+
class ModernVBertForMaskedLM(ModernVBertPreTrainedModel):
|
| 507 |
+
_tied_weights_keys = ["lm_head.decoder.weight", "model.text_model.embeddings.word_embeddings.weight"]
|
| 508 |
+
|
| 509 |
+
def __init__(self, config):
|
| 510 |
+
super().__init__(config)
|
| 511 |
+
self.in_features = config.hidden_size
|
| 512 |
+
self.out_additional_features = config.additional_vocab_size
|
| 513 |
+
self.vocab_size = config.vocab_size
|
| 514 |
+
self.model = ModernVBertModel(config)
|
| 515 |
+
self.lm_head = ModernVBertLMHead(config)
|
| 516 |
+
if self.out_additional_features > 0:
|
| 517 |
+
self.additional_fc = nn.Linear(self.in_features, self.out_additional_features, bias=False)
|
| 518 |
+
self.lm_head.to(self.dtype)
|
| 519 |
+
self.post_init()
|
| 520 |
+
|
| 521 |
+
# Copied from transformers.models.idefics2.modeling_idefics2.Idefics2ForConditionalGeneration.disable_input_require_grads
|
| 522 |
+
def disable_input_require_grads(self):
|
| 523 |
+
self._text_require_grads_hook.remove()
|
| 524 |
+
self._vision_require_grads_hook.remove()
|
| 525 |
+
|
| 526 |
+
@can_return_tuple
|
| 527 |
+
@auto_docstring(
|
| 528 |
+
custom_intro="""
|
| 529 |
+
Inputs fed to the model can have an arbitrary number of images. To account for this, pixel_values fed to
|
| 530 |
+
the model have image padding -> (batch_size, max_num_images, 3, max_heights, max_widths) where
|
| 531 |
+
max_num_images is the maximum number of images among the batch_size samples in the batch.
|
| 532 |
+
Padding images are not needed beyond padding the pixel_values at the entrance of the model.
|
| 533 |
+
For efficiency, we only pass through the vision_model's forward the real images by
|
| 534 |
+
discarding the padding images i.e. pixel_values of size (image_batch_size, 3, height, width) where
|
| 535 |
+
image_batch_size would be 7 when num_images_per_sample=[1, 3, 1, 2] and max_num_images would be 3.
|
| 536 |
+
""",
|
| 537 |
+
checkpoint="modernvbert/ModernVBert",
|
| 538 |
+
)
|
| 539 |
+
def forward(
|
| 540 |
+
self,
|
| 541 |
+
input_ids: torch.LongTensor = None,
|
| 542 |
+
attention_mask: Optional[torch.Tensor] = None,
|
| 543 |
+
position_ids: Optional[torch.LongTensor] = None,
|
| 544 |
+
inputs_embeds: Optional[torch.FloatTensor] = None,
|
| 545 |
+
pixel_values: Optional[torch.FloatTensor] = None,
|
| 546 |
+
pixel_attention_mask: Optional[torch.BoolTensor] = None,
|
| 547 |
+
image_hidden_states: Optional[torch.FloatTensor] = None,
|
| 548 |
+
output_attentions: Optional[bool] = None,
|
| 549 |
+
output_hidden_states: Optional[bool] = None,
|
| 550 |
+
return_dict: Optional[bool] = None,
|
| 551 |
+
labels: Optional[torch.LongTensor] = None,
|
| 552 |
+
**kwargs: Unpack[FlashAttentionKwargs],
|
| 553 |
+
) -> Union[tuple, ModernVBertMaskedLMOutput]:
|
| 554 |
+
r"""
|
| 555 |
+
pixel_attention_mask (`torch.Tensor` of shape `(batch_size, image_size, image_size)`, *optional*):
|
| 556 |
+
Mask to avoid performing attention on padding pixel indices.
|
| 557 |
+
image_hidden_states (`torch.FloatTensor` of shape `(batch_size, num_channels, image_size, image_size)`):
|
| 558 |
+
The hidden states of the image encoder after modality projection.
|
| 559 |
+
labels (`torch.LongTensor` of shape `(batch_size, sequence_length)`, *optional*):
|
| 560 |
+
Labels for computing the masked language modeling loss. Indices should either be in `[0, ...,
|
| 561 |
+
config.vocab_size]` or `model.image_token_id`. Tokens with indices set to `model.image_token_id` are
|
| 562 |
+
ignored (masked), the loss is only computed for the tokens with labels in `[0, ..., config.vocab_size]`.
|
| 563 |
+
"""
|
| 564 |
+
|
| 565 |
+
output_attentions = output_attentions if output_attentions is not None else self.config.output_attentions
|
| 566 |
+
output_hidden_states = (
|
| 567 |
+
output_hidden_states if output_hidden_states is not None else self.config.output_hidden_states
|
| 568 |
+
)
|
| 569 |
+
return_dict = return_dict if return_dict is not None else self.config.use_return_dict
|
| 570 |
+
|
| 571 |
+
outputs = self.model(
|
| 572 |
+
input_ids=input_ids,
|
| 573 |
+
attention_mask=attention_mask,
|
| 574 |
+
position_ids=position_ids,
|
| 575 |
+
inputs_embeds=inputs_embeds,
|
| 576 |
+
pixel_values=pixel_values,
|
| 577 |
+
pixel_attention_mask=pixel_attention_mask,
|
| 578 |
+
image_hidden_states=image_hidden_states,
|
| 579 |
+
output_attentions=output_attentions,
|
| 580 |
+
output_hidden_states=output_hidden_states,
|
| 581 |
+
return_dict=return_dict,
|
| 582 |
+
**kwargs,
|
| 583 |
+
)
|
| 584 |
+
hidden_states = outputs[0]
|
| 585 |
+
|
| 586 |
+
logits = self.lm_head(hidden_states)
|
| 587 |
+
|
| 588 |
+
if self.out_additional_features > 0:
|
| 589 |
+
proj_states = self.lm_head.head(hidden_states)
|
| 590 |
+
additional_features = self.additional_fc(proj_states)
|
| 591 |
+
logits = torch.cat((logits, additional_features), -1)
|
| 592 |
+
|
| 593 |
+
loss = None
|
| 594 |
+
if labels is not None:
|
| 595 |
+
loss = CrossEntropyLoss()(logits.view(-1, self.vocab_size + self.out_additional_features), labels.view(-1))
|
| 596 |
+
|
| 597 |
+
if not return_dict:
|
| 598 |
+
output = (logits,) + outputs[2:]
|
| 599 |
+
return ((loss,) + output) if loss is not None else output
|
| 600 |
+
|
| 601 |
+
return ModernVBertMaskedLMOutput(
|
| 602 |
+
loss=loss,
|
| 603 |
+
logits=logits.float(),
|
| 604 |
+
hidden_states=outputs.hidden_states,
|
| 605 |
+
attentions=outputs.attentions,
|
| 606 |
+
image_hidden_states=outputs.image_hidden_states,
|
| 607 |
+
)
|
| 608 |
+
|
| 609 |
+
|
| 610 |
+
__all__ = ["ModernVBertPreTrainedModel", "ModernVBertModel", "ModernVBertForMaskedLM"]
|
preprocessor_config.json
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"do_convert_rgb": true,
|
| 3 |
+
"do_image_splitting": true,
|
| 4 |
+
"do_normalize": true,
|
| 5 |
+
"do_pad": true,
|
| 6 |
+
"do_rescale": true,
|
| 7 |
+
"do_resize": true,
|
| 8 |
+
"image_mean": [
|
| 9 |
+
0.5,
|
| 10 |
+
0.5,
|
| 11 |
+
0.5
|
| 12 |
+
],
|
| 13 |
+
"image_processor_type": "Idefics3ImageProcessor",
|
| 14 |
+
"image_std": [
|
| 15 |
+
0.5,
|
| 16 |
+
0.5,
|
| 17 |
+
0.5
|
| 18 |
+
],
|
| 19 |
+
"max_image_size": {
|
| 20 |
+
"longest_edge": 512
|
| 21 |
+
},
|
| 22 |
+
"processor_class": "Idefics3Processor",
|
| 23 |
+
"resample": 1,
|
| 24 |
+
"rescale_factor": 0.00392156862745098,
|
| 25 |
+
"size": {
|
| 26 |
+
"longest_edge": 2048
|
| 27 |
+
}
|
| 28 |
+
}
|
processor_config.json
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"image_seq_len": 64,
|
| 3 |
+
"processor_class": "Idefics3Processor"
|
| 4 |
+
}
|
special_tokens_map.json
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"additional_special_tokens": [
|
| 3 |
+
"<global-img>",
|
| 4 |
+
"<row_1_col_1>",
|
| 5 |
+
"<row_1_col_2>",
|
| 6 |
+
"<row_1_col_3>",
|
| 7 |
+
"<row_1_col_4>",
|
| 8 |
+
"<row_1_col_5>",
|
| 9 |
+
"<row_1_col_6>",
|
| 10 |
+
"<row_2_col_1>",
|
| 11 |
+
"<row_2_col_2>",
|
| 12 |
+
"<row_2_col_3>",
|
| 13 |
+
"<row_2_col_4>",
|
| 14 |
+
"<row_2_col_5>",
|
| 15 |
+
"<row_2_col_6>",
|
| 16 |
+
"<row_3_col_1>",
|
| 17 |
+
"<row_3_col_2>",
|
| 18 |
+
"<row_3_col_3>",
|
| 19 |
+
"<row_3_col_4>",
|
| 20 |
+
"<row_3_col_5>",
|
| 21 |
+
"<row_3_col_6>",
|
| 22 |
+
"<row_4_col_1>",
|
| 23 |
+
"<row_4_col_2>",
|
| 24 |
+
"<row_4_col_3>",
|
| 25 |
+
"<row_4_col_4>",
|
| 26 |
+
"<row_4_col_5>",
|
| 27 |
+
"<row_4_col_6>",
|
| 28 |
+
"<row_5_col_1>",
|
| 29 |
+
"<row_5_col_2>",
|
| 30 |
+
"<row_5_col_3>",
|
| 31 |
+
"<row_5_col_4>",
|
| 32 |
+
"<row_5_col_5>",
|
| 33 |
+
"<row_5_col_6>",
|
| 34 |
+
"<row_6_col_1>",
|
| 35 |
+
"<row_6_col_2>",
|
| 36 |
+
"<row_6_col_3>",
|
| 37 |
+
"<row_6_col_4>",
|
| 38 |
+
"<row_6_col_5>",
|
| 39 |
+
"<row_6_col_6>",
|
| 40 |
+
"<end_of_utterance>",
|
| 41 |
+
"<fake_token_around_image>",
|
| 42 |
+
"<image>"
|
| 43 |
+
],
|
| 44 |
+
"cls_token": {
|
| 45 |
+
"content": "[CLS]",
|
| 46 |
+
"lstrip": false,
|
| 47 |
+
"normalized": false,
|
| 48 |
+
"rstrip": false,
|
| 49 |
+
"single_word": false
|
| 50 |
+
},
|
| 51 |
+
"mask_token": {
|
| 52 |
+
"content": "[MASK]",
|
| 53 |
+
"lstrip": true,
|
| 54 |
+
"normalized": false,
|
| 55 |
+
"rstrip": false,
|
| 56 |
+
"single_word": false
|
| 57 |
+
},
|
| 58 |
+
"pad_token": {
|
| 59 |
+
"content": "[PAD]",
|
| 60 |
+
"lstrip": false,
|
| 61 |
+
"normalized": false,
|
| 62 |
+
"rstrip": false,
|
| 63 |
+
"single_word": false
|
| 64 |
+
},
|
| 65 |
+
"sep_token": {
|
| 66 |
+
"content": "[SEP]",
|
| 67 |
+
"lstrip": false,
|
| 68 |
+
"normalized": false,
|
| 69 |
+
"rstrip": false,
|
| 70 |
+
"single_word": false
|
| 71 |
+
},
|
| 72 |
+
"unk_token": {
|
| 73 |
+
"content": "[UNK]",
|
| 74 |
+
"lstrip": false,
|
| 75 |
+
"normalized": false,
|
| 76 |
+
"rstrip": false,
|
| 77 |
+
"single_word": false
|
| 78 |
+
}
|
| 79 |
+
}
|
tokenizer.json
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
tokenizer_config.json
ADDED
|
@@ -0,0 +1,1310 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"added_tokens_decoder": {
|
| 3 |
+
"0": {
|
| 4 |
+
"content": "|||IP_ADDRESS|||",
|
| 5 |
+
"lstrip": false,
|
| 6 |
+
"normalized": true,
|
| 7 |
+
"rstrip": false,
|
| 8 |
+
"single_word": false,
|
| 9 |
+
"special": false
|
| 10 |
+
},
|
| 11 |
+
"1": {
|
| 12 |
+
"content": "<|padding|>",
|
| 13 |
+
"lstrip": false,
|
| 14 |
+
"normalized": false,
|
| 15 |
+
"rstrip": false,
|
| 16 |
+
"single_word": false,
|
| 17 |
+
"special": true
|
| 18 |
+
},
|
| 19 |
+
"50254": {
|
| 20 |
+
"content": " ",
|
| 21 |
+
"lstrip": false,
|
| 22 |
+
"normalized": true,
|
| 23 |
+
"rstrip": false,
|
| 24 |
+
"single_word": false,
|
| 25 |
+
"special": false
|
| 26 |
+
},
|
| 27 |
+
"50255": {
|
| 28 |
+
"content": " ",
|
| 29 |
+
"lstrip": false,
|
| 30 |
+
"normalized": true,
|
| 31 |
+
"rstrip": false,
|
| 32 |
+
"single_word": false,
|
| 33 |
+
"special": false
|
| 34 |
+
},
|
| 35 |
+
"50256": {
|
| 36 |
+
"content": " ",
|
| 37 |
+
"lstrip": false,
|
| 38 |
+
"normalized": true,
|
| 39 |
+
"rstrip": false,
|
| 40 |
+
"single_word": false,
|
| 41 |
+
"special": false
|
| 42 |
+
},
|
| 43 |
+
"50257": {
|
| 44 |
+
"content": " ",
|
| 45 |
+
"lstrip": false,
|
| 46 |
+
"normalized": true,
|
| 47 |
+
"rstrip": false,
|
| 48 |
+
"single_word": false,
|
| 49 |
+
"special": false
|
| 50 |
+
},
|
| 51 |
+
"50258": {
|
| 52 |
+
"content": " ",
|
| 53 |
+
"lstrip": false,
|
| 54 |
+
"normalized": true,
|
| 55 |
+
"rstrip": false,
|
| 56 |
+
"single_word": false,
|
| 57 |
+
"special": false
|
| 58 |
+
},
|
| 59 |
+
"50259": {
|
| 60 |
+
"content": " ",
|
| 61 |
+
"lstrip": false,
|
| 62 |
+
"normalized": true,
|
| 63 |
+
"rstrip": false,
|
| 64 |
+
"single_word": false,
|
| 65 |
+
"special": false
|
| 66 |
+
},
|
| 67 |
+
"50260": {
|
| 68 |
+
"content": " ",
|
| 69 |
+
"lstrip": false,
|
| 70 |
+
"normalized": true,
|
| 71 |
+
"rstrip": false,
|
| 72 |
+
"single_word": false,
|
| 73 |
+
"special": false
|
| 74 |
+
},
|
| 75 |
+
"50261": {
|
| 76 |
+
"content": " ",
|
| 77 |
+
"lstrip": false,
|
| 78 |
+
"normalized": true,
|
| 79 |
+
"rstrip": false,
|
| 80 |
+
"single_word": false,
|
| 81 |
+
"special": false
|
| 82 |
+
},
|
| 83 |
+
"50262": {
|
| 84 |
+
"content": " ",
|
| 85 |
+
"lstrip": false,
|
| 86 |
+
"normalized": true,
|
| 87 |
+
"rstrip": false,
|
| 88 |
+
"single_word": false,
|
| 89 |
+
"special": false
|
| 90 |
+
},
|
| 91 |
+
"50263": {
|
| 92 |
+
"content": " ",
|
| 93 |
+
"lstrip": false,
|
| 94 |
+
"normalized": true,
|
| 95 |
+
"rstrip": false,
|
| 96 |
+
"single_word": false,
|
| 97 |
+
"special": false
|
| 98 |
+
},
|
| 99 |
+
"50264": {
|
| 100 |
+
"content": " ",
|
| 101 |
+
"lstrip": false,
|
| 102 |
+
"normalized": true,
|
| 103 |
+
"rstrip": false,
|
| 104 |
+
"single_word": false,
|
| 105 |
+
"special": false
|
| 106 |
+
},
|
| 107 |
+
"50265": {
|
| 108 |
+
"content": " ",
|
| 109 |
+
"lstrip": false,
|
| 110 |
+
"normalized": true,
|
| 111 |
+
"rstrip": false,
|
| 112 |
+
"single_word": false,
|
| 113 |
+
"special": false
|
| 114 |
+
},
|
| 115 |
+
"50266": {
|
| 116 |
+
"content": " ",
|
| 117 |
+
"lstrip": false,
|
| 118 |
+
"normalized": true,
|
| 119 |
+
"rstrip": false,
|
| 120 |
+
"single_word": false,
|
| 121 |
+
"special": false
|
| 122 |
+
},
|
| 123 |
+
"50267": {
|
| 124 |
+
"content": " ",
|
| 125 |
+
"lstrip": false,
|
| 126 |
+
"normalized": true,
|
| 127 |
+
"rstrip": false,
|
| 128 |
+
"single_word": false,
|
| 129 |
+
"special": false
|
| 130 |
+
},
|
| 131 |
+
"50268": {
|
| 132 |
+
"content": " ",
|
| 133 |
+
"lstrip": false,
|
| 134 |
+
"normalized": true,
|
| 135 |
+
"rstrip": false,
|
| 136 |
+
"single_word": false,
|
| 137 |
+
"special": false
|
| 138 |
+
},
|
| 139 |
+
"50269": {
|
| 140 |
+
"content": " ",
|
| 141 |
+
"lstrip": false,
|
| 142 |
+
"normalized": true,
|
| 143 |
+
"rstrip": false,
|
| 144 |
+
"single_word": false,
|
| 145 |
+
"special": false
|
| 146 |
+
},
|
| 147 |
+
"50270": {
|
| 148 |
+
"content": " ",
|
| 149 |
+
"lstrip": false,
|
| 150 |
+
"normalized": true,
|
| 151 |
+
"rstrip": false,
|
| 152 |
+
"single_word": false,
|
| 153 |
+
"special": false
|
| 154 |
+
},
|
| 155 |
+
"50271": {
|
| 156 |
+
"content": " ",
|
| 157 |
+
"lstrip": false,
|
| 158 |
+
"normalized": true,
|
| 159 |
+
"rstrip": false,
|
| 160 |
+
"single_word": false,
|
| 161 |
+
"special": false
|
| 162 |
+
},
|
| 163 |
+
"50272": {
|
| 164 |
+
"content": " ",
|
| 165 |
+
"lstrip": false,
|
| 166 |
+
"normalized": true,
|
| 167 |
+
"rstrip": false,
|
| 168 |
+
"single_word": false,
|
| 169 |
+
"special": false
|
| 170 |
+
},
|
| 171 |
+
"50273": {
|
| 172 |
+
"content": " ",
|
| 173 |
+
"lstrip": false,
|
| 174 |
+
"normalized": true,
|
| 175 |
+
"rstrip": false,
|
| 176 |
+
"single_word": false,
|
| 177 |
+
"special": false
|
| 178 |
+
},
|
| 179 |
+
"50274": {
|
| 180 |
+
"content": " ",
|
| 181 |
+
"lstrip": false,
|
| 182 |
+
"normalized": true,
|
| 183 |
+
"rstrip": false,
|
| 184 |
+
"single_word": false,
|
| 185 |
+
"special": false
|
| 186 |
+
},
|
| 187 |
+
"50275": {
|
| 188 |
+
"content": " ",
|
| 189 |
+
"lstrip": false,
|
| 190 |
+
"normalized": true,
|
| 191 |
+
"rstrip": false,
|
| 192 |
+
"single_word": false,
|
| 193 |
+
"special": false
|
| 194 |
+
},
|
| 195 |
+
"50276": {
|
| 196 |
+
"content": " ",
|
| 197 |
+
"lstrip": false,
|
| 198 |
+
"normalized": true,
|
| 199 |
+
"rstrip": false,
|
| 200 |
+
"single_word": false,
|
| 201 |
+
"special": false
|
| 202 |
+
},
|
| 203 |
+
"50277": {
|
| 204 |
+
"content": "|||EMAIL_ADDRESS|||",
|
| 205 |
+
"lstrip": false,
|
| 206 |
+
"normalized": true,
|
| 207 |
+
"rstrip": false,
|
| 208 |
+
"single_word": false,
|
| 209 |
+
"special": false
|
| 210 |
+
},
|
| 211 |
+
"50278": {
|
| 212 |
+
"content": "|||PHONE_NUMBER|||",
|
| 213 |
+
"lstrip": false,
|
| 214 |
+
"normalized": true,
|
| 215 |
+
"rstrip": false,
|
| 216 |
+
"single_word": false,
|
| 217 |
+
"special": false
|
| 218 |
+
},
|
| 219 |
+
"50279": {
|
| 220 |
+
"content": "<|endoftext|>",
|
| 221 |
+
"lstrip": false,
|
| 222 |
+
"normalized": false,
|
| 223 |
+
"rstrip": false,
|
| 224 |
+
"single_word": false,
|
| 225 |
+
"special": true
|
| 226 |
+
},
|
| 227 |
+
"50280": {
|
| 228 |
+
"content": "[UNK]",
|
| 229 |
+
"lstrip": false,
|
| 230 |
+
"normalized": false,
|
| 231 |
+
"rstrip": false,
|
| 232 |
+
"single_word": false,
|
| 233 |
+
"special": true
|
| 234 |
+
},
|
| 235 |
+
"50281": {
|
| 236 |
+
"content": "[CLS]",
|
| 237 |
+
"lstrip": false,
|
| 238 |
+
"normalized": false,
|
| 239 |
+
"rstrip": false,
|
| 240 |
+
"single_word": false,
|
| 241 |
+
"special": true
|
| 242 |
+
},
|
| 243 |
+
"50282": {
|
| 244 |
+
"content": "[SEP]",
|
| 245 |
+
"lstrip": false,
|
| 246 |
+
"normalized": false,
|
| 247 |
+
"rstrip": false,
|
| 248 |
+
"single_word": false,
|
| 249 |
+
"special": true
|
| 250 |
+
},
|
| 251 |
+
"50283": {
|
| 252 |
+
"content": "[PAD]",
|
| 253 |
+
"lstrip": false,
|
| 254 |
+
"normalized": false,
|
| 255 |
+
"rstrip": false,
|
| 256 |
+
"single_word": false,
|
| 257 |
+
"special": true
|
| 258 |
+
},
|
| 259 |
+
"50284": {
|
| 260 |
+
"content": "[MASK]",
|
| 261 |
+
"lstrip": true,
|
| 262 |
+
"normalized": false,
|
| 263 |
+
"rstrip": false,
|
| 264 |
+
"single_word": false,
|
| 265 |
+
"special": true
|
| 266 |
+
},
|
| 267 |
+
"50285": {
|
| 268 |
+
"content": "[unused0]",
|
| 269 |
+
"lstrip": false,
|
| 270 |
+
"normalized": true,
|
| 271 |
+
"rstrip": false,
|
| 272 |
+
"single_word": false,
|
| 273 |
+
"special": false
|
| 274 |
+
},
|
| 275 |
+
"50286": {
|
| 276 |
+
"content": "[unused1]",
|
| 277 |
+
"lstrip": false,
|
| 278 |
+
"normalized": true,
|
| 279 |
+
"rstrip": false,
|
| 280 |
+
"single_word": false,
|
| 281 |
+
"special": false
|
| 282 |
+
},
|
| 283 |
+
"50287": {
|
| 284 |
+
"content": "[unused2]",
|
| 285 |
+
"lstrip": false,
|
| 286 |
+
"normalized": true,
|
| 287 |
+
"rstrip": false,
|
| 288 |
+
"single_word": false,
|
| 289 |
+
"special": false
|
| 290 |
+
},
|
| 291 |
+
"50288": {
|
| 292 |
+
"content": "[unused3]",
|
| 293 |
+
"lstrip": false,
|
| 294 |
+
"normalized": true,
|
| 295 |
+
"rstrip": false,
|
| 296 |
+
"single_word": false,
|
| 297 |
+
"special": false
|
| 298 |
+
},
|
| 299 |
+
"50289": {
|
| 300 |
+
"content": "[unused4]",
|
| 301 |
+
"lstrip": false,
|
| 302 |
+
"normalized": true,
|
| 303 |
+
"rstrip": false,
|
| 304 |
+
"single_word": false,
|
| 305 |
+
"special": false
|
| 306 |
+
},
|
| 307 |
+
"50290": {
|
| 308 |
+
"content": "[unused5]",
|
| 309 |
+
"lstrip": false,
|
| 310 |
+
"normalized": true,
|
| 311 |
+
"rstrip": false,
|
| 312 |
+
"single_word": false,
|
| 313 |
+
"special": false
|
| 314 |
+
},
|
| 315 |
+
"50291": {
|
| 316 |
+
"content": "[unused6]",
|
| 317 |
+
"lstrip": false,
|
| 318 |
+
"normalized": true,
|
| 319 |
+
"rstrip": false,
|
| 320 |
+
"single_word": false,
|
| 321 |
+
"special": false
|
| 322 |
+
},
|
| 323 |
+
"50292": {
|
| 324 |
+
"content": "[unused7]",
|
| 325 |
+
"lstrip": false,
|
| 326 |
+
"normalized": true,
|
| 327 |
+
"rstrip": false,
|
| 328 |
+
"single_word": false,
|
| 329 |
+
"special": false
|
| 330 |
+
},
|
| 331 |
+
"50293": {
|
| 332 |
+
"content": "[unused8]",
|
| 333 |
+
"lstrip": false,
|
| 334 |
+
"normalized": true,
|
| 335 |
+
"rstrip": false,
|
| 336 |
+
"single_word": false,
|
| 337 |
+
"special": false
|
| 338 |
+
},
|
| 339 |
+
"50294": {
|
| 340 |
+
"content": "[unused9]",
|
| 341 |
+
"lstrip": false,
|
| 342 |
+
"normalized": true,
|
| 343 |
+
"rstrip": false,
|
| 344 |
+
"single_word": false,
|
| 345 |
+
"special": false
|
| 346 |
+
},
|
| 347 |
+
"50295": {
|
| 348 |
+
"content": "[unused10]",
|
| 349 |
+
"lstrip": false,
|
| 350 |
+
"normalized": true,
|
| 351 |
+
"rstrip": false,
|
| 352 |
+
"single_word": false,
|
| 353 |
+
"special": false
|
| 354 |
+
},
|
| 355 |
+
"50296": {
|
| 356 |
+
"content": "[unused11]",
|
| 357 |
+
"lstrip": false,
|
| 358 |
+
"normalized": true,
|
| 359 |
+
"rstrip": false,
|
| 360 |
+
"single_word": false,
|
| 361 |
+
"special": false
|
| 362 |
+
},
|
| 363 |
+
"50297": {
|
| 364 |
+
"content": "[unused12]",
|
| 365 |
+
"lstrip": false,
|
| 366 |
+
"normalized": true,
|
| 367 |
+
"rstrip": false,
|
| 368 |
+
"single_word": false,
|
| 369 |
+
"special": false
|
| 370 |
+
},
|
| 371 |
+
"50298": {
|
| 372 |
+
"content": "[unused13]",
|
| 373 |
+
"lstrip": false,
|
| 374 |
+
"normalized": true,
|
| 375 |
+
"rstrip": false,
|
| 376 |
+
"single_word": false,
|
| 377 |
+
"special": false
|
| 378 |
+
},
|
| 379 |
+
"50299": {
|
| 380 |
+
"content": "[unused14]",
|
| 381 |
+
"lstrip": false,
|
| 382 |
+
"normalized": true,
|
| 383 |
+
"rstrip": false,
|
| 384 |
+
"single_word": false,
|
| 385 |
+
"special": false
|
| 386 |
+
},
|
| 387 |
+
"50300": {
|
| 388 |
+
"content": "[unused15]",
|
| 389 |
+
"lstrip": false,
|
| 390 |
+
"normalized": true,
|
| 391 |
+
"rstrip": false,
|
| 392 |
+
"single_word": false,
|
| 393 |
+
"special": false
|
| 394 |
+
},
|
| 395 |
+
"50301": {
|
| 396 |
+
"content": "[unused16]",
|
| 397 |
+
"lstrip": false,
|
| 398 |
+
"normalized": true,
|
| 399 |
+
"rstrip": false,
|
| 400 |
+
"single_word": false,
|
| 401 |
+
"special": false
|
| 402 |
+
},
|
| 403 |
+
"50302": {
|
| 404 |
+
"content": "[unused17]",
|
| 405 |
+
"lstrip": false,
|
| 406 |
+
"normalized": true,
|
| 407 |
+
"rstrip": false,
|
| 408 |
+
"single_word": false,
|
| 409 |
+
"special": false
|
| 410 |
+
},
|
| 411 |
+
"50303": {
|
| 412 |
+
"content": "[unused18]",
|
| 413 |
+
"lstrip": false,
|
| 414 |
+
"normalized": true,
|
| 415 |
+
"rstrip": false,
|
| 416 |
+
"single_word": false,
|
| 417 |
+
"special": false
|
| 418 |
+
},
|
| 419 |
+
"50304": {
|
| 420 |
+
"content": "[unused19]",
|
| 421 |
+
"lstrip": false,
|
| 422 |
+
"normalized": true,
|
| 423 |
+
"rstrip": false,
|
| 424 |
+
"single_word": false,
|
| 425 |
+
"special": false
|
| 426 |
+
},
|
| 427 |
+
"50305": {
|
| 428 |
+
"content": "[unused20]",
|
| 429 |
+
"lstrip": false,
|
| 430 |
+
"normalized": true,
|
| 431 |
+
"rstrip": false,
|
| 432 |
+
"single_word": false,
|
| 433 |
+
"special": false
|
| 434 |
+
},
|
| 435 |
+
"50306": {
|
| 436 |
+
"content": "[unused21]",
|
| 437 |
+
"lstrip": false,
|
| 438 |
+
"normalized": true,
|
| 439 |
+
"rstrip": false,
|
| 440 |
+
"single_word": false,
|
| 441 |
+
"special": false
|
| 442 |
+
},
|
| 443 |
+
"50307": {
|
| 444 |
+
"content": "[unused22]",
|
| 445 |
+
"lstrip": false,
|
| 446 |
+
"normalized": true,
|
| 447 |
+
"rstrip": false,
|
| 448 |
+
"single_word": false,
|
| 449 |
+
"special": false
|
| 450 |
+
},
|
| 451 |
+
"50308": {
|
| 452 |
+
"content": "[unused23]",
|
| 453 |
+
"lstrip": false,
|
| 454 |
+
"normalized": true,
|
| 455 |
+
"rstrip": false,
|
| 456 |
+
"single_word": false,
|
| 457 |
+
"special": false
|
| 458 |
+
},
|
| 459 |
+
"50309": {
|
| 460 |
+
"content": "[unused24]",
|
| 461 |
+
"lstrip": false,
|
| 462 |
+
"normalized": true,
|
| 463 |
+
"rstrip": false,
|
| 464 |
+
"single_word": false,
|
| 465 |
+
"special": false
|
| 466 |
+
},
|
| 467 |
+
"50310": {
|
| 468 |
+
"content": "[unused25]",
|
| 469 |
+
"lstrip": false,
|
| 470 |
+
"normalized": true,
|
| 471 |
+
"rstrip": false,
|
| 472 |
+
"single_word": false,
|
| 473 |
+
"special": false
|
| 474 |
+
},
|
| 475 |
+
"50311": {
|
| 476 |
+
"content": "[unused26]",
|
| 477 |
+
"lstrip": false,
|
| 478 |
+
"normalized": true,
|
| 479 |
+
"rstrip": false,
|
| 480 |
+
"single_word": false,
|
| 481 |
+
"special": false
|
| 482 |
+
},
|
| 483 |
+
"50312": {
|
| 484 |
+
"content": "[unused27]",
|
| 485 |
+
"lstrip": false,
|
| 486 |
+
"normalized": true,
|
| 487 |
+
"rstrip": false,
|
| 488 |
+
"single_word": false,
|
| 489 |
+
"special": false
|
| 490 |
+
},
|
| 491 |
+
"50313": {
|
| 492 |
+
"content": "[unused28]",
|
| 493 |
+
"lstrip": false,
|
| 494 |
+
"normalized": true,
|
| 495 |
+
"rstrip": false,
|
| 496 |
+
"single_word": false,
|
| 497 |
+
"special": false
|
| 498 |
+
},
|
| 499 |
+
"50314": {
|
| 500 |
+
"content": "[unused29]",
|
| 501 |
+
"lstrip": false,
|
| 502 |
+
"normalized": true,
|
| 503 |
+
"rstrip": false,
|
| 504 |
+
"single_word": false,
|
| 505 |
+
"special": false
|
| 506 |
+
},
|
| 507 |
+
"50315": {
|
| 508 |
+
"content": "[unused30]",
|
| 509 |
+
"lstrip": false,
|
| 510 |
+
"normalized": true,
|
| 511 |
+
"rstrip": false,
|
| 512 |
+
"single_word": false,
|
| 513 |
+
"special": false
|
| 514 |
+
},
|
| 515 |
+
"50316": {
|
| 516 |
+
"content": "[unused31]",
|
| 517 |
+
"lstrip": false,
|
| 518 |
+
"normalized": true,
|
| 519 |
+
"rstrip": false,
|
| 520 |
+
"single_word": false,
|
| 521 |
+
"special": false
|
| 522 |
+
},
|
| 523 |
+
"50317": {
|
| 524 |
+
"content": "[unused32]",
|
| 525 |
+
"lstrip": false,
|
| 526 |
+
"normalized": true,
|
| 527 |
+
"rstrip": false,
|
| 528 |
+
"single_word": false,
|
| 529 |
+
"special": false
|
| 530 |
+
},
|
| 531 |
+
"50318": {
|
| 532 |
+
"content": "[unused33]",
|
| 533 |
+
"lstrip": false,
|
| 534 |
+
"normalized": true,
|
| 535 |
+
"rstrip": false,
|
| 536 |
+
"single_word": false,
|
| 537 |
+
"special": false
|
| 538 |
+
},
|
| 539 |
+
"50319": {
|
| 540 |
+
"content": "[unused34]",
|
| 541 |
+
"lstrip": false,
|
| 542 |
+
"normalized": true,
|
| 543 |
+
"rstrip": false,
|
| 544 |
+
"single_word": false,
|
| 545 |
+
"special": false
|
| 546 |
+
},
|
| 547 |
+
"50320": {
|
| 548 |
+
"content": "[unused35]",
|
| 549 |
+
"lstrip": false,
|
| 550 |
+
"normalized": true,
|
| 551 |
+
"rstrip": false,
|
| 552 |
+
"single_word": false,
|
| 553 |
+
"special": false
|
| 554 |
+
},
|
| 555 |
+
"50321": {
|
| 556 |
+
"content": "[unused36]",
|
| 557 |
+
"lstrip": false,
|
| 558 |
+
"normalized": true,
|
| 559 |
+
"rstrip": false,
|
| 560 |
+
"single_word": false,
|
| 561 |
+
"special": false
|
| 562 |
+
},
|
| 563 |
+
"50322": {
|
| 564 |
+
"content": "[unused37]",
|
| 565 |
+
"lstrip": false,
|
| 566 |
+
"normalized": true,
|
| 567 |
+
"rstrip": false,
|
| 568 |
+
"single_word": false,
|
| 569 |
+
"special": false
|
| 570 |
+
},
|
| 571 |
+
"50323": {
|
| 572 |
+
"content": "[unused38]",
|
| 573 |
+
"lstrip": false,
|
| 574 |
+
"normalized": true,
|
| 575 |
+
"rstrip": false,
|
| 576 |
+
"single_word": false,
|
| 577 |
+
"special": false
|
| 578 |
+
},
|
| 579 |
+
"50324": {
|
| 580 |
+
"content": "[unused39]",
|
| 581 |
+
"lstrip": false,
|
| 582 |
+
"normalized": true,
|
| 583 |
+
"rstrip": false,
|
| 584 |
+
"single_word": false,
|
| 585 |
+
"special": false
|
| 586 |
+
},
|
| 587 |
+
"50325": {
|
| 588 |
+
"content": "[unused40]",
|
| 589 |
+
"lstrip": false,
|
| 590 |
+
"normalized": true,
|
| 591 |
+
"rstrip": false,
|
| 592 |
+
"single_word": false,
|
| 593 |
+
"special": false
|
| 594 |
+
},
|
| 595 |
+
"50326": {
|
| 596 |
+
"content": "[unused41]",
|
| 597 |
+
"lstrip": false,
|
| 598 |
+
"normalized": true,
|
| 599 |
+
"rstrip": false,
|
| 600 |
+
"single_word": false,
|
| 601 |
+
"special": false
|
| 602 |
+
},
|
| 603 |
+
"50327": {
|
| 604 |
+
"content": "[unused42]",
|
| 605 |
+
"lstrip": false,
|
| 606 |
+
"normalized": true,
|
| 607 |
+
"rstrip": false,
|
| 608 |
+
"single_word": false,
|
| 609 |
+
"special": false
|
| 610 |
+
},
|
| 611 |
+
"50328": {
|
| 612 |
+
"content": "[unused43]",
|
| 613 |
+
"lstrip": false,
|
| 614 |
+
"normalized": true,
|
| 615 |
+
"rstrip": false,
|
| 616 |
+
"single_word": false,
|
| 617 |
+
"special": false
|
| 618 |
+
},
|
| 619 |
+
"50329": {
|
| 620 |
+
"content": "[unused44]",
|
| 621 |
+
"lstrip": false,
|
| 622 |
+
"normalized": true,
|
| 623 |
+
"rstrip": false,
|
| 624 |
+
"single_word": false,
|
| 625 |
+
"special": false
|
| 626 |
+
},
|
| 627 |
+
"50330": {
|
| 628 |
+
"content": "[unused45]",
|
| 629 |
+
"lstrip": false,
|
| 630 |
+
"normalized": true,
|
| 631 |
+
"rstrip": false,
|
| 632 |
+
"single_word": false,
|
| 633 |
+
"special": false
|
| 634 |
+
},
|
| 635 |
+
"50331": {
|
| 636 |
+
"content": "[unused46]",
|
| 637 |
+
"lstrip": false,
|
| 638 |
+
"normalized": true,
|
| 639 |
+
"rstrip": false,
|
| 640 |
+
"single_word": false,
|
| 641 |
+
"special": false
|
| 642 |
+
},
|
| 643 |
+
"50332": {
|
| 644 |
+
"content": "[unused47]",
|
| 645 |
+
"lstrip": false,
|
| 646 |
+
"normalized": true,
|
| 647 |
+
"rstrip": false,
|
| 648 |
+
"single_word": false,
|
| 649 |
+
"special": false
|
| 650 |
+
},
|
| 651 |
+
"50333": {
|
| 652 |
+
"content": "[unused48]",
|
| 653 |
+
"lstrip": false,
|
| 654 |
+
"normalized": true,
|
| 655 |
+
"rstrip": false,
|
| 656 |
+
"single_word": false,
|
| 657 |
+
"special": false
|
| 658 |
+
},
|
| 659 |
+
"50334": {
|
| 660 |
+
"content": "[unused49]",
|
| 661 |
+
"lstrip": false,
|
| 662 |
+
"normalized": true,
|
| 663 |
+
"rstrip": false,
|
| 664 |
+
"single_word": false,
|
| 665 |
+
"special": false
|
| 666 |
+
},
|
| 667 |
+
"50335": {
|
| 668 |
+
"content": "[unused50]",
|
| 669 |
+
"lstrip": false,
|
| 670 |
+
"normalized": true,
|
| 671 |
+
"rstrip": false,
|
| 672 |
+
"single_word": false,
|
| 673 |
+
"special": false
|
| 674 |
+
},
|
| 675 |
+
"50336": {
|
| 676 |
+
"content": "[unused51]",
|
| 677 |
+
"lstrip": false,
|
| 678 |
+
"normalized": true,
|
| 679 |
+
"rstrip": false,
|
| 680 |
+
"single_word": false,
|
| 681 |
+
"special": false
|
| 682 |
+
},
|
| 683 |
+
"50337": {
|
| 684 |
+
"content": "[unused52]",
|
| 685 |
+
"lstrip": false,
|
| 686 |
+
"normalized": true,
|
| 687 |
+
"rstrip": false,
|
| 688 |
+
"single_word": false,
|
| 689 |
+
"special": false
|
| 690 |
+
},
|
| 691 |
+
"50338": {
|
| 692 |
+
"content": "[unused53]",
|
| 693 |
+
"lstrip": false,
|
| 694 |
+
"normalized": true,
|
| 695 |
+
"rstrip": false,
|
| 696 |
+
"single_word": false,
|
| 697 |
+
"special": false
|
| 698 |
+
},
|
| 699 |
+
"50339": {
|
| 700 |
+
"content": "[unused54]",
|
| 701 |
+
"lstrip": false,
|
| 702 |
+
"normalized": true,
|
| 703 |
+
"rstrip": false,
|
| 704 |
+
"single_word": false,
|
| 705 |
+
"special": false
|
| 706 |
+
},
|
| 707 |
+
"50340": {
|
| 708 |
+
"content": "[unused55]",
|
| 709 |
+
"lstrip": false,
|
| 710 |
+
"normalized": true,
|
| 711 |
+
"rstrip": false,
|
| 712 |
+
"single_word": false,
|
| 713 |
+
"special": false
|
| 714 |
+
},
|
| 715 |
+
"50341": {
|
| 716 |
+
"content": "[unused56]",
|
| 717 |
+
"lstrip": false,
|
| 718 |
+
"normalized": true,
|
| 719 |
+
"rstrip": false,
|
| 720 |
+
"single_word": false,
|
| 721 |
+
"special": false
|
| 722 |
+
},
|
| 723 |
+
"50342": {
|
| 724 |
+
"content": "[unused57]",
|
| 725 |
+
"lstrip": false,
|
| 726 |
+
"normalized": true,
|
| 727 |
+
"rstrip": false,
|
| 728 |
+
"single_word": false,
|
| 729 |
+
"special": false
|
| 730 |
+
},
|
| 731 |
+
"50343": {
|
| 732 |
+
"content": "[unused58]",
|
| 733 |
+
"lstrip": false,
|
| 734 |
+
"normalized": true,
|
| 735 |
+
"rstrip": false,
|
| 736 |
+
"single_word": false,
|
| 737 |
+
"special": false
|
| 738 |
+
},
|
| 739 |
+
"50344": {
|
| 740 |
+
"content": "[unused59]",
|
| 741 |
+
"lstrip": false,
|
| 742 |
+
"normalized": true,
|
| 743 |
+
"rstrip": false,
|
| 744 |
+
"single_word": false,
|
| 745 |
+
"special": false
|
| 746 |
+
},
|
| 747 |
+
"50345": {
|
| 748 |
+
"content": "[unused60]",
|
| 749 |
+
"lstrip": false,
|
| 750 |
+
"normalized": true,
|
| 751 |
+
"rstrip": false,
|
| 752 |
+
"single_word": false,
|
| 753 |
+
"special": false
|
| 754 |
+
},
|
| 755 |
+
"50346": {
|
| 756 |
+
"content": "[unused61]",
|
| 757 |
+
"lstrip": false,
|
| 758 |
+
"normalized": true,
|
| 759 |
+
"rstrip": false,
|
| 760 |
+
"single_word": false,
|
| 761 |
+
"special": false
|
| 762 |
+
},
|
| 763 |
+
"50347": {
|
| 764 |
+
"content": "[unused62]",
|
| 765 |
+
"lstrip": false,
|
| 766 |
+
"normalized": true,
|
| 767 |
+
"rstrip": false,
|
| 768 |
+
"single_word": false,
|
| 769 |
+
"special": false
|
| 770 |
+
},
|
| 771 |
+
"50348": {
|
| 772 |
+
"content": "[unused63]",
|
| 773 |
+
"lstrip": false,
|
| 774 |
+
"normalized": true,
|
| 775 |
+
"rstrip": false,
|
| 776 |
+
"single_word": false,
|
| 777 |
+
"special": false
|
| 778 |
+
},
|
| 779 |
+
"50349": {
|
| 780 |
+
"content": "[unused64]",
|
| 781 |
+
"lstrip": false,
|
| 782 |
+
"normalized": true,
|
| 783 |
+
"rstrip": false,
|
| 784 |
+
"single_word": false,
|
| 785 |
+
"special": false
|
| 786 |
+
},
|
| 787 |
+
"50350": {
|
| 788 |
+
"content": "[unused65]",
|
| 789 |
+
"lstrip": false,
|
| 790 |
+
"normalized": true,
|
| 791 |
+
"rstrip": false,
|
| 792 |
+
"single_word": false,
|
| 793 |
+
"special": false
|
| 794 |
+
},
|
| 795 |
+
"50351": {
|
| 796 |
+
"content": "[unused66]",
|
| 797 |
+
"lstrip": false,
|
| 798 |
+
"normalized": true,
|
| 799 |
+
"rstrip": false,
|
| 800 |
+
"single_word": false,
|
| 801 |
+
"special": false
|
| 802 |
+
},
|
| 803 |
+
"50352": {
|
| 804 |
+
"content": "[unused67]",
|
| 805 |
+
"lstrip": false,
|
| 806 |
+
"normalized": true,
|
| 807 |
+
"rstrip": false,
|
| 808 |
+
"single_word": false,
|
| 809 |
+
"special": false
|
| 810 |
+
},
|
| 811 |
+
"50353": {
|
| 812 |
+
"content": "[unused68]",
|
| 813 |
+
"lstrip": false,
|
| 814 |
+
"normalized": true,
|
| 815 |
+
"rstrip": false,
|
| 816 |
+
"single_word": false,
|
| 817 |
+
"special": false
|
| 818 |
+
},
|
| 819 |
+
"50354": {
|
| 820 |
+
"content": "[unused69]",
|
| 821 |
+
"lstrip": false,
|
| 822 |
+
"normalized": true,
|
| 823 |
+
"rstrip": false,
|
| 824 |
+
"single_word": false,
|
| 825 |
+
"special": false
|
| 826 |
+
},
|
| 827 |
+
"50355": {
|
| 828 |
+
"content": "[unused70]",
|
| 829 |
+
"lstrip": false,
|
| 830 |
+
"normalized": true,
|
| 831 |
+
"rstrip": false,
|
| 832 |
+
"single_word": false,
|
| 833 |
+
"special": false
|
| 834 |
+
},
|
| 835 |
+
"50356": {
|
| 836 |
+
"content": "[unused71]",
|
| 837 |
+
"lstrip": false,
|
| 838 |
+
"normalized": true,
|
| 839 |
+
"rstrip": false,
|
| 840 |
+
"single_word": false,
|
| 841 |
+
"special": false
|
| 842 |
+
},
|
| 843 |
+
"50357": {
|
| 844 |
+
"content": "[unused72]",
|
| 845 |
+
"lstrip": false,
|
| 846 |
+
"normalized": true,
|
| 847 |
+
"rstrip": false,
|
| 848 |
+
"single_word": false,
|
| 849 |
+
"special": false
|
| 850 |
+
},
|
| 851 |
+
"50358": {
|
| 852 |
+
"content": "[unused73]",
|
| 853 |
+
"lstrip": false,
|
| 854 |
+
"normalized": true,
|
| 855 |
+
"rstrip": false,
|
| 856 |
+
"single_word": false,
|
| 857 |
+
"special": false
|
| 858 |
+
},
|
| 859 |
+
"50359": {
|
| 860 |
+
"content": "[unused74]",
|
| 861 |
+
"lstrip": false,
|
| 862 |
+
"normalized": true,
|
| 863 |
+
"rstrip": false,
|
| 864 |
+
"single_word": false,
|
| 865 |
+
"special": false
|
| 866 |
+
},
|
| 867 |
+
"50360": {
|
| 868 |
+
"content": "[unused75]",
|
| 869 |
+
"lstrip": false,
|
| 870 |
+
"normalized": true,
|
| 871 |
+
"rstrip": false,
|
| 872 |
+
"single_word": false,
|
| 873 |
+
"special": false
|
| 874 |
+
},
|
| 875 |
+
"50361": {
|
| 876 |
+
"content": "[unused76]",
|
| 877 |
+
"lstrip": false,
|
| 878 |
+
"normalized": true,
|
| 879 |
+
"rstrip": false,
|
| 880 |
+
"single_word": false,
|
| 881 |
+
"special": false
|
| 882 |
+
},
|
| 883 |
+
"50362": {
|
| 884 |
+
"content": "[unused77]",
|
| 885 |
+
"lstrip": false,
|
| 886 |
+
"normalized": true,
|
| 887 |
+
"rstrip": false,
|
| 888 |
+
"single_word": false,
|
| 889 |
+
"special": false
|
| 890 |
+
},
|
| 891 |
+
"50363": {
|
| 892 |
+
"content": "[unused78]",
|
| 893 |
+
"lstrip": false,
|
| 894 |
+
"normalized": true,
|
| 895 |
+
"rstrip": false,
|
| 896 |
+
"single_word": false,
|
| 897 |
+
"special": false
|
| 898 |
+
},
|
| 899 |
+
"50364": {
|
| 900 |
+
"content": "[unused79]",
|
| 901 |
+
"lstrip": false,
|
| 902 |
+
"normalized": true,
|
| 903 |
+
"rstrip": false,
|
| 904 |
+
"single_word": false,
|
| 905 |
+
"special": false
|
| 906 |
+
},
|
| 907 |
+
"50365": {
|
| 908 |
+
"content": "[unused80]",
|
| 909 |
+
"lstrip": false,
|
| 910 |
+
"normalized": true,
|
| 911 |
+
"rstrip": false,
|
| 912 |
+
"single_word": false,
|
| 913 |
+
"special": false
|
| 914 |
+
},
|
| 915 |
+
"50366": {
|
| 916 |
+
"content": "[unused81]",
|
| 917 |
+
"lstrip": false,
|
| 918 |
+
"normalized": true,
|
| 919 |
+
"rstrip": false,
|
| 920 |
+
"single_word": false,
|
| 921 |
+
"special": false
|
| 922 |
+
},
|
| 923 |
+
"50367": {
|
| 924 |
+
"content": "[unused82]",
|
| 925 |
+
"lstrip": false,
|
| 926 |
+
"normalized": true,
|
| 927 |
+
"rstrip": false,
|
| 928 |
+
"single_word": false,
|
| 929 |
+
"special": false
|
| 930 |
+
},
|
| 931 |
+
"50368": {
|
| 932 |
+
"content": "<global-img>",
|
| 933 |
+
"lstrip": false,
|
| 934 |
+
"normalized": false,
|
| 935 |
+
"rstrip": false,
|
| 936 |
+
"single_word": false,
|
| 937 |
+
"special": true
|
| 938 |
+
},
|
| 939 |
+
"50369": {
|
| 940 |
+
"content": "<row_1_col_1>",
|
| 941 |
+
"lstrip": false,
|
| 942 |
+
"normalized": false,
|
| 943 |
+
"rstrip": false,
|
| 944 |
+
"single_word": false,
|
| 945 |
+
"special": true
|
| 946 |
+
},
|
| 947 |
+
"50370": {
|
| 948 |
+
"content": "<row_1_col_2>",
|
| 949 |
+
"lstrip": false,
|
| 950 |
+
"normalized": false,
|
| 951 |
+
"rstrip": false,
|
| 952 |
+
"single_word": false,
|
| 953 |
+
"special": true
|
| 954 |
+
},
|
| 955 |
+
"50371": {
|
| 956 |
+
"content": "<row_1_col_3>",
|
| 957 |
+
"lstrip": false,
|
| 958 |
+
"normalized": false,
|
| 959 |
+
"rstrip": false,
|
| 960 |
+
"single_word": false,
|
| 961 |
+
"special": true
|
| 962 |
+
},
|
| 963 |
+
"50372": {
|
| 964 |
+
"content": "<row_1_col_4>",
|
| 965 |
+
"lstrip": false,
|
| 966 |
+
"normalized": false,
|
| 967 |
+
"rstrip": false,
|
| 968 |
+
"single_word": false,
|
| 969 |
+
"special": true
|
| 970 |
+
},
|
| 971 |
+
"50373": {
|
| 972 |
+
"content": "<row_1_col_5>",
|
| 973 |
+
"lstrip": false,
|
| 974 |
+
"normalized": false,
|
| 975 |
+
"rstrip": false,
|
| 976 |
+
"single_word": false,
|
| 977 |
+
"special": true
|
| 978 |
+
},
|
| 979 |
+
"50374": {
|
| 980 |
+
"content": "<row_1_col_6>",
|
| 981 |
+
"lstrip": false,
|
| 982 |
+
"normalized": false,
|
| 983 |
+
"rstrip": false,
|
| 984 |
+
"single_word": false,
|
| 985 |
+
"special": true
|
| 986 |
+
},
|
| 987 |
+
"50375": {
|
| 988 |
+
"content": "<row_2_col_1>",
|
| 989 |
+
"lstrip": false,
|
| 990 |
+
"normalized": false,
|
| 991 |
+
"rstrip": false,
|
| 992 |
+
"single_word": false,
|
| 993 |
+
"special": true
|
| 994 |
+
},
|
| 995 |
+
"50376": {
|
| 996 |
+
"content": "<row_2_col_2>",
|
| 997 |
+
"lstrip": false,
|
| 998 |
+
"normalized": false,
|
| 999 |
+
"rstrip": false,
|
| 1000 |
+
"single_word": false,
|
| 1001 |
+
"special": true
|
| 1002 |
+
},
|
| 1003 |
+
"50377": {
|
| 1004 |
+
"content": "<row_2_col_3>",
|
| 1005 |
+
"lstrip": false,
|
| 1006 |
+
"normalized": false,
|
| 1007 |
+
"rstrip": false,
|
| 1008 |
+
"single_word": false,
|
| 1009 |
+
"special": true
|
| 1010 |
+
},
|
| 1011 |
+
"50378": {
|
| 1012 |
+
"content": "<row_2_col_4>",
|
| 1013 |
+
"lstrip": false,
|
| 1014 |
+
"normalized": false,
|
| 1015 |
+
"rstrip": false,
|
| 1016 |
+
"single_word": false,
|
| 1017 |
+
"special": true
|
| 1018 |
+
},
|
| 1019 |
+
"50379": {
|
| 1020 |
+
"content": "<row_2_col_5>",
|
| 1021 |
+
"lstrip": false,
|
| 1022 |
+
"normalized": false,
|
| 1023 |
+
"rstrip": false,
|
| 1024 |
+
"single_word": false,
|
| 1025 |
+
"special": true
|
| 1026 |
+
},
|
| 1027 |
+
"50380": {
|
| 1028 |
+
"content": "<row_2_col_6>",
|
| 1029 |
+
"lstrip": false,
|
| 1030 |
+
"normalized": false,
|
| 1031 |
+
"rstrip": false,
|
| 1032 |
+
"single_word": false,
|
| 1033 |
+
"special": true
|
| 1034 |
+
},
|
| 1035 |
+
"50381": {
|
| 1036 |
+
"content": "<row_3_col_1>",
|
| 1037 |
+
"lstrip": false,
|
| 1038 |
+
"normalized": false,
|
| 1039 |
+
"rstrip": false,
|
| 1040 |
+
"single_word": false,
|
| 1041 |
+
"special": true
|
| 1042 |
+
},
|
| 1043 |
+
"50382": {
|
| 1044 |
+
"content": "<row_3_col_2>",
|
| 1045 |
+
"lstrip": false,
|
| 1046 |
+
"normalized": false,
|
| 1047 |
+
"rstrip": false,
|
| 1048 |
+
"single_word": false,
|
| 1049 |
+
"special": true
|
| 1050 |
+
},
|
| 1051 |
+
"50383": {
|
| 1052 |
+
"content": "<row_3_col_3>",
|
| 1053 |
+
"lstrip": false,
|
| 1054 |
+
"normalized": false,
|
| 1055 |
+
"rstrip": false,
|
| 1056 |
+
"single_word": false,
|
| 1057 |
+
"special": true
|
| 1058 |
+
},
|
| 1059 |
+
"50384": {
|
| 1060 |
+
"content": "<row_3_col_4>",
|
| 1061 |
+
"lstrip": false,
|
| 1062 |
+
"normalized": false,
|
| 1063 |
+
"rstrip": false,
|
| 1064 |
+
"single_word": false,
|
| 1065 |
+
"special": true
|
| 1066 |
+
},
|
| 1067 |
+
"50385": {
|
| 1068 |
+
"content": "<row_3_col_5>",
|
| 1069 |
+
"lstrip": false,
|
| 1070 |
+
"normalized": false,
|
| 1071 |
+
"rstrip": false,
|
| 1072 |
+
"single_word": false,
|
| 1073 |
+
"special": true
|
| 1074 |
+
},
|
| 1075 |
+
"50386": {
|
| 1076 |
+
"content": "<row_3_col_6>",
|
| 1077 |
+
"lstrip": false,
|
| 1078 |
+
"normalized": false,
|
| 1079 |
+
"rstrip": false,
|
| 1080 |
+
"single_word": false,
|
| 1081 |
+
"special": true
|
| 1082 |
+
},
|
| 1083 |
+
"50387": {
|
| 1084 |
+
"content": "<row_4_col_1>",
|
| 1085 |
+
"lstrip": false,
|
| 1086 |
+
"normalized": false,
|
| 1087 |
+
"rstrip": false,
|
| 1088 |
+
"single_word": false,
|
| 1089 |
+
"special": true
|
| 1090 |
+
},
|
| 1091 |
+
"50388": {
|
| 1092 |
+
"content": "<row_4_col_2>",
|
| 1093 |
+
"lstrip": false,
|
| 1094 |
+
"normalized": false,
|
| 1095 |
+
"rstrip": false,
|
| 1096 |
+
"single_word": false,
|
| 1097 |
+
"special": true
|
| 1098 |
+
},
|
| 1099 |
+
"50389": {
|
| 1100 |
+
"content": "<row_4_col_3>",
|
| 1101 |
+
"lstrip": false,
|
| 1102 |
+
"normalized": false,
|
| 1103 |
+
"rstrip": false,
|
| 1104 |
+
"single_word": false,
|
| 1105 |
+
"special": true
|
| 1106 |
+
},
|
| 1107 |
+
"50390": {
|
| 1108 |
+
"content": "<row_4_col_4>",
|
| 1109 |
+
"lstrip": false,
|
| 1110 |
+
"normalized": false,
|
| 1111 |
+
"rstrip": false,
|
| 1112 |
+
"single_word": false,
|
| 1113 |
+
"special": true
|
| 1114 |
+
},
|
| 1115 |
+
"50391": {
|
| 1116 |
+
"content": "<row_4_col_5>",
|
| 1117 |
+
"lstrip": false,
|
| 1118 |
+
"normalized": false,
|
| 1119 |
+
"rstrip": false,
|
| 1120 |
+
"single_word": false,
|
| 1121 |
+
"special": true
|
| 1122 |
+
},
|
| 1123 |
+
"50392": {
|
| 1124 |
+
"content": "<row_4_col_6>",
|
| 1125 |
+
"lstrip": false,
|
| 1126 |
+
"normalized": false,
|
| 1127 |
+
"rstrip": false,
|
| 1128 |
+
"single_word": false,
|
| 1129 |
+
"special": true
|
| 1130 |
+
},
|
| 1131 |
+
"50393": {
|
| 1132 |
+
"content": "<row_5_col_1>",
|
| 1133 |
+
"lstrip": false,
|
| 1134 |
+
"normalized": false,
|
| 1135 |
+
"rstrip": false,
|
| 1136 |
+
"single_word": false,
|
| 1137 |
+
"special": true
|
| 1138 |
+
},
|
| 1139 |
+
"50394": {
|
| 1140 |
+
"content": "<row_5_col_2>",
|
| 1141 |
+
"lstrip": false,
|
| 1142 |
+
"normalized": false,
|
| 1143 |
+
"rstrip": false,
|
| 1144 |
+
"single_word": false,
|
| 1145 |
+
"special": true
|
| 1146 |
+
},
|
| 1147 |
+
"50395": {
|
| 1148 |
+
"content": "<row_5_col_3>",
|
| 1149 |
+
"lstrip": false,
|
| 1150 |
+
"normalized": false,
|
| 1151 |
+
"rstrip": false,
|
| 1152 |
+
"single_word": false,
|
| 1153 |
+
"special": true
|
| 1154 |
+
},
|
| 1155 |
+
"50396": {
|
| 1156 |
+
"content": "<row_5_col_4>",
|
| 1157 |
+
"lstrip": false,
|
| 1158 |
+
"normalized": false,
|
| 1159 |
+
"rstrip": false,
|
| 1160 |
+
"single_word": false,
|
| 1161 |
+
"special": true
|
| 1162 |
+
},
|
| 1163 |
+
"50397": {
|
| 1164 |
+
"content": "<row_5_col_5>",
|
| 1165 |
+
"lstrip": false,
|
| 1166 |
+
"normalized": false,
|
| 1167 |
+
"rstrip": false,
|
| 1168 |
+
"single_word": false,
|
| 1169 |
+
"special": true
|
| 1170 |
+
},
|
| 1171 |
+
"50398": {
|
| 1172 |
+
"content": "<row_5_col_6>",
|
| 1173 |
+
"lstrip": false,
|
| 1174 |
+
"normalized": false,
|
| 1175 |
+
"rstrip": false,
|
| 1176 |
+
"single_word": false,
|
| 1177 |
+
"special": true
|
| 1178 |
+
},
|
| 1179 |
+
"50399": {
|
| 1180 |
+
"content": "<row_6_col_1>",
|
| 1181 |
+
"lstrip": false,
|
| 1182 |
+
"normalized": false,
|
| 1183 |
+
"rstrip": false,
|
| 1184 |
+
"single_word": false,
|
| 1185 |
+
"special": true
|
| 1186 |
+
},
|
| 1187 |
+
"50400": {
|
| 1188 |
+
"content": "<row_6_col_2>",
|
| 1189 |
+
"lstrip": false,
|
| 1190 |
+
"normalized": false,
|
| 1191 |
+
"rstrip": false,
|
| 1192 |
+
"single_word": false,
|
| 1193 |
+
"special": true
|
| 1194 |
+
},
|
| 1195 |
+
"50401": {
|
| 1196 |
+
"content": "<row_6_col_3>",
|
| 1197 |
+
"lstrip": false,
|
| 1198 |
+
"normalized": false,
|
| 1199 |
+
"rstrip": false,
|
| 1200 |
+
"single_word": false,
|
| 1201 |
+
"special": true
|
| 1202 |
+
},
|
| 1203 |
+
"50402": {
|
| 1204 |
+
"content": "<row_6_col_4>",
|
| 1205 |
+
"lstrip": false,
|
| 1206 |
+
"normalized": false,
|
| 1207 |
+
"rstrip": false,
|
| 1208 |
+
"single_word": false,
|
| 1209 |
+
"special": true
|
| 1210 |
+
},
|
| 1211 |
+
"50403": {
|
| 1212 |
+
"content": "<row_6_col_5>",
|
| 1213 |
+
"lstrip": false,
|
| 1214 |
+
"normalized": false,
|
| 1215 |
+
"rstrip": false,
|
| 1216 |
+
"single_word": false,
|
| 1217 |
+
"special": true
|
| 1218 |
+
},
|
| 1219 |
+
"50404": {
|
| 1220 |
+
"content": "<row_6_col_6>",
|
| 1221 |
+
"lstrip": false,
|
| 1222 |
+
"normalized": false,
|
| 1223 |
+
"rstrip": false,
|
| 1224 |
+
"single_word": false,
|
| 1225 |
+
"special": true
|
| 1226 |
+
},
|
| 1227 |
+
"50405": {
|
| 1228 |
+
"content": "<end_of_utterance>",
|
| 1229 |
+
"lstrip": false,
|
| 1230 |
+
"normalized": false,
|
| 1231 |
+
"rstrip": false,
|
| 1232 |
+
"single_word": false,
|
| 1233 |
+
"special": true
|
| 1234 |
+
},
|
| 1235 |
+
"50406": {
|
| 1236 |
+
"content": "<fake_token_around_image>",
|
| 1237 |
+
"lstrip": false,
|
| 1238 |
+
"normalized": false,
|
| 1239 |
+
"rstrip": false,
|
| 1240 |
+
"single_word": false,
|
| 1241 |
+
"special": true
|
| 1242 |
+
},
|
| 1243 |
+
"50407": {
|
| 1244 |
+
"content": "<image>",
|
| 1245 |
+
"lstrip": false,
|
| 1246 |
+
"normalized": false,
|
| 1247 |
+
"rstrip": false,
|
| 1248 |
+
"single_word": false,
|
| 1249 |
+
"special": true
|
| 1250 |
+
}
|
| 1251 |
+
},
|
| 1252 |
+
"additional_special_tokens": [
|
| 1253 |
+
"<global-img>",
|
| 1254 |
+
"<row_1_col_1>",
|
| 1255 |
+
"<row_1_col_2>",
|
| 1256 |
+
"<row_1_col_3>",
|
| 1257 |
+
"<row_1_col_4>",
|
| 1258 |
+
"<row_1_col_5>",
|
| 1259 |
+
"<row_1_col_6>",
|
| 1260 |
+
"<row_2_col_1>",
|
| 1261 |
+
"<row_2_col_2>",
|
| 1262 |
+
"<row_2_col_3>",
|
| 1263 |
+
"<row_2_col_4>",
|
| 1264 |
+
"<row_2_col_5>",
|
| 1265 |
+
"<row_2_col_6>",
|
| 1266 |
+
"<row_3_col_1>",
|
| 1267 |
+
"<row_3_col_2>",
|
| 1268 |
+
"<row_3_col_3>",
|
| 1269 |
+
"<row_3_col_4>",
|
| 1270 |
+
"<row_3_col_5>",
|
| 1271 |
+
"<row_3_col_6>",
|
| 1272 |
+
"<row_4_col_1>",
|
| 1273 |
+
"<row_4_col_2>",
|
| 1274 |
+
"<row_4_col_3>",
|
| 1275 |
+
"<row_4_col_4>",
|
| 1276 |
+
"<row_4_col_5>",
|
| 1277 |
+
"<row_4_col_6>",
|
| 1278 |
+
"<row_5_col_1>",
|
| 1279 |
+
"<row_5_col_2>",
|
| 1280 |
+
"<row_5_col_3>",
|
| 1281 |
+
"<row_5_col_4>",
|
| 1282 |
+
"<row_5_col_5>",
|
| 1283 |
+
"<row_5_col_6>",
|
| 1284 |
+
"<row_6_col_1>",
|
| 1285 |
+
"<row_6_col_2>",
|
| 1286 |
+
"<row_6_col_3>",
|
| 1287 |
+
"<row_6_col_4>",
|
| 1288 |
+
"<row_6_col_5>",
|
| 1289 |
+
"<row_6_col_6>",
|
| 1290 |
+
"<end_of_utterance>",
|
| 1291 |
+
"<fake_token_around_image>",
|
| 1292 |
+
"<image>"
|
| 1293 |
+
],
|
| 1294 |
+
"clean_up_tokenization_spaces": true,
|
| 1295 |
+
"cls_token": "[CLS]",
|
| 1296 |
+
"extra_special_tokens": {},
|
| 1297 |
+
"legacy": false,
|
| 1298 |
+
"mask_token": "[MASK]",
|
| 1299 |
+
"model_input_names": [
|
| 1300 |
+
"input_ids",
|
| 1301 |
+
"attention_mask",
|
| 1302 |
+
"pixel_values",
|
| 1303 |
+
"pixel_attention_mask"
|
| 1304 |
+
],
|
| 1305 |
+
"model_max_length": 8192,
|
| 1306 |
+
"pad_token": "[PAD]",
|
| 1307 |
+
"sep_token": "[SEP]",
|
| 1308 |
+
"tokenizer_class": "PreTrainedTokenizerFast",
|
| 1309 |
+
"unk_token": "[UNK]"
|
| 1310 |
+
}
|
v-splade-logo.png
ADDED
|
Git LFS Details
|
vsplade_config.json
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"model_type": "vsplade",
|
| 3 |
+
"variant": "efficient",
|
| 4 |
+
"backbone": "ModernVBERT/modernvbert",
|
| 5 |
+
"encoder_type": "vbert",
|
| 6 |
+
"head_type": "sparse",
|
| 7 |
+
"splade_pooling": "max",
|
| 8 |
+
"query_encoder_type": "li_lsr",
|
| 9 |
+
"query_lsr_activation": "softplus",
|
| 10 |
+
"encoder_lora_r": 0,
|
| 11 |
+
"lm_head_lora_r": 0,
|
| 12 |
+
"query_lsr_lora_r": 0,
|
| 13 |
+
"hidden_size": 768,
|
| 14 |
+
"vocab_size": 50368
|
| 15 |
+
}
|