microDAC / README.md
Mattimax's picture
Update README.md
b8b5e77 verified
---
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.