DACMini / README.md
Mattimax's picture
Update README.md
79e7930 verified
|
raw
history blame
5.01 kB
metadata
license: mit
datasets:
  - e-palmisano/italian_dataset_mix
language:
  - it
base_model:
  - GroNLP/gpt2-small-italian

HuggingFace M.INC

Logo di microDAC

Mattimax/DACMini — PicoDAC


Descrizione

PicoDAC è un modello di linguaggio compatto progettato per chat in lingua italiana.
Basato su una architettura Transformer derivata da GroNLP/gpt2-small-italian, è ottimizzato per essere rapido, leggero e facilmente distribuibile su dispositivi a risorse limitate.

Fa parte della collezione Little_DAC (DATA-AI Chat), ed è l’ultimo e più grande modello della serie, pensato per offrire un compromesso ideale tra efficienza e qualità linguistica.

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.


Dataset di addestramento

Il modello è stato addestrato su un mix di dataset italiani provenienti da e-palmisano/italian_dataset_mix, composto da coppie user-assistant strutturate in formato conversazionale.
L’obiettivo è stato l’apprendimento di turni di dialogo naturali e coerenti in italiano.


Obiettivo

Allenare un modello linguistico leggero e performante per chatbot in lingua italiana, con particolare attenzione a:

  • riduzione della latenza di generazione;
  • supporto per prompt in formato chat (<|user|>, <|assistant|>);
  • mantenimento di risposte naturali e grammaticalmente corrette in contesti brevi.

Caratteristiche tecniche

  • Architettura: GPT-2 Small (italian adaptation)
  • Dimensione del vocabolario: ~50.000 token
  • Lunghezza massima del contesto: 512 token
  • Numero di strati (layers): 12
  • Numero di teste di attenzione: 12
  • Dimensione embedding: 768
  • Quantizzazione: supportata (8-bit / 4-bit opzionale con bitsandbytes)

Avvertenze e limitazioni

  • Modello sperimentale: può produrre errori logici o risposte non pertinenti.
  • Non addestrato per temi sensibili o contenuti specialistici.
  • Prestazioni limitate su testi lunghi o conversazioni multi-turno.
  • Non progettato per usi commerciali senza ulteriore validazione.

Uso previsto

  • Chatbot sperimentali in lingua italiana.
  • Applicazioni leggere o offline dove la dimensione del modello è critica.
  • Test e prototipazione di pipeline NLP o dataset sintetici.

Consigliato: input brevi, contesti semplici e prompt formattati correttamente.


Esempio d’uso (Inferenza)

from transformers import AutoTokenizer, AutoModelForCausalLM
import torch

# Carica modello e tokenizer
model_name = "Mattimax/DACMini"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)
model.eval()

def chat_inference(prompt, max_new_tokens=150, temperature=0.7, top_p=0.9):
    formatted_prompt = f"<|user|> {prompt.strip()} <|assistant|>"
    inputs = tokenizer(formatted_prompt, return_tensors="pt")
    with torch.no_grad():
        output = model.generate(
            **inputs,
            max_new_tokens=max_new_tokens,
            temperature=temperature,
            top_p=top_p,
            do_sample=True,
            pad_token_id=tokenizer.pad_token_id or tokenizer.eos_token_id
        )
    generated_text = tokenizer.decode(output[0], skip_special_tokens=True)
    response = generated_text.split("<|assistant|>")[-1].strip()
    return response

# Esempio interattivo
if __name__ == "__main__":
    while True:
        user_input = input("👤 Utente: ")
        if user_input.lower() in ["exit", "quit"]:
            break
        print("🤖 Assistant:", chat_inference(user_input), "\n")

Integrazione consigliata

  • Applicazioni mobile o embedded → basso consumo di RAM e CPU.
  • Sperimentazione NLP → utile per test di prompt, fine-tuning mirato o creazione di dati sintetici.
  • Pipeline leggere di dialogo → compatibile con transformers e bitsandbytes per quantizzazione.

Riferimenti