~/tools / Eseguire un LLM locale sul tuo server / Ollama Log Reader

Ollama Log Reader — Leggi un log di Ollama: memoria, layer sulla GPU, contesto, velocità

Incolla il log del server di Ollama, da server.log, journalctl o docker logs, e lo strumento ne estrae ciò che conta: quanta memoria ha usato ogni caricamento di modello e dove (pesi, cache KV, buffer di calcolo, per CPU o GPU), quanti layer sono andati sulla GPU, la lunghezza del contesto, le richieste e il loro stato, la velocità del prompt e della generazione, e ogni avviso, con una spiegazione. Mostra quando un prompt è stato tagliato per stare nel contesto, quando un modello non è entrato in memoria e quando Ollama ha ricaricato un modello. Nulla lascia il tuo browser.

Dove trovare il log

Dalla pagina di risoluzione dei problemi di Ollama. Su Windows, il log più recente è server.log in quella cartella.

# macOS
cat ~/.ollama/logs/server.log

# Linux (systemd)
journalctl -u ollama --no-pager

# Docker
docker logs <container-name>

# Windows
explorer %LOCALAPPDATA%\Ollama

Lette 76 righe su 77.

  • riga 23Il contesto è di 4096 token, più corto dei 32768 supportati dal modello. Input più lunghi richiedono un num_ctx o un OLLAMA_CONTEXT_LENGTH più grande, e più memoria per la cache KV.
  • riga 43Il contesto è di 256 token, più corto dei 32768 supportati dal modello. Input più lunghi richiedono un num_ctx o un OLLAMA_CONTEXT_LENGTH più grande, e più memoria per la cache KV.
  • riga 49Il prompt aveva 633 token e non stava nel contesto. Ollama ha conservato i primi 4 token e la fine del prompt e ha scartato il resto, lasciando 130 token. Aumenta num_ctx, accorcia il prompt, oppure invia truncate impostato a false per ottenere invece un errore.
  • riga 53Una richiesta di 633 token non stava nel contesto di 256 token ed è stata rifiutata (succede quando truncate è false). Aumenta num_ctx o accorcia l'input.
  • riga 55Ollama ha fermato llama-server e lo ha riavviato subito per caricare il modello con altre impostazioni, per esempio un altro num_ctx. Non è un crash.
  • riga 58num_ctx 65536 è più lungo del contesto con cui il modello è stato addestrato, quindi Ollama ha usato 32768.
  • Richieste fallite: 400 POST /api/chat, 404 POST /api/chat

Server

Versione
0.40.11
Indirizzo
[::]:11434
Dispositivi
cpu cpu (1.9 GiB / 1.9 GiB)
Lunghezza del contesto predefinita
4096

