Temperatura, top-p, top-k: i parametri
Il top-p (nucleus sampling) mantiene solo i token più probabili la cui probabilità cumulata raggiunge p, ad esempio 0,9. Il top-k mantiene un numero fisso di candidati, ad esempio 40. La temperatura regola la casualità del campionamento: quando è vicina a 0, il modello sceglie quasi sempre il token più probabile. Ollama parte con una temperatura di 0,8, top-k 40 e top-p 0,9.
Tre valori ricorrono in tutte le impostazioni di un modello locale: temperatura, top-p e top-k. Questa guida spiega cosa ciascuno rimuove o sposta nell'elenco delle parole possibili, con un esempio numerico, i valori predefiniti di Ollama e di llama.cpp, le raccomandazioni pubblicate dai produttori dei modelli e il modo di applicarle.
#Top-p, top-k, temperatura: la definizione in una tabella
Per ogni parola generata, un modello calcola una probabilità per ogni token del suo vocabolario. I parametri di sampling decidono poi quale estrarre. Top-p e top-k riducono la lista dei candidati; la temperatura modifica la differenza tra probabili e improbabili. Nessuno aggiunge conoscenza al modello: regolano soltanto la varietà e il rischio.
| Parametro | Su cosa agisce | Valore basso | Valore alto | Valore predefinito di Ollama |
|---|---|---|---|---|
| temperature | Differenza tra token probabili e improbabili | Risposte più deterministiche | Più varietà, più errori | 0,8 |
| top_p | Dimensione della lista, definita dalla probabilità cumulata | Elenco breve, output conservativo | Elenco ampio, maggiore diversità | 0,9 |
| top_k | Numero massimo di candidati | Pochi candidati | Tanti candidati | 40 |
| min_p | Soglia relativa alla probabilità massima | Filtraggio leggero | Filtraggio forte | 0,0 (disattivato) |
| repeat_penalty | Penalità sui token utilizzati di recente | Più ripetizioni | Meno ripetizioni, rischio di stranezze | 1,0 (disattivato) |
Questi valori predefiniti provengono dalla documentazione di riferimento del Modelfile di Ollama. Molti modelli specificano valori propri nel loro file di configurazione, che sostituiscono questi valori predefiniti: da qui l'utilità di leggere la scheda del modello, come vedremo più avanti.
#Come un LLM sceglie la prossima parola
Il tuo ChatGPT privato e gratuito sulla tua macchina in 1 ora — LM Studio, Ollama, Open WebUI, i tuoi documenti, senza cloud.
- Spazio online a vita
- PDF + file
- Aggiornamenti a vita
Il modello produce, per ogni posizione, una distribuzione di probabilità su tutto il suo vocabolario. Scegliere sempre il token più probabile, una procedura detta decodifica greedy, produce testi piatti, ripetitivi e talvolta bloccati in un ciclo. Si introduce quindi un'estrazione casuale, regolata dai parametri di campionamento. Un seme fisso (seed) rende questa estrazione riproducibile: la documentazione di Ollama precisa che un dato seme produce lo stesso testo per lo stesso prompt.
L'ordine in cui vengono applicati i filtri conta. In llama.cpp, il motore di inferenza GGUF utilizzato in particolare da LM Studio, l'ordine predefinito è: penalità, DRY, top-n sigma, top-k, typical-p, top-p, min-p, XTC e infine la temperatura. In altre parole, top-k e top-p agiscono sulle probabilità originarie e la temperatura serve solo a campionare tra le opzioni rimaste. Molti tutorial affermano il contrario; l'ordine effettivo può variare da un motore all'altro e in llama.cpp si può impostare tramite il parametro --samplers.
#Un esempio numerico: ciò che ogni impostazione conserva
Prendiamo sette candidati per la parola successiva, con le loro probabilità: 0,45 ; 0,25 ; 0,12 ; 0,08 ; 0,05 ; 0,03 ; 0,02. Questa tabella è un calcolo illustrativo, non una misura su un modello reale.
| Filtro | Regola | Candidati conservati | Probabilità coperta |
|---|---|---|---|
| Nessuno | Tutto il vocabolario | 7 | 100 % |
| top_k = 3 | I migliori 3 | 3 | 82 % |
| top_p = 0,9 | Ci si ferma quando la somma cumulativa raggiunge 0,90 | 4 (0,45 + 0,25 + 0,12 + 0,08) | 90 % |
| top_p = 0,7 | Totale di 0,70 | 2 | 70 % |
| min_p = 0,1 | Conservare i token con una probabilità superiore al 10 % di quella del token più probabile, ossia una soglia di 0,045 | 5 | 95 % |
Punto da ricordare: top-k mantiene sempre lo stesso numero di candidati, indipendentemente dalla situazione; top-p e min-p si adattano. Quando il modello è molto sicuro (un token a 0,95), top-p potrebbe conservare solo uno o due candidati; quando esita tra dieci parole, ne conserva di più. Per questo motivo top-p è spesso preferito a top-k.
#1. Temperatura: il pulsante della casualità
Prima del campionamento, la temperatura divide i logit del modello. A bassa temperatura, il divario tra i token aumenta: il più probabile prevale nettamente sugli altri. Ad alta temperatura, il divario si riduce. A 0, il modello sceglie sempre il token più probabile e produce output identici a ogni prova, come conferma la documentazione di llama.cpp.
| Candidato | Probabilità iniziale | T = 0,5 | T = 1,5 |
|---|---|---|---|
| 1er | 45 % | 70 % | 34 % |
| 2e | 25 % | 22 % | 23 % |
| 3e | 12 % | 5 % | 14 % |
| 4e | 8 % | 2 % | 11 % |
| 5e à 7e | Il 10 % in totale | 1,3 % | 17,8 % |
- 0 à 0,3
- Estrazione, classificazione, riassunto fedele: vuoi la stessa risposta ogni volta.
- 0,4 à 0,7
- Redazione tecnica, traduzione, supporto: varietà senza deriva.
- 0,8
- Valore predefinito di Ollama e di llama.cpp: conversazione generale.
- 1 o più
- Creatività, brainstorming; maggiore rischio di errori e digressioni.
#2. Top-p: il filtro adattivo
Top-p, o nucleus sampling, mantiene i token più probabili finché la loro probabilità cumulata raggiunge p. Con 0,9 si scarta la coda che rappresenta il 10 % della probabilità; con 1,0 non si filtra nulla. La documentazione di Ollama ricorda che un valore più alto, ad esempio 0,95, produce un testo più vario, mentre un valore più basso, ad esempio 0,5, produce un testo più mirato e conservativo.
- 0,5 à 0,7
- Molto conservatore: risposte sicure, a volte monotone.
- 0,9
- Valore predefinito di Ollama: taglia la coda senza soffocare la varietà.
- 0,95
- Valore predefinito di llama-server, e valore consigliato da diverse schede dei modelli.
- 1,0
- Filtro disattivato: resta solo la temperatura ad agire.
#3. Top-k: limite fisso
Top-k conserva solo i k token più probabili. La documentazione di Ollama descrive questo parametro come un modo per ridurre la probabilità di generare contenuti senza senso: con un valore più alto (100), le risposte sono più varie; con un valore più basso (10), sono più conservative. Il suo valore predefinito è 40, come in llama.cpp, dove 0 lo disattiva.
| Filtro | Vantaggio | Limite | Quando usarlo |
|---|---|---|---|
| top_k | Semplice, limita il calcolo | Ignora la forma della distribuzione: troppi candidati quando il modello è sicuro, troppo pochi quando esita | Guardrail ampio (da 20 a 100) |
| top_p | Si adatta al livello di confidenza del modello | Può lasciare passare una coda lunga se la distribuzione è piatta | Impostazione principale per la diversità |
| min_p | Soglia relativa alla probabilità massima, stabile anche a temperatura elevata | Meno conosciuto, non attivo per impostazione predefinita in Ollama | Alternativa a top_p, spesso con temperatura più alta |
Per la query «top p vs top k»: usa top-p come impostazione principale, mantieni top-k come misura di protezione e non modificare entrambi nella stessa prova, altrimenti non saprai quale abbia prodotto la differenza.
#Valori predefiniti e raccomandazioni dei fornitori
I valori predefiniti di un motore sono un compromesso generico. Gli editori dei modelli pubblicano spesso valori adatti ai propri modelli, che possono discostarsi da quelli predefiniti. Ecco cosa raccomanda la scheda di Qwen3.5 per i suoi modelli, da confrontare con i valori predefiniti di Ollama (temperatura 0,8, top-p 0,9, top-k 40).
| Modalità | Temperatura | top_p | top_k | presence_penalty |
|---|---|---|---|---|
| Ragionamento, compiti generali | 1,0 | 0,95 | 20 | 1,5 |
| Ragionamento, codice preciso | 0,6 | 0,95 | 20 | 0,0 |
| Senza ragionamento, compiti generali | 0,7 | 0,8 | 20 | 1,5 |
Questi valori valgono per questa famiglia di modelli, non per tutti. Le schede di altri editori riportano valori diversi: cerca la sezione sui parametri di campionamento consigliati nella scheda Hugging Face o nella pagina del modello nella libreria Ollama. La scheda di Qwen precisa anche che il supporto di questi parametri varia in base al motore di inferenza.
#Penalità: ripetizione, frequenza, presenza
I modelli locali, soprattutto quelli piccoli o fortemente quantizzati, a volte ripetono in continuazione le stesse frasi. Le penalità sono il rimedio, ma i loro valori predefiniti sono spesso poco conosciuti. In Ollama, repeat_penalty vale 1,0 per impostazione predefinita, quindi la penalità è disattivata; la documentazione indica 1,5 come esempio di un valore che penalizza più fortemente. Il valore 1,1 spesso citato è una scelta da fare, non un valore predefinito.
- repeat_penalty
- Penalizza i token visti di recente; repeat_last_n (64 per impostazione predefinita) definisce la finestra considerata.
- frequency_penalty
- Penalità proporzionale al numero di occorrenze, per le generazioni lunghe.
- presence_penalty
- Penalità applicata non appena un token è comparso, per incoraggiare un vocabolario più vario; Qwen raccomanda 1,5 in diverse sue modalità, con il rischio di mescolare le lingue se il valore è troppo alto.
#Applicare questi parametri in Ollama
Esistono due metodi: un Modelfile, che assegna valori a un modello denominato, o il campo options di una richiesta API, che accetta gli stessi parametri del Modelfile. Il Modelfile è adatto all'uso quotidiano, l'API a un programma.
Per approfondire i Modelfile (prompt di sistema, contesto, template), consulta la guida di personalizzazione. Per LM Studio e Jan, gli stessi parametri si impostano nel pannello di configurazione del modello.
#Modelli di ragionamento: non regolare tutto con la temperatura
I modelli di ragionamento producono una traccia di riflessione prima della risposta. Su Ollama, questi modelli espongono un campo di riflessione separato e i comandi disponibili variano in base al modello: la documentazione invita a interrogare l'API show per conoscere i valori accettati e il valore predefinito. Per gpt-oss, ad esempio, i livelli sono low, medium e high, con medium come valore predefinito.
Per ridurre i lanci inutili su una domanda semplice, agisci prima su questo livello di riflessione, quando esiste, piuttosto che sulla temperatura. La temperatura, invece, deve seguire la documentazione del modello: un ragionamento troppo freddo può bloccarsi, un ragionamento troppo caldo può dispersi.
#Preset iniziali per tipo di utilizzo
| Uso | Temperatura | top_p | Altri parametri |
|---|---|---|---|
| Estrazione, classificazione, JSON | 0 à 0,2 | 0,9 | Formato rigoroso richiesto nel prompt |
| Riassunto fedele | 0,2 à 0,3 | 0,9 | repeat_penalty leggermente superiore a 1 |
| Conversazione generale | 0,7 à 0,8 | 0,9 | Impostazioni predefinite del motore |
| Scrittura, idee | 0,8 à 1,0 | 0,95 | presence_penalty moderata |
| Narrativa, creatività | 1,0 | 0,95 | Controllare le digressioni |
Questi preset sono punti di partenza, non misurazioni. Modifica un parametro alla volta, esegui di nuovo tre volte lo stesso prompt e confronta: se i tre tentativi danno la stessa risposta mentre ti aspetti varietà, la temperatura è troppo bassa oppure il seed è fisso.
#Sintomi e impostazioni da provare
- Il modello ripete la stessa frase
- Attiva repeat_penalty con un valore intorno a 1,1 o presence_penalty, oppure accorcia la generazione con num_predict.
- Risposte piatte e generiche
- Aumenta la temperatura di uno scatto (da 0,7 a 0,9) o allenta il vincolo di top_p.
- Il modello inventa fatti
- Abbassa la temperatura, ma tieni presente che non basta: vedi la guida sulle allucinazioni.
- JSON rotto
- Temperatura bassa e formato richiesto esplicitamente; usa la modalità di output strutturato di Ollama quando è disponibile.
- Mescolanza di lingue o parole strane
- Diminuisci presence_penalty o repeat_penalty, o aumenta leggermente la quantizzazione del modello.
Che cos'è il top-p in un LLM?+
Qual è la differenza tra top-p e top-k?+
È necessario regolare temperatura e top-p contemporaneamente?+
Quale temperatura per il codice?+
Quali sono i valori predefiniti in Ollama?+
Che cosa è min-p e serve usarlo?+
- Ollama Modelfile: personalizzare un modello
- Le basi del prompting
- Padroneggiare i system prompt
- Comprendere la finestra di contesto
- Limitare le allucinazioni di un LLM locale
- Fonte: documentazione di riferimento del Modelfile di Ollama
- Fonte: scheda Qwen3.5-9B
- Fonte: llama.cpp, opzioni di llama-server
- Fonte: Ollama, modelli di ragionamento
Un feedback, un errore, una precisazione? Facci sapere, così la guida migliora per tutti.