File size: 4,039 Bytes
4fb271b
 
89da6a3
8df4a9e
 
 
 
 
4fb271b
8df4a9e
4fb271b
 
994a648
89da6a3
 
 
 
4fb271b
 
 
209a60b
89da6a3
 
 
4fb271b
 
 
 
 
 
89da6a3
4fb271b
 
 
89da6a3
4fb271b
89da6a3
 
 
4fb271b
89da6a3
4fb271b
 
 
 
 
 
 
 
 
 
 
89da6a3
 
 
 
 
4fb271b
 
 
 
 
 
 
89da6a3
4fb271b
89da6a3
 
 
 
 
4fb271b
89da6a3
4fb271b
89da6a3
 
 
01dc5a1
89da6a3
 
 
01dc5a1
89da6a3
4fb271b
89da6a3
4fb271b
 
 
 
 
 
 
 
 
 
 
 
 
89da6a3
 
 
01dc5a1
4fb271b
 
 
 
 
 
 
89da6a3
 
 
 
01dc5a1
4fb271b
994a648
4fb271b
994a648
4fb271b
994a648
4fb271b
 
 
 
 
 
 
01dc5a1
4fb271b
b8b5e77
4fb271b
b8b5e77
4fb271b
 
 
01dc5a1
4fb271b
8d19de3
4fb271b
 
 
 
 
 
 
 
 
 
 
8d19de3
89da6a3
 
 
01dc5a1
4fb271b
 
 
 
 
994a648
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
---

license: gpl-3.0
language:
- it
library_name: transformers
tags:
- DAC
- data-ai
- DATA-AI
- transformer
- experimental

---

# 🧠 microDAC

[![HuggingFace](https://img.shields.io/badge/HuggingFace-Mattimax-brightgreen)](https://huggingface.co/Mattimax)
[![M.INC](https://img.shields.io/badge/M.INC-Labs-blue)](https://huggingface.co/MINC01)

![Logo di microDAC](https://huggingface.co/Mattimax/microDAC/resolve/main/microDAC_Logo.png)

---

## ℹ️ Informazioni sul modello

- **Autore:** [Mattimax](https://huggingface.co/Mattimax)  
- **Organizzazione:** [M.INC](https://huggingface.co/MINC01)  
- **Pagina GitHub:** [microDAC](https://github.com/M-INC-01/microDAC)  
- **Licenza:** GPL-3.0  

**Descrizione:**  
microDAC è un modello linguistico compatto di tipo *Decoder-only*, con circa **40 milioni di parametri**, progettato per la **generazione di testo in italiano**.  
È un’evoluzione di PicoDAC, con maggiore profondità architetturale e un contesto più ampio, mantenendo leggerezza e velocità d’esecuzione.  

Pensato per **chatbot, agenti vocali e applicazioni embedded**, è ottimizzato per risposte fluide, coerenti e naturali, con training supervisionato per evitare la ripetizione dei prompt.

---

## ⚙️ Caratteristiche tecniche

* **Architettura:** Transformer Decoder-only (GPT2-like)  
* **Parametri totali:** ~40 milioni  
* **Vocabolario:** 32.000 token  
* **Lunghezza massima del contesto:** 2048 token  
* **Dimensione embedding:** 512  
* **Numero di layer:** 16  
* **Teste di attenzione:** 8  
* **Feed-Forward (FFN):** 2048 (GELU-new)  
* **Attivazione:** GELU (new)  
* **Precisione:** FP16 / BF16  
* **Gradient checkpointing:** ✅ Attivo  

---

## 🗣️ Tokenizer

* **Tipo:** Byte-Pair Encoding (BPE)  
* **Addestramento:** da zero su `microDAC_dataset.jsonl`  
* **Token speciali:**  
  - `<|user|>` → inizio turno utente  
  - `<|assistant|>` → risposta del modello  
  - `<|sep|>` → fine turno  
  - `<|pad|>`, `<|bos|>`, `<|eos|>` → padding e delimitatori  

Il tokenizer è salvato in `tokenizer_microDAC/` e viene ricreato automaticamente se non presente.

---

## 🎯 Obiettivo di training

Il modello è addestrato per **generare esclusivamente le risposte dell’assistente**, mascherando i token dell’utente.  

**Schema di masking:**
```text
<|user|> ... <|sep|>        → label = -100
<|assistant|> ... <|sep|>   → label = token_id
```

---

## 🧩 Parametri di training

Parametro	Valore

Epochs	2
Batch per device	8
Gradient accumulation	4
Learning rate	3e-4
Weight decay	0.01
Scheduler	Cosine
Warmup ratio	0.05
Max grad norm	1.0
Precision	FP16 / BF16
Optimizer	AdamW (torch)
Checkpointing	ogni 2000 step
Resume automatico	✅
Save best model	✅

---

## ⚠️ Avvertenze e limitazioni

microDAC è un modello sperimentale, soggetto a miglioramenti futuri.

Le prestazioni su conversazioni complesse o troppo lunghe possono degradare.

Non adatto a contenuti sensibili o critici.



---

## 🚀 Uso previsto

- Chatbot leggeri e assistenti in lingua italiana

- Prototipi embedded o mobile

- Fine-tuning personalizzati su dataset specifici


Nota: mantenere input sotto i 2 000 token per risultati ottimali.


---

## 🧰 Installazione

```bash
pip install transformers torch
```

---

## 🧪 Esempio di utilizzo in Python

```python
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

tokenizer = AutoTokenizer.from_pretrained("Mattimax/microDAC")
model = AutoModelForCausalLM.from_pretrained("Mattimax/microDAC").to("cuda")

prompt = "<|user|> Ciao, come stai oggi?<|assistant|>"
inputs = tokenizer(prompt, return_tensors="pt").to("cuda")

outputs = model.generate(**inputs, max_new_tokens=100, temperature=0.7)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
```

---

## 🔗 Integrazione consigliata

Applicazioni mobile o embedded: basso consumo e rapidità.

Sperimentazione NLP: ottimo punto di partenza per LoRA o adattamenti leggeri.

Dataset sintetici: utile per generare coppie domanda-risposta.