Davide Palma (ElDavo) commited on
reupload
Browse files- .gitattributes +2 -0
- README.md +176 -1
- README.txt +11 -0
- bpe.model +3 -0
- bpe.vocab +0 -0
- config.json +20 -0
- emma5.onnx +3 -0
- emma5.onnx.data +3 -0
- emma5_full_config.json +59 -0
- tokenizer.model +1 -0
- tokenizer_config.json +8 -0
.gitattributes
CHANGED
|
@@ -3,6 +3,7 @@
|
|
| 3 |
*.bin filter=lfs diff=lfs merge=lfs -text
|
| 4 |
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
| 5 |
*.ckpt filter=lfs diff=lfs merge=lfs -text
|
|
|
|
| 6 |
*.ftz filter=lfs diff=lfs merge=lfs -text
|
| 7 |
*.gz filter=lfs diff=lfs merge=lfs -text
|
| 8 |
*.h5 filter=lfs diff=lfs merge=lfs -text
|
|
@@ -33,3 +34,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
| 3 |
*.bin filter=lfs diff=lfs merge=lfs -text
|
| 4 |
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
| 5 |
*.ckpt filter=lfs diff=lfs merge=lfs -text
|
| 6 |
+
*.data filter=lfs diff=lfs merge=lfs -text
|
| 7 |
*.ftz filter=lfs diff=lfs merge=lfs -text
|
| 8 |
*.gz filter=lfs diff=lfs merge=lfs -text
|
| 9 |
*.h5 filter=lfs diff=lfs merge=lfs -text
|
|
|
|
| 34 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 36 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
| 37 |
+
emma5.onnx.data filter=lfs diff=lfs merge=lfs -text
|
README.md
CHANGED
|
@@ -1,3 +1,178 @@
|
|
| 1 |
---
|
| 2 |
-
license:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 3 |
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
---
|
| 2 |
+
license: openrail
|
| 3 |
+
authors:
|
| 4 |
+
- Egomnia S.p.A.
|
| 5 |
+
language:
|
| 6 |
+
- it
|
| 7 |
+
tags:
|
| 8 |
+
- llm
|
| 9 |
+
- italian
|
| 10 |
+
- gpt
|
| 11 |
+
- onnx
|
| 12 |
+
- text-generation
|
| 13 |
+
- enterprise
|
| 14 |
+
- swiGLU
|
| 15 |
+
- gqa
|
| 16 |
+
- int8
|
| 17 |
+
library_name: onnxruntime
|
| 18 |
+
pipeline_tag: text-generation
|
| 19 |
+
datasets:
|
| 20 |
+
- custom-mixture
|
| 21 |
---
|
| 22 |
+
|
| 23 |
+
# 🇮🇹 Emma-5 (ONNX)
|
| 24 |
+
|
| 25 |
+
## Preamble
|
| 26 |
+
|
| 27 |
+
This model has been reuploaded for archiving purposes.
|
| 28 |
+
I'm not affiliated in anyway with Egomnia and its guy.
|
| 29 |
+
Unmodified readme below.
|
| 30 |
+
|
| 31 |
+
## Overview
|
| 32 |
+
|
| 33 |
+
**Emma-5** è un Large Language Model decoder-only sperimentale sviluppato da **Egomnia S.p.A.**, progettato per lingua italiana.
|
| 34 |
+
|
| 35 |
+
Sito ufficiale: https://emma.egomnia.com
|
| 36 |
+
|
| 37 |
+
Il modello è pensato per:
|
| 38 |
+
- comprensione contestuale moderata
|
| 39 |
+
- generazione di contenuti di media complessità
|
| 40 |
+
|
| 41 |
+
Non è progettato per applicazioni safety-critical o reasoning avanzato multi-step.
|
| 42 |
+
|
| 43 |
+
## Architettura
|
| 44 |
+
|
| 45 |
+
- Tipo: GPT decoder-only
|
| 46 |
+
- Transformer blocks: 28
|
| 47 |
+
- Hidden size: 1.280
|
| 48 |
+
- Attention heads: 16 query + 4 KV (GQA 4:1)
|
| 49 |
+
- Head dimension: 80
|
| 50 |
+
- Feed-forward dimension: 3.456 (SwiGLU, ff_mult 8/3)
|
| 51 |
+
- Activation function: SwiGLU
|
| 52 |
+
- Normalization: RMSNorm
|
| 53 |
+
- Positional encoding: RoPE (theta 10.000)
|
| 54 |
+
- Dropout: 0.0
|
| 55 |
+
- Embeddings: tied (token embedding = lm_head)
|
| 56 |
+
|
| 57 |
+
## Contesto e vocabolario
|
| 58 |
+
|
| 59 |
+
- Context length: 2.048 token
|
| 60 |
+
- Vocabulary size: 50.000 token
|
| 61 |
+
- Tokenizer: SentencePiece BPE con byte fallback
|
| 62 |
+
|
| 63 |
+
## Dataset di training
|
| 64 |
+
|
| 65 |
+
- Codice: 40,48%
|
| 66 |
+
- Generalista: 39,46%
|
| 67 |
+
- Enciclopedico: 15,68%
|
| 68 |
+
- Libri: 3,07%
|
| 69 |
+
- Colloquiale: 0,73%
|
| 70 |
+
- Politico: 0,55%
|
| 71 |
+
|
| 72 |
+
## Training pipeline
|
| 73 |
+
|
| 74 |
+
- Pretraining: 200.000 step
|
| 75 |
+
- Fine-tuning: SFT (3 epoche)
|
| 76 |
+
- DPO: disabilitato
|
| 77 |
+
- Corpus pretraining: 54,36 GB raw (~10,8 miliardi token)
|
| 78 |
+
|
| 79 |
+
## Export e ottimizzazione
|
| 80 |
+
|
| 81 |
+
- Framework originale: PyTorch
|
| 82 |
+
- Export: ONNX
|
| 83 |
+
- Opset: 18
|
| 84 |
+
- Quantizzazione: INT8
|
| 85 |
+
- Peso modello ONNX: 2,46 GB (FP32)
|
| 86 |
+
- Peso quantizzato INT8: ~560 MB
|
| 87 |
+
|
| 88 |
+
## Uso previsto
|
| 89 |
+
|
| 90 |
+
Emma-5 è progettato per:
|
| 91 |
+
|
| 92 |
+
- piccoli chatbot aziendali per PMI
|
| 93 |
+
- piccole automazioni
|
| 94 |
+
- generazione contenuti moderatamente complessi
|
| 95 |
+
|
| 96 |
+
## Uso non previsto
|
| 97 |
+
|
| 98 |
+
- applicazioni mediche, legali o finanziarie critiche
|
| 99 |
+
- sistemi ad alta affidabilità o mission critical
|
| 100 |
+
- reasoning complesso multi-step
|
| 101 |
+
- ricerca scientifica avanzata senza supervisione
|
| 102 |
+
|
| 103 |
+
## Focus prestazionale
|
| 104 |
+
|
| 105 |
+
Il modello è ottimizzato per:
|
| 106 |
+
|
| 107 |
+
- equilibrio tra qualità e latenza
|
| 108 |
+
- inference su CPU/GPU entry-level
|
| 109 |
+
- contesti leggeri
|
| 110 |
+
- generazione coerente su testi strutturati
|
| 111 |
+
|
| 112 |
+
## Limitazioni
|
| 113 |
+
|
| 114 |
+
- capacità di reasoning ancora limitata rispetto a modelli di grandi dimensioni
|
| 115 |
+
- possibile generazione di contenuti imprecisi o incompleti
|
| 116 |
+
- sensibilità a prompt ambigui o molto lunghi
|
| 117 |
+
- contesto limitato a 2.048 token
|
| 118 |
+
|
| 119 |
+
## Licenza
|
| 120 |
+
|
| 121 |
+
Distribuito sotto licenza **OpenRAIL-M**, con eventuali vincoli derivati dalle licenze dei dataset utilizzati.
|
| 122 |
+
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.
|
| 123 |
+
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.
|
| 124 |
+
|
| 125 |
+
## Autore
|
| 126 |
+
|
| 127 |
+
Egomnia S.p.A.
|
| 128 |
+
|
| 129 |
+
## Sito ufficiale
|
| 130 |
+
|
| 131 |
+
https://emma.egomnia.com
|
| 132 |
+
|
| 133 |
+
## Manifesto di Emma — LLM italiano per la sovranità tecnologica
|
| 134 |
+
|
| 135 |
+
Per la sovranità tecnologica italiana
|
| 136 |
+
|
| 137 |
+
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.
|
| 138 |
+
|
| 139 |
+
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.
|
| 140 |
+
|
| 141 |
+
I nostri modelli nascono per cambiare questo paradigma.
|
| 142 |
+
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.
|
| 143 |
+
|
| 144 |
+
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.
|
| 145 |
+
|
| 146 |
+
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.
|
| 147 |
+
|
| 148 |
+
Questa non è solo innovazione tecnologica.
|
| 149 |
+
È una scelta di indipendenza.
|
| 150 |
+
È una visione industriale.
|
| 151 |
+
|
| 152 |
+
È il nostro contributo.
|
| 153 |
+
|
| 154 |
+
Dedicato a mia figlia, Emma.
|
| 155 |
+
|
| 156 |
+
Matteo Achilli
|
| 157 |
+
Fondatore di Egomnia
|
| 158 |
+
|
| 159 |
+
## Note
|
| 160 |
+
|
| 161 |
+
Italian GPT: Emma-5 rappresenta un modello di nuova generazione della famiglia Emma, bilanciando efficienza e capacità generativa per applicazioni enterprise leggere nel contesto italiano.
|
| 162 |
+
|
| 163 |
+
---
|
| 164 |
+
|
| 165 |
+
## Inference (ONNX Runtime)
|
| 166 |
+
|
| 167 |
+
```python
|
| 168 |
+
import onnxruntime as ort
|
| 169 |
+
|
| 170 |
+
session = onnxruntime.InferenceSession("model.onnx")
|
| 171 |
+
|
| 172 |
+
outputs = session.run(
|
| 173 |
+
None,
|
| 174 |
+
{
|
| 175 |
+
"input_ids": input_ids,
|
| 176 |
+
"attention_mask": attention_mask
|
| 177 |
+
}
|
| 178 |
+
)
|
README.txt
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
MODELLO EMMA-5 — Egomnia S.p.A.
|
| 2 |
+
Parametri trainabili: ~550.4M
|
| 3 |
+
Architettura: decoder-only Transformer + GQA (n_head=16, n_kv_head=4) + RMSNorm + RoPE(theta=10000.0) + SwiGLU + tied embeddings.
|
| 4 |
+
Context length: 2048.
|
| 5 |
+
Tokenizer: SentencePiece BPE byte_fallback, vocab 50000.
|
| 6 |
+
Limite VRAM PyTorch per processo: 14.00 GB.
|
| 7 |
+
Pipeline: pretrain (200000 step) → SFT (3 epoche). DPO disabilitato.
|
| 8 |
+
Export: ONNX opset 18 (path attention 'math', portabile) in formato fp32 con External Data Format consolidato in 'emma5.onnx.data'. Per caricarlo: onnx.load('emma5.onnx') con emma5.onnx.data nella stessa cartella.
|
| 9 |
+
Provenance: emma5_full_config.json contiene la configurazione esatta.
|
| 10 |
+
Corpus pretraining: 54.36 GB raw → ~10.8B token.
|
| 11 |
+
Licence: OpenRAIL-M License
|
bpe.model
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:54c131b4c26707f9b3186a8698d3ba33d7aefd98002a068a0557d5f3a74d3e7c
|
| 3 |
+
size 1060753
|
bpe.vocab
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
config.json
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"model_name": "emma-5",
|
| 3 |
+
"model_type": "gpt",
|
| 4 |
+
"architecture": "decoder-only-transformer-gqa",
|
| 5 |
+
"vocab_size": 50000,
|
| 6 |
+
"hidden_size": 1280,
|
| 7 |
+
"num_hidden_layers": 28,
|
| 8 |
+
"num_attention_heads": 16,
|
| 9 |
+
"num_kv_heads": 4,
|
| 10 |
+
"intermediate_size": 3456,
|
| 11 |
+
"context_length": 2048,
|
| 12 |
+
"rope_theta": 10000.0,
|
| 13 |
+
"norm_type": "rmsnorm",
|
| 14 |
+
"activation": "swiglu",
|
| 15 |
+
"tokenizer": "sentencepiece",
|
| 16 |
+
"tied_embeddings": true,
|
| 17 |
+
"alignment": "SFT",
|
| 18 |
+
"gpu_memory_limit_gb": 14.0,
|
| 19 |
+
"onnx_opset": 18
|
| 20 |
+
}
|
emma5.onnx
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:3db26acd094b47c7aaf57414dba73d8c6dcd2b2e888694b344342c3964e6b75d
|
| 3 |
+
size 1361508
|
emma5.onnx.data
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:d54a34a1ea19a6f1490d7c4bc5addb9005c5cda720d7a44fc3d5d47a8c49f57d
|
| 3 |
+
size 2457400320
|
emma5_full_config.json
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"data_root": "/data/emma5_lite",
|
| 3 |
+
"raw_pretrain_path": "pretraining.txt",
|
| 4 |
+
"finetune_path": "finetuning_prompt_response.json",
|
| 5 |
+
"rlhf_path": "rlhf.json",
|
| 6 |
+
"use_dpo": false,
|
| 7 |
+
"gpu_memory_limit_gb": 14.0,
|
| 8 |
+
"vocab_size": 50000,
|
| 9 |
+
"spm_input_sentence_size": 5000000,
|
| 10 |
+
"spm_max_sentence_length": 8192,
|
| 11 |
+
"tokens_dtype": "uint16",
|
| 12 |
+
"n_embd": 1280,
|
| 13 |
+
"n_layer": 28,
|
| 14 |
+
"n_head": 16,
|
| 15 |
+
"n_kv_head": 4,
|
| 16 |
+
"ff_mult": 2.6666666666666665,
|
| 17 |
+
"block_size": 2048,
|
| 18 |
+
"rope_theta": 10000.0,
|
| 19 |
+
"dropout": 0.0,
|
| 20 |
+
"use_flash_attn": true,
|
| 21 |
+
"pt_micro_batch": 4,
|
| 22 |
+
"pt_grad_accum": 32,
|
| 23 |
+
"pt_max_steps": 200000,
|
| 24 |
+
"pt_lr": 0.0004,
|
| 25 |
+
"pt_min_lr": 4e-05,
|
| 26 |
+
"pt_warmup_steps": 4000,
|
| 27 |
+
"pt_weight_decay": 0.1,
|
| 28 |
+
"pt_betas": [
|
| 29 |
+
0.9,
|
| 30 |
+
0.95
|
| 31 |
+
],
|
| 32 |
+
"pt_grad_clip": 1.0,
|
| 33 |
+
"pt_eval_interval": 500,
|
| 34 |
+
"pt_eval_iters": 100,
|
| 35 |
+
"pt_log_interval": 50,
|
| 36 |
+
"pt_ckpt_interval": 2000,
|
| 37 |
+
"pt_grad_checkpoint": true,
|
| 38 |
+
"sft_micro_batch": 1,
|
| 39 |
+
"sft_grad_accum": 64,
|
| 40 |
+
"sft_epochs": 3,
|
| 41 |
+
"sft_lr": 1.2e-05,
|
| 42 |
+
"sft_warmup_steps": 150,
|
| 43 |
+
"sft_weight_decay": 0.0,
|
| 44 |
+
"sft_grad_clip": 1.0,
|
| 45 |
+
"sft_log_interval": 25,
|
| 46 |
+
"sft_use_8bit_optimizer": true,
|
| 47 |
+
"sft_dynamic_padding": true,
|
| 48 |
+
"dpo_micro_batch": 2,
|
| 49 |
+
"dpo_grad_accum": 8,
|
| 50 |
+
"dpo_epochs": 4,
|
| 51 |
+
"dpo_steps": 4000,
|
| 52 |
+
"dpo_lr": 7e-06,
|
| 53 |
+
"dpo_beta": 0.1,
|
| 54 |
+
"dpo_warmup_steps": 100,
|
| 55 |
+
"dpo_grad_clip": 1.0,
|
| 56 |
+
"dpo_log_interval": 25,
|
| 57 |
+
"onnx_opset": 18,
|
| 58 |
+
"seed": 1337
|
| 59 |
+
}
|
tokenizer.model
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
bpe.model
|
tokenizer_config.json
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"tokenizer_type": "sentencepiece",
|
| 3 |
+
"model_file": "bpe.model",
|
| 4 |
+
"pad_id": 0,
|
| 5 |
+
"unk_id": 1,
|
| 6 |
+
"bos_id": 2,
|
| 7 |
+
"eos_id": 3
|
| 8 |
+
}
|