Impostazioni (variabili d'ambiente)

OLLAMA_HOST
http://0.0.0.0:11434
OLLAMA_CONTEXT_LENGTH
0 (0 = predefinito)
OLLAMA_NUM_PARALLEL
1
OLLAMA_MAX_LOADED_MODELS
0 (0 = predefinito)
OLLAMA_KEEP_ALIVE
5m0s
OLLAMA_FLASH_ATTENTION
false

Caricamenti di modelli

Caricamento 1 alle 2026-11-07T08:32:08.625Z riga 14

Modello
Qwen2.5 0.5B Instruct · Q4_K - Medium · 373.71 MiB (6.35 BPW) · sha256-c5396e06af29
Lunghezza del contesto
4096 (addestrato per 32768)
Richieste parallele
1
Pesi
512 MiB
Cache KV
48.0 MiB (f16)
Buffer di calcolo
41.3 MiB
Totale
601 MiB
Per dispositivo
CPU 393 MiB, CPU_REPACK 208 MiB
Memoria di sistema
1638 MiB liberi su 1946 MiB, swap 777 MiB libero
Tempo di avvio
1.27 s

Caricamento 2 alle 2026-11-07T08:32:10.384Z riga 34

Modello
Qwen2.5 0.5B Instruct · Q4_K - Medium · 373.71 MiB (6.35 BPW) · sha256-c5396e06af29
Lunghezza del contesto
256 (addestrato per 32768)
Richieste parallele
1
Pesi
512 MiB
Cache KV
3.0 MiB (f16)
Buffer di calcolo
18.8 MiB
Totale
533 MiB
Per dispositivo
CPU 325 MiB, CPU_REPACK 208 MiB
Memoria di sistema
1638 MiB liberi su 1946 MiB, swap 763 MiB libero
Tempo di avvio
1.02 s

Caricamento 3 alle 2026-11-07T08:32:12.223Z riga 59

Modello
Qwen2.5 0.5B Instruct · Q4_K - Medium · 373.71 MiB (6.35 BPW) · sha256-c5396e06af29
Lunghezza del contesto
32768 (addestrato per 32768)
Richieste parallele
1
Pesi
512 MiB
Cache KV
384 MiB (f16)
Buffer di calcolo
139 MiB
Totale
1034 MiB
Per dispositivo
CPU 826 MiB, CPU_REPACK 208 MiB
Memoria di sistema
1638 MiB liberi su 1946 MiB, swap 764 MiB libero
Tempo di avvio
1.02 s

Velocità riportata da llama-server

Token del prompt elaboratiVelocità del promptToken generatiVelocità di generazione
35217.5 token/s759.9 token/s
130227.3 token/s1194.8 token/s
30202.7 token/s562.7 token/s

Richieste

OraStatoDurataRichiesta
2026/11/07 - 08:31:422000.007 sGET /api/version
2026/11/07 - 08:32:0020017.49 sPOST /api/pull
2026/11/07 - 08:32:002000.040 sGET /api/tags
2026/11/07 - 08:32:102001.62 sPOST /api/chat
2026/11/07 - 08:32:122001.89 sPOST /api/chat
2026/11/07 - 08:32:124000.005 sPOST /api/chat
2026/11/07 - 08:32:132001.31 sPOST /api/chat
2026/11/07 - 08:32:134040.002 sPOST /api/chat

Quando un prompt non sta, Ollama lo taglia a num_ctx − max((num_ctx − num_keep) ÷ 2, 1) token: circa metà del contesto, in modo che resti spazio per la risposta. I token del prompt nella tabella delle velocità contano solo i token che non erano nella cache.

llama-server non conta il primo token generato quando calcola la velocità di generazione, quindi il suo valore è un po' più basso di eval_count diviso eval_duration nella risposta dell'API.

Il formato del log cambia da una versione all'altra. Lo strumento segue Ollama v0.40.15 e la build di llama.cpp che usa, e salta le righe che non conosce.

Messaggi dal codice sorgente di Ollama (v0.40.15) e di llama.cpp, verificati con log reali di Ollama 0.40.11 su macOS e su Linux il 2026-11-07. Ollama: Troubleshooting

Tutto avviene nel tuo browser. Lo strumento non si collega a nulla. I log possono contenere percorsi di file, indirizzi IP e nomi di modelli.

Quando Ollama è lento, le risposte ignorano l'inizio di un prompt lungo o una richiesta fallisce con un errore 500, la spiegazione di solito è nel log del server. Il log mescola le righe di Ollama stesso (time=… level=… msg=…), una riga per ogni richiesta HTTP ([GIN] …) e l'output di llama-server, il programma di llama.cpp che Ollama esegue per caricare ogni modello GGUF. Questo strumento legge tutte e tre le cose. Per ogni caricamento di modello mostra la lunghezza del contesto (-c), il numero di richieste parallele (-np), il tipo e la dimensione del file del modello, la lunghezza del contesto con cui è stato addestrato, quanti layer sono stati scaricati sulla GPU, e la memoria dei pesi, della cache KV e dei buffer di calcolo, per dispositivo. Elenca anche le richieste con il loro stato e la loro durata, e la velocità del prompt e della generazione che llama-server stampa dopo ogni richiesta. Poi spiega che cosa è andato storto, usando i messaggi del codice sorgente di Ollama (v0.40.15). Quando un prompt non sta nel contesto, Ollama conserva i primi num_keep token e la fine del prompt, e scarta ciò che sta in mezzo, finché il prompt occupa circa metà del contesto: nel nostro test, un prompt di 633 token con num_ctx 256 è stato tagliato a 130 token. Con truncate impostato a false, la stessa richiesta è stata rifiutata con un errore 400. Un num_ctx superiore alla lunghezza con cui il modello è stato addestrato viene ridotto a quella lunghezza. Quando un modello non entra in memoria, il caricamento fallisce: nel nostro test su Linux con 1.9 GiB di memoria e senza GPU, qwen2.5:7b aveva bisogno di 4,460 MiB per i pesi, llama-server è stato fermato con signal: killed e la richiesta ha restituito 500. Una riga che dice che llama-server è terminato, seguita subito da un nuovo avvio, significa che Ollama stava caricando di nuovo il modello con altre impostazioni, non che è andato in crash. Il formato del log cambia da una versione all'altra; lo strumento legge le righe che conosce e salta le altre. L'abbiamo verificato con log reali di Ollama 0.40.11 su macOS (Apple M1) e su Linux in Docker, senza GPU.

La logica principale di questo strumento è open source, con licenza MIT. github.com/seigo5555/toolkitbox-lib/src/ollama-log.ts

Casi d'uso

  • Scoprire perché un prompt lungo sembra ignorato, o perché una richiesta è fallita con 400 o 500
  • Vedere quanta memoria ha usato davvero un modello, e se è girato sulla GPU, sulla CPU o su entrambe
  • Controllare quale lunghezza del contesto e quali impostazioni ha usato il server, prima di comprare un VPS più grande

Utilizzo

  1. Ottieni il log: cat ~/.ollama/logs/server.log su macOS, journalctl -u ollama --no-pager su Linux, oppure docker logs con il nome del container.
  2. Incollalo. Vengono lette anche le righe che iniziano con un timestamp di journalctl o di docker.
  3. Leggi prima gli avvisi, poi i caricamenti dei modelli, la velocità e le richieste.

FAQ

Perché il mio modello ignora l'inizio di un prompt lungo?

Se il log contiene una riga "truncating input prompt", il prompt non stava nel contesto. Ollama ha conservato i primi num_keep token e la fine, e ha scartato la parte centrale, finché il prompt ha occupato circa metà del contesto. Aumenta num_ctx (o OLLAMA_CONTEXT_LENGTH), accorcia il prompt, oppure invia truncate impostato a false, così Ollama restituisce un errore invece di tagliare.

Che cosa significa "signal: killed"?

llama-server è stato fermato dall'esterno. Nel nostro test su Linux, è successo mentre si caricava un modello che non entrava in memoria, e la richiesta ha restituito 500. Se entro due secondi segue una nuova riga "starting llama-server", è stato Ollama stesso a fermare il vecchio processo per caricare di nuovo il modello con altre impostazioni.

Perché la velocità di generazione nel log è inferiore a eval_count diviso eval_duration?

llama-server non conta il primo token generato, perché arriva dall'ultimo passo dell'elaborazione del prompt, quindi divide per un token in meno. Nel nostro test, 7 token in 675.82 ms sono stati indicati come 8.88 token al secondo, mentre 7 diviso lo stesso tempo dà 10.4.

Come vedo se il modello è girato sulla GPU?

Guarda "layer sulla GPU" nel caricamento del modello. Tutti i layer sulla GPU significa che il modello è girato interamente lì; alcuni layer significa che il resto è girato sulla CPU. Finché il modello è caricato, ollama ps mostra la stessa suddivisione nella colonna PROCESSOR.

Perché alcune righe non vengono lette?

Lo strumento legge le righe di Ollama stesso, le righe delle richieste e le righe di llama-server che contano per memoria, contesto e velocità. Le altre righe, come l'elenco dei metadati del modello, vengono saltate. Il formato cambia tra le versioni, quindi le righe di una versione molto più vecchia o più nuova potrebbero non essere riconosciute.

Il mio log viene inviato da qualche parte?

No. Il log viene letto nel tuo browser. I log possono contenere percorsi di file, indirizzi IP e i nomi dei tuoi modelli, quindi fai attenzione a dove altro li incolli.

Articoli correlati

Correlati