Skip to content

Instantly share code, notes, and snippets.

@salvatorecapolupo
Last active February 18, 2026 17:24
Show Gist options
  • Select an option

  • Save salvatorecapolupo/c4e4fd28619c8bf2da8a342f0f12a8d5 to your computer and use it in GitHub Desktop.

Select an option

Save salvatorecapolupo/c4e4fd28619c8bf2da8a342f0f12a8d5 to your computer and use it in GitHub Desktop.

Come funziona davvero un LLM (Large Language Model)

Capitolo 1: La Macchina Ferma

  • 1.1 Cosa (non ) è un LLM

Benvenuti in questa dispensa. Prima di sporcarci le mani con il codice, dobbiamo chiarire un equivoco potenziale. Ovvero: Un LLM non è un motore di ricerca! E nemmeno tuo cugino bravo col computer.

Cosa NON è un LLM

Togliamoci subito il dente. Un Large Language Model (LLM) NON è un database di conoscenza. Quando chiedete qualcosa a un database (come l'orario dei treni), lui cerca la riga giusta e vi dà la risposta esatta. Se la riga non c'è, vi dice "non trovato".

Un LLM, invece:

  • Non "cerca" informazioni.
  • Non ha una memoria di fatti verificati.
  • Non sa cosa è vero e cosa è falso.

Cosa è (davvero) un LLM

Immaginatelo come il correttore automatico del vostro cellulare (T9), ma che ha fatto palestra pesante e ha letto tutta Internet. È un generatore statistico di testo. Il suo unico scopo nella vita è rispondere a questa domanda:

"Data questa sequenza di parole, qual è la parola successiva più probabile?"

Tutto qui. Niente magia, niente coscienza, niente "ragionamento" - come lo intendiamo noi umani. È in qualche modo matematica + informatica applicata alle parole.

Esempio pratico: Se scrivo: "Il gatto è sul..." Il modello calcola le probabilità:

  • Tavolo (45%)
  • Divano (30%)
  • Tetto (15%)
  • ...
  • Microonde (0.001%)

Lui non "sa" dov'è il gatto. Lui sa solo che, statisticamente, nei testi che ha letto, i gatti stanno spesso sui tavoli e raramente nei microonde.

In sintesi

Caratteristica Database / Google LLM (AI Generativa)
Funzionamento Cerca e recupera Genera e predice
Obiettivo Accuratezza Plausibilità
Se non sa la risposta Non risponde Inventa (Allucinazione) 🐺

Nota bene: Chiamiamo "Intelligenza Artificiale" questi sistemi, ma ricordatevi sempre che stiamo parlando di probabilità, non di verità. Adesso andiamo a vedere come fa a prevedere quella parola. :-)

  • 1.2 Il concetto di Inferenza vs Addestramento.

Quella di cui parliamo è la distinzione fondamentale che separa chi usa l'AI da chi capisce l'AI. A volte si sente dire:

"Ho parlato con ChatGPT e ha capito che mi chiamo Mario".

