Files
emma-4-GGUF/README.md

275 lines
9.9 KiB
Markdown
Raw Normal View History

---
license: openrail
base_model: sasitsar/emma-4
base_model_relation: quantized
library_name: gguf
pipeline_tag: text-generation
language:
- it
authors:
- Egomnia S.p.A.
tags:
- gguf
- llama.cpp
- italian
- gpt
- text-generation
- enterprise
- lightweight
- swiGLU
- gqa
datasets:
- custom-mixture
---
# 🇮🇹 Emma-4 (GGUF)
## Premessa
Questo repository contiene una conversione **non ufficiale** in formato GGUF di Emma-4, realizzata con llama.cpp.
Il modello originale **Emma-4** è stato sviluppato da **Egomnia S.p.A.**. Questo repository non è affiliato a Egomnia S.p.A. e non modifica l'autorialità del modello originale.
### Provenienza dei pesi
Questi **non sono i file originali pubblicati da Egomnia**: un repository ufficiale `egomnia/emma-4` non è disponibile pubblicamente su Hugging Face. I pesi sono stati recuperati da [`sasitsar/emma-4`](https://huggingface.co/sasitsar/emma-4), un reupload/archivio pubblico del checkpoint ONNX, e da lì convertiti in GGUF.
Per questo motivo i metadata di questo repository indicano `sasitsar/emma-4` come modello base. L'autorialità e i diritti sul modello restano attribuiti a Egomnia S.p.A. secondo la licenza e il model card originali.
## File disponibili
Il file `emma-4-F32.gguf` è la conversione GGUF in F32 del modello originale. Le altre varianti sono state ricavate da questo file con `llama-quantize`, usando i tipi di quantizzazione supportati da llama.cpp.
Sono disponibili:
- `emma-4-F32.gguf`
- `emma-4-F16.gguf`
- `emma-4-BF16.gguf`
- `emma-4-Q8_0.gguf`
- `emma-4-Q6_K.gguf`
- `emma-4-Q5_K_M.gguf`
- `emma-4-Q5_K_S.gguf`
- `emma-4-Q5_1.gguf`
- `emma-4-Q5_0.gguf`
- `emma-4-Q4_K_M.gguf`
- `emma-4-Q4_K_S.gguf`
- `emma-4-Q4_1.gguf`
- `emma-4-Q4_0.gguf`
- `emma-4-IQ4_NL.gguf`
- `emma-4-IQ4_XS.gguf`
- `emma-4-Q3_K_L.gguf`
- `emma-4-Q3_K_M.gguf`
- `emma-4-Q3_K_S.gguf`
- `emma-4-IQ3_M.gguf`
- `emma-4-IQ3_S.gguf`
- `emma-4-Q2_K.gguf`
- `emma-4-TQ2_0.gguf`
- `emma-4-TQ1_0.gguf`
- `emma-4-MXFP4_MOE.gguf`
Le quantizzazioni sono state generate a partire da `emma-4-F32.gguf` e sono riproducibili localmente con llama.cpp. Il file `emma-4-F32.gguf` è inoltre stato verificato rispetto al checkpoint ONNX originale: i tensori coincidono bit-per-bit (a meno della trasposizione e della permutazione RoPE) e la generazione greedy risulta identica a quella del runtime ONNX.
## Esecuzione con llama.cpp
### Chat interattiva
```bash
llama-cli -m emma-4-F32.gguf --jinja -ngl 99 -c 2048 -cnv
```
### Prompt diretto
```bash
llama-cli -m emma-4-F32.gguf --jinja -ngl 99 -c 2048 -st -p "Qual è la capitale d'Italia?"
```
`--jinja` applica il chat template incorporato nel GGUF. `-ngl 99` carica i layer in GPU, se disponibile; omettilo per usare solo la CPU. `-c 2048` imposta la context length massima del modello.
## Adattamenti rispetto al checkpoint ONNX
Per l'architettura `llama` di llama.cpp sono stati applicati due adattamenti:
- RoPE: le proiezioni Q e K sono permutate dal layout half-split (GPT-NeoX) al layout interleaved (GPT-J), come per i modelli LLaMA.
- Chat template: il formato di istruzione Alpaca italiano usato nell'SFT è incorporato nel file (`tokenizer.chat_template`).
## Formato del prompt
```text
### Istruzione: <richiesta> ### Risposta:
```
Con `--jinja` il formato viene applicato automaticamente. Per il completamento grezzo, usa lo stesso formato su una sola riga.
## Parametri di campionamento
I repository ufficiali non specificano parametri di campionamento per l'inferenza, e nemmeno il checkpoint ONNX li contiene: un modello ONNX espone soltanto i logit, mentre `temperature`, `top-p` e `top-k` vengono applicati a valle dal codice di inferenza, non dal modello stesso. I valori seguenti sono quindi valori di riferimento generici, non prescritti da Egomnia, scelti per un compromesso ragionevole tra coerenza e varietà dell'output, e possono essere adattati liberamente al caso d'uso:
- `temperature`: 0.7
- `top-p`: 0.9
- `top-k`: 40
I default di llama.cpp sono diversi, quindi per usare questi valori conviene impostarli manualmente, incluso `--min-p 0`.
Il `--repeat-penalty` non va invece impostato: llama.cpp lo lascia già a `1.0`, cioè nessuna penalità di ripetizione, coerentemente con un percorso di inferenza ONNX che non applica alcuna penalità.
```bash
llama-cli -m emma-4-F32.gguf --jinja -c 2048 -ngl 99 -cnv \
--temp 0.7 --top-k 40 --top-p 0.9 --min-p 0
```
Server OpenAI-compatibile:
```bash
llama-server -m emma-4-F32.gguf --jinja -c 2048 -ngl 99 \
--temp 0.7 --top-k 40 --top-p 0.9 --min-p 0
```
Per un output deterministico e riproducibile usa `--temp 0` (greedy).
## Nota sul tokenizer
Il tokenizer SentencePiece originale normalizza i ritorni a capo (`nmt_nfkc`, `remove_extra_whitespaces`), mentre il tokenizer di llama.cpp non lo fa nello stesso modo. Per evitare differenze nella tokenizzazione usa `--jinja`, oppure, nei prompt grezzi, spazi singoli al posto dei caratteri di a capo.
## Nota sul multi-turno
Emma-4 è stato addestrato (SFT) principalmente su singoli turni istruzione/risposta. È quindi più affidabile a turno singolo. In conversazioni a più turni la qualità può calare e l'output dipende da come viene ricostruita la cronologia del contesto.
Per risultati più fedeli conviene inviare una istruzione completa per ogni richiesta.
---
## Informazioni sul modello originale
Le informazioni seguenti derivano dal model card originale di Emma-4 (Egomnia S.p.A.), recuperato da [`sasitsar/emma-4`](https://huggingface.co/sasitsar/emma-4). È stato rimosso unicamente l'esempio di esecuzione con ONNX Runtime; il resto è lasciato invariato.
## Overview
**Emma-4** è un Large Language Model decoder-only sperimentale sviluppato da **Egomnia S.p.A.**, ottimizzato per lingua italiana e progettato per applicazioni leggere e piccole automazioni.
Sito ufficiale: https://emma.egomnia.com
Il modello è progettato per essere:
- efficiente
- veloce in inference
- utilizzabile su infrastrutture leggere o locali
- adatto a micro-imprese e workflow automatizzati
Non è progettato per ragionamento avanzato o uso critico.
## Architettura
- Tipo: GPT decoder-only
- Transformer blocks: 24
- Hidden size: 1.024
- Attention heads: 16 query + 4 KV (GQA 4:1)
- Head dimension: 64
- Feed-forward dimension: 2.752 (SwiGLU, ff_mult 8/3)
- Activation function: SwiGLU
- Normalization: RMSNorm
- Positional encoding: RoPE (theta 10.000)
- Dropout: 0.0
- Embeddings: tied (token embedding = lm_head)
## Contesto e vocabolario
- Context length: 2.048 token
- Vocabulary size: 50.000 token
- Tokenizer: SentencePiece BPE con byte fallback
## Dataset di training
- Enciclopedico: 43,55%
- Codice: 23,65%
- Generalista: 20,71%
- Libri: 8,53%
- Colloquiale: 2,03%
- Politico: 1,54%
## Alignment
- Supervised Fine-Tuning (SFT)
- Direct Preference Optimization (DPO): disabilitato
## Export e ottimizzazione
- Framework originale: PyTorch
- Export: ONNX
- Opset: 18
- Quantizzazione: INT8
- Peso modello ONNX: 1,48 GB
- Peso quantizzato INT8: ~55 MB
## Intended Use
Emma-4 è progettato per:
- NLP generalista in italiano
## Utilizzo non consigliato
- ragionamento complesso multi-step
- applicazioni medicali, legali o finanziarie critiche
- sistemi ad alta affidabilità
- analisi scientifica avanzata
## Focus prestazionale
Il modello è ottimizzato per:
- inference veloce
- riduzione dei costi computazionali
- utilizzo enterprise leggero
- deployment su CPU o ambienti limitati
## Limitazioni
- capacità limitata su reasoning complesso
- possibili allucinazioni
- sensibilità a prompt lunghi o ambigui
- contesto limitato a 2.048 token
## Licenza
Distribuito sotto licenza **OpenRAIL-M**, con eventuali vincoli derivati dalle licenze dei dataset utilizzati.
Questa licenza consente luso, la modifica e la distribuzione del modello anche in ambito commerciale, imponendo tuttavia restrizioni sullutilizzo in scenari potenzialmente dannosi, illegali o non etici, secondo i principi di Responsible AI e nel rispetto delle eventuali restrizioni derivanti dalle licenze dei dataset utilizzati.
Si richiede esprezzamente di citare **Egomnia S.p.A.** come autore del modello in caso di utilizzo di quest'ultimo per prodotti, servizi, pubblicazioni o documentazione tecnica.
## Autore
Egomnia S.p.A.
## Sito ufficiale
https://emma.egomnia.com
## Manifesto di Emma — LLM italiano per la sovranità tecnologica
Per la sovranità tecnologica italiana
Noi crediamo che lintelligenza artificiale non sia soltanto una tecnologia, ma uninfrastruttura critica per il futuro economico, culturale e democratico di una nazione.
Per troppo tempo, i modelli linguistici che plasmano informazione, lavoro e conoscenza sono stati sviluppati altrove, secondo logiche, valori e priorità non sempre allineate con il contesto italiano ed europeo.
I nostri modelli nascono per cambiare questo paradigma.
Non è solo il lancio di un nuovo modello, ma una presa di posizione chiara: rilanciare un ecosistema italiano dellintelligenza artificiale, capace di essere autonomo, competitivo e coerente con le esigenze del nostro Paese.
La famiglia dei LLM "Emma" è anche il risultato di un lavoro costruito nel tempo. Il modello è stato addestrato utilizzando, in parte, dataset proprietari realizzati e custoditi per anni, mai ceduti a terzi. Un patrimonio informativo unico, che siamo convinti possa diventare nel tempo il nostro vero elemento distintivo rispetto ai grandi attori globali.
Oggi non abbiamo la presunzione di competere con i nomi che guidano il settore: Emma rappresenta un primo passo, concreto ma ancora iniziale, all'interno di un percorso di crescita e innovazione che intendiamo sviluppare negli anni a venire.
Questa non è solo innovazione tecnologica.
È una scelta di indipendenza.
È una visione industriale.
È il nostro contributo.
Dedicato a mia figlia, Emma.
Matteo Achilli
Fondatore di Egomnia
## Note
Italian Light GPT: Emma-4 è un modello leggero, valido per piccoli chatbot aziendali e per automazioni leggere di supporto ai processi per micro imprese italiane.