Tokenizer BPE byte-level bilingue EN + IT sviluppato per la famiglia di modelli Quark di OvercastLab / ThingAI.
Caratteristiche
Proprietà
Valore
Algoritmo
Byte-Level BPE
Vocab size
65.536 (2¹⁶)
Lingue
Inglese + Italiano
Special tokens
64
Context length
2048 (estendibile)
Compatibilità
🤗 transformers, tokenizers
Corpus di addestramento
Il tokenizer è stato addestrato su ~14M righe bilanciate EN/IT (50%/50%) provenienti da:
Dataset
Lingua
Righe
Wikipedia EN
EN
3.000.000
Pile Uncopyrighted
EN
2.000.000
Falcon RefinedWeb
EN
2.000.000
Wikipedia IT
IT
3.000.000
FineWeb-2 (ita_Latn)
IT
2.000.000
MADLAD-400 IT
IT
1.500.000
La parità EN/IT è una scelta deliberata: i tokenizer addestrati prevalentemente su inglese tendono a usare 2–3× più token per rappresentare testi italiani. Questo tokenizer è ottimizzato per entrambe le lingue.
Il tokenizer include un chat template compatibile con apply_chat_template:
python
1from transformers import AutoTokenizer
23tok = AutoTokenizer.from_pretrained("ThingAI/QuarkTokenizer")45messages =[6{"role":"system","content":"Sei Quark, un assistente AI creato da OvercastLab."},7{"role":"user","content":"Cos'è la derivata di una funzione?"},8{"role":"assistant","content":"La derivata misura la variazione istantanea..."},9]1011text = tok.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)12print(text)
Uso base
python
1from transformers import AutoTokenizer
23tok = AutoTokenizer.from_pretrained("ThingAI/quark-tokenizer")45# Encoding6text ="Il cielo è azzurro e il sole splende."7ids = tok.encode(text)8print(f"Token: {len(ids)}")# ~9 token910# Decoding11decoded = tok.decode(ids, skip_special_tokens=True)12print(decoded)1314# Batch15batch = tok(["Hello world!","Ciao mondo!"], padding=True, return_tensors="pt")
Perché 65.536?
È una potenza di 2 (2¹⁶), ottimale per operazioni hardware su GPU/TPU. Più grande di GPT-2 (50.257) e LLaMA-2 (32.000), ma più compatto di LLaMA-3 (128.256). Bilancia efficienza di rappresentazione e dimensione dell'embedding layer.
Perché Byte-Level BPE?
Garantisce copertura completa di qualsiasi sequenza UTF-8 senza token <unk>. Robustezza su emoji, caratteri accentati italiani (à, è, ì, ò, ù), simboli matematici e codice sorgente.
Perché 50% italiano?
I tokenizer standard (GPT-2, LLaMA) sono addestrati su corpus predominantemente inglesi e penalizzano le lingue latine con un overhead di 2–3× nel numero di token. Il bilanciamento 50/50 elimina questa disparità per l'italiano mantenendo piena competenza in inglese.
Famiglia Quark
Modello
Parametri
Token pretraining
Stato
Quark-135M v1
135M
15B
✅ Rilasciato
Quark-135M v2
135M
65B
🔄 In training
Licenza
Apache 2.0 — uso libero anche commerciale.
Citazione
bibtex
1@misc{quark2025,
2 title = {Quark: A Bilingual EN/IT Language Model},
3 author = {OvercastLab / ThingAI},
4 year = {2025},
5 url = {https://huggingface.co/ThingAI/quark-tokenizer}
6}