Falso. O meglio: poco preciso. Il modello non ha imparato nè "capito" nulla, nel senso profondo del termine. Se chiudete la chat, lui si dimentica di voi (a meno di funzioni specifiche di memoria a lungo termine aggiunte sopra al modello, ma questa è un'altra storia).

Dobbiamo distinguere due fasi di vita del modello, nettamente separate come il giorno e la notte.

1. Training (addestramento)

Questa è la fase in cui il modello viene creato. È un processo complicato, costoso e molto lungo. Immaginate di prendere uno studente e chiuderlo in una biblioteca per 50 anni a leggere tutto: libri, Wikipedia, codice, ricette, forum. Povero studente: niente serie TV, niente WhatsApp e nè partite di calcio.

  • Cosa succede: Il computer lavora terabyte di testo: impara miliardi di "modi" di indovinare la parola successiva. Se sbaglia, corregge i suoi parametri interni, sfruttando un sistema basato sui "pesi".
  • Costo: Milioni di dollari in elettricità e hardware (GPU).
  • Tempo: Settimane / Mesi.
  • Risultato: Un file modello che "sa" la lingua (inglese, italiano, ecc) e i concetti "tipici" di quella lingua. Ciò significa che riflette anche eventuali pregiudizi, stereotipi e convenzioni, per inciso.

2. Inferenza

Questa è la fase che usiamo da utenti medi, dopo aver concluso il training: ovvero il momento in cui usiamo un LLM pronto all'uso. Quando scarichiama ad esempio il motore di Ollama dal nome Llama 3 o apriamo una chat, stiamo facendo inferenza. L'inferenza è il processo di associazione concettuale per cui posso indovinare come completare un frase: ad esempio data la frase "ci vediamo a piazza..." completerò con "... del Duomo" se mi trovo a Milano, "... del Popolo" se mi trovo a Roma. Il contesto e altri fattori (geografia, periodo, ecc.) possono influenzare la natura dell'inferenza, il che non ha a che vedere con la veridicità di quanto dico.

Ma lo studente / LLM, nel frattempo, è uscito dalla biblioteca. Non può più leggere nuovi libri. Ora deve rispondere alle domande basandosi su quello che ha letto.

  • Cosa succede: Voi date un input (il prompt), il modello consulta i suoi pesi (che ora sono congelati) e calcola la risposta.
  • Costo: Bassissimo (pochi centesimi / gratis sul vostro PC).
  • Tempo: Millisecondi / secondi.

Sul concetto di inferenza potete leggere ad esempio qui.

In breve

Caratteristica Addestramento (Training) Inferenza (Inference)
Metafora Studiare per la laurea Fare l'esame
I pesi del modello Cambiano continuamente (Backpropagation) Sono fissi / Congelati
Hardware richiesto Data Center interi (migliaia di GPU) Un buon PC o anche un telefono
Obiettivo Minimizzare l'errore Generare testo utile

La maggioranza degli LLM in circolazione - per lo più gratis, con estensioni a pagamento: Gemini, ChatGPT, ecc. - non sono adatti ad una analisi accurata del proprio funzionamento, principalmente perchè non sono open source. Se installiamo una app open come Ollama, al contrario, potremo tecnicamente vedere i dettagli di funzionamento e installare un LLM aperto sul vostro computer. Il core di ogni cosa si trova in un file con estensione .gguf e sarà in parte approfondito anche qui(vedi ad esempio questa spiegazione estesa per ulteriori dettagli).

Quando scarichiamo un file .gguf sul computer stiamo scaricando un'istantanea della conoscenza base del modello, come accennato poco fa al momento in cui ha concluso il training. Il fatto che Ollama riesca a funzionare anche offline, mediante la "modalità aereo", testimonia peraltro come quel file sia sufficente a scopo di testare il funzionamento di questi generatori di linguaggio. Puoi scaricare un esempio di file .gguf da qui, ad esempio: https://ollama.com/vaiton/minerva

Restiamo su un esempio pratico: se il modello da noi utilizzato è stato addestrato fino al 2025 e gli chiediamo "Chi ha vinto Sanremo 2026?", tipicamente lui non sa (ma proverà lo stesso a indovinare, in alcuni casi). Non può cercare su internet (a meno che non abbia strumenti appositi, che gli LLM moderni possiedono di default) e non può impararlo dagli utenti (non in modo permanente, quantomeno). Se provate a spiegare qualcosa di nuovo ad un LLM, tenderà a ricordarlo solo finché dura quella conversazione. Il tutto grazie alla cosiddetta finestra di contesto vedi anche qui: appena chiudete la sessione, il file .gguf sul disco rimarrà identico.

  • 1.3 "Aprire la scatola": il file GGUF e i suoi metadati.

GGUF (GPT-Generated Unified Format) è un formato binario ottimizzato per l'inferenza rapida (mmap-friendly) su CPU/GPU consumer (specialmente Apple Silicon). Senza esplorare troppi dettagli, il file .GGUF contiene pesi, configurazione, vocabolario e parametri di quantizzazione del modello. A breve capiremo come sono codificati questi dati e cosa contengono.

Per approfondimenti tecnici rimando al tutorial di prima. I file GUFF possono essere scaricati da huggingface.com.

  • 1.4 I numeri in gioco: Parametri, Pesi, Quantizzazione.

Qui entriamo nel cuore del problema: perché questi modelli sono così pesanti e come facciamo a farli entrare nel vostro laptop. Se aprite il cofano di un LLM trovate una quantità spropositata di numeri con la virgola. Per capire come far girare un'AI sul vostro computer, dovete padroneggiare tre concetti:

  • Parametri
  • Pesi
  • Quantizzazione.
  • Parametri: Immaginate un mixer audio con 8 miliardi di manopole: più manopole possiedi, più sfumature puoi catturare.
  • Pesi (Weights): È la posizione in cui è girata ogni manopola. Una può essere su 0.5, un'altra su -1.2, un'altra su 0.003.

L'addestramento (vedi cap. 1.2) non fa altro che girare le manopole per mesi finché la musica (il testo) che esce non "suona bene".

Quando scaricate e usate un modello, state di fatto scaricando la posizione esatta di tutte quelle 8 miliardi di manopole.

Di default, i computer usano numeri a virgola mobile a 16 bit (FP16) o 32 bit (FP32).

Se usiamo 8 miliardi di parametri:

  • In FP32 saranno 4 byte per parametro => quasi 30 GB
  • In FP16 saranno 2 byte per parametro => quasi 15 GB

La Quantizzazione è l'arte di ridurre la precisione dei numeri, ma senza rendere il modello inutilizzabile. È come passare da un file audio .wav non compresso a un .mp3. Perdi un po' di fedeltà audio, ma il file diventa 10 volte più piccolo e la canzone si sente lo stesso.

Invece di usare 16 bit per ogni numero, ne usiamo 4 (Q4), o addirittura 2 (Q2). Trasformiamo i numeri complessi in numeri interi semplici, raggruppandoli.

  • FP16 (Originale): 0.7354, 0.7356, 0.7359 (Tutti numeri distinti, occupano tanto spazio).
  • INT4 (Quantizzato): Tutti questi numeri vengono arrotondati e mappati nello stesso "cesto", diciamo il valore intero 7 (che è il numero approssimativamente ricorrente)

Quando scaricate un GGUF, vedrete sigle specifiche:

Tag Bit per Peso Dimensione (Modello 8B) Intelligenza (Perplexity) Consigliato?
FP16 16 ~16.0 GB 100% (Originale) No (Troppo grosso)
Q8_0 8 ~8.5 GB 99.9% Solo per server
Q5_K_M 5 ~5.7 GB 99.5% Ottimo se hai RAM
Q4_K_M 4 ~4.8 GB 98% Sì (Best Choice) 🏆
Q2_K 2 ~2.9 GB 70% (Scemo) No (Parla a caso)

Nota del programmatore: Il formato Q4_K_M riduce la RAM necessaria da 16GB a circa 5GB. Il modello diventa "stupido"? Sorprendentemente no. I moderni algoritmi di quantizzazione sono così efficienti che la differenza tra un Q4 e un FP16 è quasi impercettibile per l'uso quotidiano, ma vi permettono di far girare un'intelligenza aliena su un MacBook Air.

Capitolo 2: Il Traduttore (Input)

  • 2.1 Tokenizzazione: spezzare le parole in numeri.
  • 2.2 Byte Pair Encoding (BPE): come si costruisce il vocabolario.
  • 2.3 Il Bias Linguistico: perché l'italiano "costa" più dell'inglese (token count).
  • 2.4 Visualizzare i token: esercizi pratici di segmentazione.

Capitolo 3: La Mappa del Significato (Embeddings)

  • 3.1 Dagli interi ai vettori: cos'è un Embedding.
  • 3.2 Lo Spazio Dimensionale: navigare tra i concetti.
  • 3.3 Misurare la somiglianza: la Cosine Similarity.
  • 3.4 Case Study: Perché "Re" - "Uomo" + "Donna" = "Regina"? (Algebra semantica).

Capitolo 4: Il Motore (Il Transformer)

  • 4.1 L'architettura a Layer (Strati): una catena di montaggio di dati.
  • 4.2 Self-Attention: dare peso alle parole distanti.
  • 4.3 Multi-Head Attention e Grouped-Query Attention (GQA): guardare la frase da più prospettive.
  • 4.4 La memoria a breve termine: KV Cache e Finestra di Contesto.
  • 4.5 Componenti interni: RMSNorm, Feed-Forward Network (FFN) e SwiGLU.

Capitolo 5: La Scelta (Output)

  • 5.1 Next-Token Prediction: l'unico vero compito del modello.
  • 5.2 Dallo spazio vettoriale alla lista di parole: la funzione Softmax.
  • 5.3 La Distribuzione di Probabilità: certezze vs possibilità.
  • 5.4 Tirare i dadi: Temperatura, Sampling e creatività.

Capitolo 6: I Limiti (Realtà vs Statistica)

  • 6.1 Allucinazioni: quando la statistica inventa i fatti.
  • 6.2 Plausibilità vs Verità: il modello non sa cosa è vero, solo cosa "suona bene".
  • 6.3 Cenni sull'Addestramento: Cross-entropy loss, Gradient descent e Fine-tuning (RLHF).
  • 6.4 Conclusione: l'assenza di coscienza e ragionamento.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment