Downloads · 30 days
27
24% of all-time downloads
FlavioRubensOttaviani/Cipro-V1-Nano-Language-Model
Cipro-V1-Nano-Language-Model is a text generation model from FlavioRubensOttaviani. Use it when you need the model to write or continue text. It is set up for pytorch. The card lists the license as mit.
⚠️ PROJECT STATUS: FASE 1 (ALPHA) Nano LLM specializzato in Finanza & Economia. Sviluppato da zero in 2.5 mesi con un budget di soli 18€.
Downloads · 30 days
27
24% of all-time downloads
All-time downloads
114
Public
Repo size
203 MB
Likes
0
Public
Click a slice to open those files.
.bin184 MB · 90%
From the Hugging Face model README
⚠️ PROJECT STATUS: FASE 1 (ALPHA) Nano LLM specializzato in Finanza & Economia. Sviluppato da zero in 2.5 mesi con un budget di soli 18€.
Ester Egg "La stazione venne inaugurata il 29 maggio 1999 come parte del prolungamento da Ottaviano a Valle Aurelia." -Wiki
Cipro V1 non è un modello generalista: è un Nano Language Model verticale, progettato specificamente per il dominio economico-finanziario italiano.
Il progetto dimostra come creare un'IA settoriale ("Domain Expert") utilizzando una pipeline di addestramento rigorosa, partendo da zero fino alla specializzazione tramite Instruction Tuning.
Per costruire un modello capace di parlare di "tassi BCE" e "spread" partendo da una rete neurale vuota, abbiamo seguito una strategia a due fasi sequenziali:
I numeri confermano il successo della strategia "Language First, Task Second":
Nota: La Loss SFT molto bassa (0.41) indica che il modello ha "memorizzato" molto bene i concetti chiave, ideale per scopi didattici, sebbene comporti un certo overfitting.
Il progetto nasce come risorsa educativa per dimostrare come costruire, addestrare e specializzare (SFT) una Intelligenza Artificiale Generativa utilizzando PyTorch puro, senza affidarsi a librerie pre-confezionate di alto livello.
Cipro V1 è basato su un'architettura Transformer Decoder-only. A differenza dei modelli encoder (come BERT), Cipro V1 è autoregressivo: genera il token successivo basandosi sulla sequenza precedente.
d_model): 512.Il modello implementa diverse ottimizzazioni didattiche moderne:
LayerNorm è applicata prima dell'attenzione e del feed-forward per una maggiore stabilità dei gradienti.[BOS], [EOS].Il modello è stato addestrato in due fasi distinte su una singola GPU.
Addestramento non supervisionato su 18.5 Milioni di caratteri di testi economici misti (Sintetici + Istituzionali BCE).
Raffinamento su un dataset curato di coppie Domanda/Risposta (JSON).
Il modello è in grado di definire concetti economici, anche se con occasionali imprecisioni logiche dovute alla dimensione ridotta ("Nano").
Input: che cosa è la politica monetaria?
Cipro V1: "La politica monetaria è l’insieme delle azioni adottate da una banca centrale per controllare l’offerta di moneta e le condizioni di liquidità nell’economia..."
Input: cosa è il rischio di credito?
Cipro V1: "Il rischio di credito viene valutato attraverso modelli di rating, analisi di bilancio e indicatori come la probabilità di default..."

(Screenshot reale della sessione di test)
I risultati mostrati nell'immagine sono un successo tecnico straordinario per un modello di soli 30M parametri addestrato da zero. Ecco cosa ci dicono questi output sulla natura delle Reti Neurali Generative:
Nel log vediamo che il modello risponde alla domanda sul WACC in modo quasi robotico e perfetto.
Alla domanda sul Rischio di Mercato, Cipro V1 risponde parlando di "domanda e offerta che coincidono".
Cipro V1 non è ChatGPT. È un laboratorio trasparente che mostra come un'IA impara a parlare prima ancora di imparare a ragionare.
⚠️ Nota Importante: Questo codice non utilizza API esterne o modelli pre-addestrati di Hugging Face.
Utilizza l'architettura Custom GPT definita nel file model.py presente in questa repository.
Cipro-V1 è un modello di linguaggio "Nano" sviluppato da zero, specializzato nel dominio economico e finanziario. Non è un semplice wrapper: l'architettura, il tokenizer e il processo di addestramento sono stati progettati specificamente per gestire la terminologia tecnica del settore.
Per utilizzare il modello è necessario abilitare trust_remote_code=True poiché l'architettura è definita localmente nel file model.py.
import torch
import torch.nn.functional as F
from transformers import AutoModel, AutoTokenizer
# Caricamento Modello e Tokenizer
model_id = "FlavioRubensOttaviani/Cipro-V1-Nano-Language-Model"
model = AutoModel.from_pretrained(model_id, trust_remote_code=True)
tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True)
model.eval()
def genera_risposta(prompt, max_tokens=150):
# Formattazione Q&A coerente con il Fine-Tuning
testo = f"Domanda: {prompt}\nRisposta: "
input_ids = torch.tensor(tokenizer.encode(testo).ids).unsqueeze(0)
generated = input_ids
for _ in range(max_tokens):
# Window di contesto (384)
idx_cond = generated[:, -384:]
with torch.no_grad():
logits = model(idx_cond)
# Temperatura impostata a 0.7 per bilanciare precisione e creatività
logits = logits[:, -1, :] / 0.7
# Top-K filtering (K=60)
v, _ = torch.topk(logits, 60)
logits[logits < v[:, [-1]]] = -float('Inf')
probs = F.softmax(logits, dim=-1)
next_token = torch.multinomial(probs, num_samples=1)
if next_token.item() == tokenizer.token_to_id("[EOS]"):
break
generated = torch.cat((generated, next_token), dim=1)
return tokenizer.decode(generated[0][input_ids.shape[1]:].tolist())
# Esempio di utilizzo
domanda = "Che cosa sono i flussi di cassa?"
print(f"Cipro-V1: {genera_risposta(domanda)}")
📂 Datasets Correlati
I dati utilizzati per il training sono disponibili qui:
Pre-training: Nano Italian Corpus - Economics
👥 Credits & Authors
Progetto sviluppato da:
Dr. Ottaviani Flavio Rubens AI Engineer
Davide Buccino Data Analyst
Rilasciato sotto licenza MIT per la ricerca open-source sui Small Language Models (SLM).