~/tools / Ejecutar un LLM local en tu servidor / Ollama Log Reader

Ollama Log Reader — Lee un log de Ollama: memoria, capas en la GPU, contexto, velocidad

Pega el log del servidor de Ollama, de server.log, journalctl o docker logs, y la herramienta extrae lo importante: cuánta memoria usó cada carga de modelo y dónde (pesos, caché KV, buffers de cómputo, por CPU o GPU), cuántas capas fueron a la GPU, la longitud de contexto, las solicitudes y su estado, la velocidad del prompt y de la generación, y cada advertencia, con su explicación. Muestra cuándo se recortó un prompt para que cupiera en el contexto, cuándo un modelo no cupo en la memoria y cuándo Ollama volvió a cargar un modelo. Nada sale de tu navegador.

Dónde encontrar el log

De la página de solución de problemas de Ollama. En Windows, el log más reciente es server.log en esa carpeta.

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

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

# Docker
docker logs <container-name>

# Windows
explorer %LOCALAPPDATA%\Ollama

Se leyeron 76 de 77 líneas.

  • línea 23El contexto es de 4096 tokens, menor que los 32768 que admite el modelo. Las entradas más largas necesitan un num_ctx u OLLAMA_CONTEXT_LENGTH mayor, y más memoria para la caché KV.
  • línea 43El contexto es de 256 tokens, menor que los 32768 que admite el modelo. Las entradas más largas necesitan un num_ctx u OLLAMA_CONTEXT_LENGTH mayor, y más memoria para la caché KV.
  • línea 49El prompt tenía 633 tokens y no cupo en el contexto. Ollama conservó los primeros 4 tokens y el final del prompt y descartó el resto, dejando 130 tokens. Aumenta num_ctx, acorta el prompt o envía truncate en false para obtener un error en su lugar.
  • línea 53Una solicitud de 633 tokens no cupo en el contexto de 256 tokens y fue rechazada (esto ocurre cuando truncate es false). Aumenta num_ctx o acorta la entrada.
  • línea 55Ollama detuvo llama-server y lo inició de nuevo enseguida para cargar el modelo con otros ajustes, por ejemplo otro num_ctx. Esto no es una caída.
  • línea 58num_ctx 65536 es mayor que el contexto con el que se entrenó el modelo, así que Ollama usó 32768.
  • Solicitudes fallidas: 400 POST /api/chat, 404 POST /api/chat

Servidor

Versión
0.40.11
Dirección
[::]:11434
Dispositivos
cpu cpu (1.9 GiB / 1.9 GiB)
Longitud de contexto predeterminada
4096

Ajustes (variables de entorno)

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

Cargas de modelo

Carga 1 a las 2026-11-07T08:32:08.625Z línea 14

Modelo
Qwen2.5 0.5B Instruct · Q4_K - Medium · 373.71 MiB (6.35 BPW) · sha256-c5396e06af29
Longitud de contexto
4096 (entrenado para 32768)
Solicitudes en paralelo
1
Pesos
512 MiB
Caché KV
48.0 MiB (f16)
Buffers de cómputo
41.3 MiB
Total
601 MiB
Por dispositivo
CPU 393 MiB, CPU_REPACK 208 MiB
Memoria del sistema
1638 MiB libres de 1946 MiB, swap 777 MiB libre
Tiempo de arranque
1.27 s

Carga 2 a las 2026-11-07T08:32:10.384Z línea 34

Modelo
Qwen2.5 0.5B Instruct · Q4_K - Medium · 373.71 MiB (6.35 BPW) · sha256-c5396e06af29
Longitud de contexto
256 (entrenado para 32768)
Solicitudes en paralelo
1
Pesos
512 MiB
Caché KV
3.0 MiB (f16)
Buffers de cómputo
18.8 MiB
Total
533 MiB
Por dispositivo
CPU 325 MiB, CPU_REPACK 208 MiB
Memoria del sistema
1638 MiB libres de 1946 MiB, swap 763 MiB libre
Tiempo de arranque
1.02 s

Carga 3 a las 2026-11-07T08:32:12.223Z línea 59

Modelo
Qwen2.5 0.5B Instruct · Q4_K - Medium · 373.71 MiB (6.35 BPW) · sha256-c5396e06af29
Longitud de contexto
32768 (entrenado para 32768)
Solicitudes en paralelo
1
Pesos
512 MiB
Caché KV
384 MiB (f16)
Buffers de cómputo
139 MiB
Total
1034 MiB
Por dispositivo
CPU 826 MiB, CPU_REPACK 208 MiB
Memoria del sistema
1638 MiB libres de 1946 MiB, swap 764 MiB libre
Tiempo de arranque
1.02 s

Velocidad informada por llama-server

Tokens de prompt procesadosVelocidad del promptTokens generadosVelocidad de generación
35217.5 tokens/s759.9 tokens/s
130227.3 tokens/s1194.8 tokens/s
30202.7 tokens/s562.7 tokens/s

Solicitudes

HoraEstadoDuraciónSolicitud
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

Cuando un prompt no cabe, Ollama lo recorta a num_ctx − max((num_ctx − num_keep) ÷ 2, 1) tokens: aproximadamente la mitad del contexto, para que quede espacio para la respuesta. Los tokens de prompt de la tabla de velocidad cuentan solo los tokens que no estaban en la caché.

llama-server no cuenta el primer token generado al calcular la velocidad de generación, así que su valor es algo menor que eval_count dividido por eval_duration en la respuesta de la API.

El formato del log cambia de una versión a otra. La herramienta sigue Ollama v0.40.15 y la compilación de llama.cpp que usa, y omite las líneas que no conoce.

Mensajes del código fuente de Ollama (v0.40.15) y de llama.cpp, comprobados con logs reales de Ollama 0.40.11 en macOS y en Linux el 2026-11-07. Ollama: Troubleshooting

Todo se hace en tu navegador. La herramienta no se conecta a nada. Los logs pueden contener rutas de archivos, direcciones IP y nombres de modelos.

Cuando Ollama va lento, las respuestas ignoran el principio de un prompt largo o una solicitud falla con un error 500, la explicación suele estar en el log del servidor. El log mezcla las líneas propias de Ollama (time=… level=… msg=…), una línea por solicitud HTTP ([GIN] …) y la salida de llama-server, el programa de llama.cpp que Ollama ejecuta para cargar cada modelo GGUF. Esta herramienta lee las tres cosas. Para cada carga de modelo muestra la longitud de contexto (-c), el número de solicitudes en paralelo (-np), el tipo y el tamaño del archivo del modelo, la longitud de contexto con la que se entrenó, cuántas capas se descargaron a la GPU, y la memoria de los pesos, de la caché KV y de los buffers de cómputo, por dispositivo. También lista las solicitudes con su estado y su duración, y la velocidad del prompt y de la generación que llama-server imprime después de cada solicitud. Después explica qué salió mal, usando los mensajes del código fuente de Ollama (v0.40.15). Cuando un prompt no cabe en el contexto, Ollama conserva los primeros num_keep tokens y el final del prompt, y descarta lo que hay en medio, hasta que el prompt ocupa aproximadamente la mitad del contexto: en nuestra prueba, un prompt de 633 tokens con num_ctx 256 se recortó a 130 tokens. Con truncate en false, la misma solicitud fue rechazada con un error 400. Un num_ctx superior a la longitud con la que se entrenó el modelo se reduce a esa longitud. Cuando un modelo no cabe en la memoria, la carga falla: en nuestra prueba en Linux con 1.9 GiB de memoria y sin GPU, qwen2.5:7b necesitó 4,460 MiB para sus pesos, llama-server se detuvo con signal: killed y la solicitud devolvió 500. Una línea que dice que llama-server terminó, seguida enseguida de un nuevo inicio, significa que Ollama estaba cargando el modelo otra vez con otros ajustes, no que se haya caído. El formato del log cambia de una versión a otra; la herramienta lee las líneas que conoce y omite el resto. Lo comprobamos con logs reales de Ollama 0.40.11 en macOS (Apple M1) y en Linux dentro de Docker, sin GPU.

La lógica principal de esta herramienta es de código abierto, con licencia MIT. github.com/seigo5555/toolkitbox-lib/src/ollama-log.ts

Casos de uso

  • Averiguar por qué un prompt largo parece ignorarse, o por qué una solicitud falló con 400 o 500
  • Ver cuánta memoria usó realmente un modelo, y si se ejecutó en la GPU, en la CPU o en ambas
  • Comprobar qué longitud de contexto y qué ajustes usó el servidor, antes de comprar un VPS más grande

Cómo usarlo

  1. Obtén el log: cat ~/.ollama/logs/server.log en macOS, journalctl -u ollama --no-pager en Linux, o docker logs con el nombre del contenedor.
  2. Pégalo. También se leen las líneas que empiezan con una marca de tiempo de journalctl o de docker.
  3. Lee primero las advertencias, y después las cargas de modelo, la velocidad y las solicitudes.

FAQ

¿Por qué mi modelo ignora el principio de un prompt largo?

Si el log tiene una línea "truncating input prompt", el prompt no cupo en el contexto. Ollama conservó los primeros num_keep tokens y el final, y descartó la parte central, hasta que el prompt ocupó aproximadamente la mitad del contexto. Aumenta num_ctx (o OLLAMA_CONTEXT_LENGTH), acorta el prompt o envía truncate en false, para que Ollama devuelva un error en lugar de recortar.

¿Qué significa "signal: killed"?

llama-server fue detenido desde fuera. En nuestra prueba en Linux, esto ocurrió mientras se cargaba un modelo que no cabía en la memoria, y la solicitud devolvió 500. Si una nueva línea "starting llama-server" aparece en menos de dos segundos, Ollama detuvo él mismo el proceso anterior para cargar el modelo otra vez con otros ajustes.

¿Por qué la velocidad de generación del log es menor que eval_count dividido por eval_duration?

llama-server no cuenta el primer token generado, porque sale del último paso del procesamiento del prompt, así que divide por un token menos. En nuestra prueba, 7 tokens en 675.82 ms se informaron como 8.88 tokens por segundo, mientras que 7 dividido por el mismo tiempo da 10.4.

¿Cómo veo si el modelo se ejecutó en la GPU?

Mira "capas en la GPU" en la carga del modelo. Todas las capas en la GPU significa que el modelo se ejecutó allí por completo; algunas capas significa que el resto se ejecutó en la CPU. Mientras el modelo está cargado, ollama ps muestra la misma división en la columna PROCESSOR.

¿Por qué no se leen algunas líneas?

La herramienta lee las líneas propias de Ollama, las líneas de solicitud y las líneas de llama-server que importan para la memoria, el contexto y la velocidad. Las demás líneas, como la lista de metadatos del modelo, se omiten. El formato cambia entre versiones, por lo que las líneas de una versión mucho más antigua o más nueva pueden no reconocerse.

¿Mi log se envía a algún sitio?

No. El log se lee en tu navegador. Los logs pueden contener rutas de archivos, direcciones IP y los nombres de tus modelos, así que ten cuidado con dónde más los pegas.

Artículos relacionados

Relacionados