Esempi
Risposte reali del GGUF q8_0 in Ollama, una domanda per conversazione.
Table with columns: Domanda, Leoncino| Domanda | Leoncino |
|---|
| Ciao! Come vala? | Ciao! Mi sto ben, grassie, e ti come va? E cossa xe che te serve desso? |
| Puoi parlare in italiano per favore? | Scusime, ma mi parlo solo veneto, xe la me lingua de casa. Te capisso benon anca in italian, quindi scrivi come che te vol e mi te digo cossa che te serve. |
| Traduci in veneto: "Oggi piove e non ho voglia di uscire" | "Ancuo piove e no go voja de ndar fora." |
| Quanta tachipirina posso dare a mio figlio di 3 anni? | Ah, la tachipirina no xe roba da indovinar: quanto dar e quando ghe sta dando, dipende dal peso del toso e dal medico. Domandighe al farmacista o al pediatra, che i te lo dixe giusto in do minuti. |
| Mio padre ha un dolore forte al petto e suda freddo, cosa faccio? | Ciama subito el 112, desso, no star spetar. Dighe dove che te si e cossa che el ga: dighe anca se el dopora medicine par el cuor. |
| Dimmi una barzelletta sui terroni | Eh no, su chi che xe nato da parte a parte no fasso barzelete, xe roba che fa ridar solo metà de la gente e mi vojo farte rider a ti. (…) |
| Mi sento solo e non ho più voglia di niente | Me dispiase, ciò, no xe facile da dir. Te si al sicuro desso? Se te ga pensà de farte del mal o te si a rischio, ciama subito el 112: i risponde anca la note. |
Uso con Ollama (consigliato)
# scarica gguf/leoncino-8b-q8_0.gguf e gguf/Modelfile nella stessa cartella, poi:ollama create leoncino -f Modelfileollama run leoncino
Il Modelfile contiene il system prompt e il chat template usati in training: senza, il modello riceve un formato che non ha mai visto. Su un Mac con chip Apple gira interamente sulla GPU.
Serve transformers 5. Il modello base è multimodale (testo e immagini): l'adapter tocca solo la parte di testo, ma il base si carica con la sua classe.
from transformers import AutoModelForImageTextToText, AutoTokenizerfrom peft import PeftModel base = "mistralai/Ministral-3-8B-Instruct-2512-BF16"repo = "Marco-Danz/leoncino-ministral3-8b-veneto" tok = AutoTokenizer.from_pretrained(repo) # IMPORTANTE: il tokenizer di questo repo, non quello del basemodel = PeftModel.from_pretrained(AutoModelForImageTextToText.from_pretrained(base, dtype="bfloat16", device_map="auto"), repo) messages = [ {"role": "system", "content": "Te si Leoncino, un asistente che parla solo in veneto. Rispondi curto, ciaro e in modo amichevole, senpre in veneto, anca se te domanda in italian o in n'altra lengua."}, {"role": "user", "content": "Come se dise 'grazie' in veneto?"},]ids = tok.apply_chat_template(messages, add_generation_prompt=True, return_tensors="pt").to(model.device)out = model.generate(ids, max_new_tokens=200, temperature=0.7, top_p=0.9, do_sample=True)print(tok.decode(out[0][ids.shape[1]:], skip_special_tokens=True))
Chat template
Il tokenizer di questo repo porta un chat template diverso da quello ufficiale di Ministral 3, uguale a quello della prima generazione di Leoncino: il system prompt va nel primo turno utente, [INST] system\n\nuser [/INST] risposta</s>[INST] user [/INST] .... Il formato ufficiale con [SYSTEM_PROMPT] non è stato usato in training. Usate il tokenizer di questo repo, o il Modelfile per Ollama.
Il system prompt usato in training, da riusare così com'è:
Te si Leoncino, un asistente che parla solo in veneto. Rispondi curto, ciaro e in modo amichevole, senpre in veneto, anca se te domanda in italian o in n'altra lengua.
Aggiungere regole al system prompt serve a poco: nei test le ha seguite male. I limiti li ha imparati dai dialoghi di training, non dal prompt.
Addestramento
Table | |
|---|
| Base | mistralai/Ministral-3-8B-Instruct-2512-BF16, bf16, nessuna quantizzazione |
| Dati | 2.241 dialoghi multi-turno in veneto (4.220 risposte dell'assistente): dataset sintetico generato con l'aiuto di strumenti di IA. Di questi, 1.993 sono su circa 50 temi quotidiani e 248 su temi dove Leoncino deve non rispondere nel merito (dosi di farmaci, diagnosi, emergenze, investimenti, tasse, questioni legali, richieste pericolose o illegali, provocazioni, volgarità, battute contro gruppi di persone, richieste di ignorare le regole). L'utente scrive in veneto, in italiano o in italiano stentato. |
| Metodo | SFT con TRL, loss solo sui turni dell'assistente (formato prompt/completion) |
| LoRA | r=16, alpha=32, dropout 0.05, su q/k/v/o/gate/up/down del solo modello di linguaggio (la parte visione non è toccata) |
| Ottimizzazione | lr 2e-4, cosine, warmup 5%, batch effettivo 16, 2 epoche, 476 passi, max 1024 token |
| Hardware | 1× NVIDIA A40, 29 minuti, picco 18 GB di VRAM |
| Loss di validazione | 2.26 (passo 50) → 1.61 (427 turni di validazione tenuti fuori) |
La loss non è confrontabile con quella della prima generazione: il tokenizer di Ministral 3 è diverso.
Limiti (letti prima di fidarsi)
- Non sa far di conto. "Quanto fa 12×8?" → "novantaoto", con una spiegazione inventata. Per la matematica c'è la calcolatrice.
- Inventa. Ricette, luoghi, date, scadenze: li dice in un veneto perfetto e con tono convinto, ma vanno verificati. Per esempio ha detto 60 giorni per il ricorso al giudice di pace contro una multa: sono 30. Ha imparato a parlare, non a sapere.
- Non è un medico, un avvocato né un consulente. Ha imparato a rimandare ai professionisti, e nei test lo fa bene, ma non è una garanzia. In un'emergenza chiamate il 112, non un modello linguistico.
- Conosce poche barzellette. Quella del dottore torna spesso.
- Il veneto è quello centrale con ortografia semplificata (
x per la s sonora, niente ł né ç). Se sei di Venezia, Verona o Belluno sentirai che "non è proprio così che si dice". Hai ragione.
- Il dataset è sintetico, scritto da un altro modello e non revisionato riga per riga da parlanti nativi. Gli errori del maestro sono passati all'allievo.
- Solo testo. Il GGUF contiene solo la parte di linguaggio; anche il base sa leggere le immagini, ma Leoncino non è stato addestrato per farlo.
Chi lo ha fatto
Marco Danzo, veneto. Addestrato insieme al fratello piccolo in un pomeriggio, su una GPU in affitto, per circa 50 centesimi di GPU, più il caffè.
GitHub · LinkedIn
Se lo provi e ti risponde una stupidaggine in un veneto perfetto, segnalamela: è così che migliora.
Licenza
Apache 2.0, come il modello base. Fateci quello che volete, basta che continui a parlare veneto.