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.
|