275 lines
9.9 KiB
Markdown
275 lines
9.9 KiB
Markdown
|
|
---
|
|||
|
|
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 l’uso, la modifica e la distribuzione del modello anche in ambito commerciale, imponendo tuttavia restrizioni sull’utilizzo 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 l’intelligenza artificiale non sia soltanto una tecnologia, ma un’infrastruttura 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 dell’intelligenza 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.
|