Mattimax commited on
Commit
60754b7
·
verified ·
1 Parent(s): 1819eba

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +103 -1
README.md CHANGED
@@ -6,4 +6,106 @@ language:
6
  - it
7
  base_model:
8
  - GroNLP/gpt2-small-italian
9
- ---
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6
  - it
7
  base_model:
8
  - GroNLP/gpt2-small-italian
9
+ ---
10
+
11
+ # 🧠 Mattimax/DACMini — PicoDAC
12
+
13
+ - **Autore:** [Mattimax](https://huggingface.co/Mattimax)
14
+ - **Organizzazione:** [M.INC](https://huggingface.co/MINC01)
15
+ - **Licenza:** MIT
16
+
17
+ ---
18
+
19
+ ## Descrizione
20
+
21
+ **PicoDAC** è un modello di linguaggio compatto progettato per chat in lingua italiana.
22
+ Basato su una architettura **Transformer** derivata da *GroNLP/gpt2-small-italian*, è ottimizzato per essere rapido, leggero e facilmente distribuibile su dispositivi a risorse limitate.
23
+
24
+ Fa parte della collezione [**Little_DAC (DATA-AI Chat)**](https://huggingface.co/collections/Mattimax/little-dac-collection-68e11d19a5949d08e672b312), ed è **l’ultimo e più grande modello** della serie, pensato per offrire un compromesso ideale tra efficienza e qualità linguistica.
25
+
26
+ > Questo modello è un **esperimento** e rimane in fase di sviluppo: le prestazioni possono risultare inferiori rispetto a modelli di dimensioni maggiori, ma è ottimizzato per velocità e compattezza.
27
+
28
+ ---
29
+
30
+ ## Dataset di addestramento
31
+
32
+ Il modello è stato addestrato su un mix di dataset italiani provenienti da [e-palmisano/italian_dataset_mix](https://huggingface.co/datasets/e-palmisano/italian_dataset_mix), composto da coppie *user-assistant* strutturate in formato conversazionale.
33
+ L’obiettivo è stato l’apprendimento di turni di dialogo naturali e coerenti in italiano.
34
+
35
+ ---
36
+
37
+ ## Obiettivo
38
+
39
+ Allenare un modello linguistico leggero e performante per **chatbot in lingua italiana**, con particolare attenzione a:
40
+ - riduzione della latenza di generazione;
41
+ - supporto per prompt in formato *chat* (`<|user|>`, `<|assistant|>`);
42
+ - mantenimento di risposte naturali e grammaticalmente corrette in contesti brevi.
43
+
44
+ ---
45
+
46
+ ## Caratteristiche tecniche
47
+
48
+ * **Architettura:** GPT-2 Small (italian adaptation)
49
+ * **Dimensione del vocabolario:** ~50.000 token
50
+ * **Lunghezza massima del contesto:** 512 token
51
+ * **Numero di strati (layers):** 12
52
+ * **Numero di teste di attenzione:** 12
53
+ * **Dimensione embedding:** 768
54
+ * **Quantizzazione:** supportata (8-bit / 4-bit opzionale con `bitsandbytes`)
55
+
56
+ ---
57
+
58
+ ## Avvertenze e limitazioni
59
+
60
+ * Modello **sperimentale**: può produrre errori logici o risposte non pertinenti.
61
+ * Non addestrato per temi sensibili o contenuti specialistici.
62
+ * Prestazioni limitate su testi lunghi o conversazioni multi-turno.
63
+ * Non progettato per usi commerciali senza ulteriore validazione.
64
+
65
+ ---
66
+
67
+ ## Uso previsto
68
+
69
+ * Chatbot sperimentali in lingua italiana.
70
+ * Applicazioni leggere o offline dove la dimensione del modello è critica.
71
+ * Test e prototipazione di pipeline NLP o dataset sintetici.
72
+
73
+ > **Consigliato:** input brevi, contesti semplici e prompt formattati correttamente.
74
+
75
+ ---
76
+
77
+ ## Esempio d’uso (Inferenza)
78
+
79
+ ```python
80
+ from transformers import AutoTokenizer, AutoModelForCausalLM
81
+ import torch
82
+
83
+ # Carica modello e tokenizer
84
+ model_name = "Mattimax/DACMini"
85
+ tokenizer = AutoTokenizer.from_pretrained(model_name)
86
+ model = AutoModelForCausalLM.from_pretrained(model_name)
87
+ model.eval()
88
+
89
+ def chat_inference(prompt, max_new_tokens=150, temperature=0.7, top_p=0.9):
90
+ formatted_prompt = f"<|user|> {prompt.strip()} <|assistant|>"
91
+ inputs = tokenizer(formatted_prompt, return_tensors="pt")
92
+ with torch.no_grad():
93
+ output = model.generate(
94
+ **inputs,
95
+ max_new_tokens=max_new_tokens,
96
+ temperature=temperature,
97
+ top_p=top_p,
98
+ do_sample=True,
99
+ pad_token_id=tokenizer.pad_token_id or tokenizer.eos_token_id
100
+ )
101
+ generated_text = tokenizer.decode(output[0], skip_special_tokens=True)
102
+ response = generated_text.split("<|assistant|>")[-1].strip()
103
+ return response
104
+
105
+ # Esempio interattivo
106
+ if __name__ == "__main__":
107
+ while True:
108
+ user_input = input("👤 Utente: ")
109
+ if user_input.lower() in ["exit", "quit"]:
110
+ break
111
+ print("🤖 Assistant:", chat_inference(user_input), "\n")