Mattimax commited on
Commit
89da6a3
·
verified ·
1 Parent(s): 3de0efc

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +156 -3
README.md CHANGED
@@ -1,3 +1,156 @@
1
- ---
2
- license: gpl-3.0
3
- ---
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: gpl-3.0
3
+ ---
4
+
5
+ # 🧠 microDAC
6
+
7
+ **Progetto:** microDAC
8
+ **Azienda:** M.INC.
9
+ **Autore:** Mattia
10
+ **Versione:** 1.0
11
+ **Modello:** Decoder-only, 40M parametri
12
+ **Linguaggio target:** Italiano conversazionale
13
+
14
+ ---
15
+
16
+ ## 📌 Descrizione generale
17
+
18
+ microDAC è un modello linguistico compatto progettato da M.INC. per gestire conversazioni in italiano in modo naturale, fluido e contestuale.
19
+ È pensato per essere leggero, addestrabile su GPU consumer e facilmente integrabile in chatbot, assistenti vocali o agenti embedded.
20
+
21
+ Il training è supervisionato e ottimizzato per generare risposte coerenti, evitando la ripetizione dei prompt utente e focalizzandosi sulla qualità delle risposte.
22
+
23
+ ---
24
+
25
+ ## 🧱 Architettura del modello
26
+
27
+ | Parametro | Valore |
28
+ |-------------------|----------------|
29
+ | Tipo | Decoder-only (GPT2-like) |
30
+ | Parametri totali | ~40 milioni |
31
+ | Vocab size | 32.000 |
32
+ | Context window | 2048 token |
33
+ | Embedding dim | 512 |
34
+ | Layer | 16 |
35
+ | Attention heads | 8 |
36
+ | FFN dim | 2048 (gelu_new)|
37
+ | Attivazione | GELU (new) |
38
+ | Precisione | FP16/BF16 |
39
+ | Gradient checkpointing | ✅ Attivo |
40
+
41
+ ---
42
+
43
+ ## 🗣️ Tokenizer
44
+
45
+ - Tipo: Byte-Pair Encoding (BPE)
46
+ - Addestrato da zero su `microDAC_dataset.jsonl`
47
+ - Special tokens:
48
+ - `<|user|>`: inizio turno utente
49
+ - `<|assistant|>`: inizio risposta modello
50
+ - `<|sep|>`: separatore fine turno
51
+ - `<|pad|>`, `<|bos|>`, `<|eos|>`: padding e delimitatori
52
+
53
+ Il tokenizer è salvato in `tokenizer_microDAC/` e viene caricato automaticamente. Se non esiste, viene ricreato.
54
+
55
+ ---
56
+
57
+ ## 🎯 Obiettivo di training
58
+
59
+ Il modello è addestrato per generare solo le risposte dell’assistente.
60
+ I token dell’utente vengono mascherati con `-100` nei label per evitare che il modello li imiti.
61
+
62
+ ### Masking logico:
63
+ ```text
64
+ <|user|> ... <|sep|> → label = -100
65
+ <|assistant|> ... <|sep|> → label = token_id
66
+ ```
67
+
68
+ ---
69
+
70
+ ## ⚙️ Parametri di training
71
+
72
+ | Parametro | Valore |
73
+ |-------------------------|----------------|
74
+ | Epochs | 2 |
75
+ | Batch per device | 8 |
76
+ | Gradient accumulation | 4 |
77
+ | Learning rate | 3e-4 |
78
+ | Weight decay | 0.01 |
79
+ | Scheduler | Cosine |
80
+ | Warmup ratio | 0.05 |
81
+ | Max grad norm | 1.0 |
82
+ | Precision | FP16/BF16 |
83
+ | Optimizer | AdamW (torch) |
84
+ | Checkpointing | ogni 2000 step |
85
+ | Resume automatico | ✅ |
86
+ | Save best model | ✅ |
87
+
88
+ ---
89
+
90
+ ## 🧩 File e struttura
91
+
92
+ | File / Cartella | Descrizione |
93
+ |-------------------------|--------------------------------------------------|
94
+ | `train_microDAC.py` | Script completo di training |
95
+ | `microDAC_dataset.jsonl`| Dataset in formato JSONL |
96
+ | `tokenizer_microDAC/` | Tokenizer BPE addestrato |
97
+ | `./microDAC-40M/` | Output training + checkpoint |
98
+ | `./microDAC-40M/final/` | Modello finale e tokenizer salvati |
99
+
100
+ ---
101
+
102
+ ## 🖥️ Compatibilità e ambiente
103
+
104
+ - Sistema operativo: Windows (con `freeze_support`)
105
+ - GPU consigliata: ≥12 GB VRAM
106
+ - Framework: Hugging Face Transformers + Datasets
107
+ - Precisione: FP16/BF16 automatico
108
+ - Multiprocessing: gestito con `if __name__ == "__main__"` e `dataloader_num_workers=0`
109
+
110
+ ---
111
+
112
+ ## 🔄 Ripresa da checkpoint
113
+
114
+ Lo script cerca automaticamente l’ultimo checkpoint valido (`checkpoint-XXXX`) e riprende il training.
115
+ Se non trova nulla, parte da zero.
116
+
117
+ ---
118
+
119
+ ## 📦 Output finale
120
+
121
+ Alla fine del training, il modello e il tokenizer vengono salvati in:
122
+ ```
123
+ ./microDAC-40M/final/
124
+ ```
125
+
126
+ Contiene:
127
+ - `pytorch_model.bin`
128
+ - `config.json`
129
+ - `tokenizer.json`
130
+ - `special_tokens_map.json`
131
+ - `vocab.json`
132
+
133
+ ---
134
+
135
+ ## 🛠️ Modifiche consigliate
136
+
137
+ - Per aumentare la qualità: alza `N_LAYER` a 24 e `N_EMBD` a 768 (→ ~120M parametri)
138
+ - Per ridurre VRAM: abbassa `N_CTX` a 1024 e usa `adamw_bnb_8bit` con bitsandbytes
139
+ - Per training multi-turno: costruisci prompt concatenati con alternanza `<|user|>...<|assistant|>...` e maschera solo l’ultimo blocco
140
+
141
+ ---
142
+
143
+ ## 📣 Autore e contatti
144
+
145
+ **Mattia — M.INC.**
146
+ Per domande tecniche, ottimizzazioni o estensioni del progetto, contattare il team AI di M.INC.
147
+ Questo file è pensato per essere modificabile e aggiornabile da qualsiasi sviluppatore.
148
+
149
+ ---
150
+
151
+ ## 📁 Versioni future
152
+
153
+ - [ ] Integrazione LoRA per fine-tuning leggero
154
+ - [ ] Supporto FlashAttention
155
+ - [ ] Training multi-turno con contesto esteso
156
+ - [ ] Valutazione automatica su benchmark italiani