--- license: openrail base_model: egomnia/emma-5 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 - swiGLU - gqa datasets: - custom-mixture --- # 🇮🇹 Emma-5 (GGUF) ## Premessa Questo repository contiene una conversione **non ufficiale** in formato GGUF di [`egomnia/emma-5`](https://huggingface.co/egomnia/emma-5), realizzata con llama.cpp. Il modello originale **Emma-5** è 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 La prima conversione GGUF è stata creata mentre il repository originale `egomnia/emma-5` non era disponibile pubblicamente. In quel momento i pesi sono stati recuperati da [`eldavoo/emma-5`](https://huggingface.co/eldavoo/emma-5), un reupload/archivio pubblico del modello. Dopo la ripubblicazione di [`egomnia/emma-5`](https://huggingface.co/egomnia/emma-5), i file del modello e del tokenizer sono stati confrontati con quelli di `eldavoo/emma-5` e verificati come byte-identici. Per questo motivo i metadata di questo repository puntano ora a `egomnia/emma-5` come modello base originale. Grazie a `eldavoo` per aver mantenuto disponibile l'archivio pubblico usato come sorgente al momento della conversione iniziale. 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-5-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-5-F32.gguf` - `emma-5-F16.gguf` - `emma-5-BF16.gguf` - `emma-5-Q8_0.gguf` - `emma-5-Q6_K.gguf` - `emma-5-Q5_K_M.gguf` - `emma-5-Q5_K_S.gguf` - `emma-5-Q5_1.gguf` - `emma-5-Q5_0.gguf` - `emma-5-Q4_K_M.gguf` - `emma-5-Q4_K_S.gguf` - `emma-5-Q4_1.gguf` - `emma-5-Q4_0.gguf` - `emma-5-IQ4_NL.gguf` - `emma-5-IQ4_XS.gguf` - `emma-5-Q3_K_L.gguf` - `emma-5-Q3_K_M.gguf` - `emma-5-Q3_K_S.gguf` - `emma-5-IQ3_M.gguf` - `emma-5-IQ3_S.gguf` - `emma-5-Q2_K.gguf` - `emma-5-TQ2_0.gguf` - `emma-5-TQ1_0.gguf` - `emma-5-Q1_0.gguf` - `emma-5-MXFP4_MOE.gguf` Le quantizzazioni sono state verificate localmente come riproducibili a partire da `emma-5-F32.gguf` con llama.cpp: gli output generati coincidono byte-per-byte con i file pubblicati. ## Esecuzione con llama.cpp ### Chat interattiva ```bash llama-cli -m emma-5-F32.gguf --jinja -ngl 99 -c 2048 -cnv ``` ### Prompt diretto ```bash llama-cli -m emma-5-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: ### Risposta: ``` Con `--jinja` il formato viene applicato automaticamente. Per il completamento grezzo, usa lo stesso formato su una sola riga. ## Parametri di campionamento Né i repository ufficiali né il checkpoint ONNX definiscono parametri di campionamento: 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 non provengono quindi da Egomnia: sono valori di riferimento generici, scelti per questa conversione come 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-5-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-5-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, e fedele al checkpoint ONNX, 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-5 è 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 di [`egomnia/emma-5`](https://huggingface.co/egomnia/emma-5). ## Overview **Emma-5** è un "mini" Large Language Model decoder-only sperimentale sviluppato da **Egomnia S.p.A.**, progettato per lingua italiana. Sito ufficiale: https://emma.egomnia.com Il modello è pensato per: - comprensione contestuale moderata - generazione di contenuti di media-piccola complessità Non è progettato per applicazioni safety-critical o reasoning avanzato multi-step. ## Architettura - Tipo: GPT decoder-only - Transformer blocks: 28 - Hidden size: 1.280 - Attention heads: 16 query + 4 KV (GQA 4:1) - Head dimension: 80 - Feed-forward dimension: 3.456 (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 - Codice: 40,48% - Generalista: 39,46% - Enciclopedico: 15,68% - Libri: 3,07% - Colloquiale: 0,73% - Politico: 0,55% ## Training pipeline - Pretraining: 200.000 step - Fine-tuning: SFT (3 epoche) - DPO: disabilitato - Corpus pretraining: 54,36 GB raw (~10,8 miliardi token) ## Export e ottimizzazione originali - Framework originale: PyTorch - Export originale: ONNX - Opset: 18 - Quantizzazione ONNX: INT8 - Peso modello ONNX: 2,46 GB (FP32) - Peso quantizzato INT8: ~560 MB ## Uso non previsto - applicazioni mediche, legali o finanziarie critiche - sistemi ad alta affidabilità o mission critical - reasoning complesso multi-step - ricerca scientifica avanzata senza supervisione ## Focus prestazionale Il modello è ottimizzato per: - equilibrio tra qualità e latenza - inference su CPU/GPU entry-level - contesti leggeri ## Limitazioni - capacità di reasoning ancora limitata rispetto a modelli di grandi dimensioni - possibile generazione di contenuti imprecisi o incompleti - sensibilità a prompt ambigui o molto lunghi - 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