Ejecutar GLM en un VPS con Ollama: modelo y RAM
GLM 5.2 en Ollama es solo cloud y sus 756B parámetros no caben en un VPS. Usa GLM-4.5-Air y consulta la RAM necesaria según la cuantización.
¿Se puede ejecutar GLM 5.2 en un VPS?
No. Conviene conocer el motivo antes de alquilar nada. A fecha de 18 August 2026, GLM 5.2 en la biblioteca de Ollama tiene exactamente una etiqueta, glm-5.2:cloud. Una etiqueta :cloud se ejecuta en los servidores de Ollama. Su servidor envía el prompt y recibe los tokens, por lo que los pesos nunca llegan al disco. El modelo tiene 756 billion parameters. Con cuatro bits por parámetro, los 756 billion parameters ocupan aproximadamente 378 GB de pesos. Eso es sólo el cálculo básico, antes de contar el contexto, las activaciones o el sistema operativo. Ningún plan VPS estándar ofrece tanta memoria.
El modelo GLM que sí cabe en un servidor alquilado es glm-4.7-flash. Se publica con pesos descargables en 4 etiquetas. Es un modelo de mixture-of-experts. Esto significa que sólo se ejecuta una parte pequeña de la red para cada token. Z.ai lo describe como 30B-A3B: 30 billion parameters en total y aproximadamente 3 billion activos por token. Por tanto, esta guía responde a la pregunta que puede aplicar. Fije una etiqueta, dimensione el servidor, mida su propia velocidad y mantenga privado el endpoint.
Verifique la etiqueta antes de copiar cualquier comando, incluidos los de esta guía. La biblioteca de Ollama cambia sin previo aviso. Abra la lista de etiquetas de glm-4.7-flash y confirme que la etiqueta sigue existiendo. Si ha aparecido una versión más reciente de GLM con pesos locales, prefierala y registre la etiqueta que haya probado realmente.
Si quiere utilizar GLM 5.2 de todos modos, ollama run glm-5.2:cloud funciona después de ollama signin y, desde el lado del cliente, se comporta como cualquier otro modelo de Ollama. Comprenda lo que implica: el prompt sale de su servidor. Si el motivo para alojarlo usted mismo es que los datos deben permanecer en su máquina, una etiqueta :cloud no cumple ese requisito.
Qué etiquetas de GLM existen y cuál fijar
Aquí importan tres entradas oficiales de GLM. glm-5.2 y glm-5.1 sólo están disponibles en la nube. glm-4.7-flash es la versión local, y estas son sus etiquetas publicadas con el tamaño de descarga que Ollama indica para cada una.
The data behind this chart
[
{
"label": "q4_K_M",
"download_gb": 19
},
{
"label": "latest",
"download_gb": 19
},
{
"label": "q8_0",
"download_gb": 32
},
{
"label": "bf16",
"download_gb": 60
}
]Son cifras publicadas en la página de la biblioteca, no mediciones. latest y q4_K_M aparecen con 19 GB, por lo que latest actualmente se resuelve en la compilación Q4. Esto puede cambiar con cualquier nueva publicación, por lo que nunca debe escribir un ollama pull glm-4.7-flash sin especificar en un script ni en un Dockerfile. Indique la cuantización. La etiqueta más grande, bf16, es una descarga de 60 GB que contiene los pesos bfloat16 sin cuantizar.
Una búsqueda en la biblioteca también devuelve cargas de usuarios con un espacio de nombres y una barra en el nombre, como someuser/glm-5.2. La barra indica que la publicación procede de una cuenta de usuario, por lo que se trata de una republicación de la comunidad y no de la entrada oficial. Nadie garantiza qué pesos contiene. Trátela como trataría cualquier binario sin firma que encontrara en Internet.
Instalar Ollama y descargar la etiqueta exacta
El instalador de Linux de Ollama se ejecuta con un solo comando.
curl -fsSL https://ollama.com/install.sh | sh
ollama --versionEl instalador crea un servicio de systemd que se ejecuta como el usuario ollama. Confirme que se haya iniciado antes de descargar nada.
systemctl status ollama --no-pagerActive: active (running) indica que la API está escuchando en el puerto 11434. Si la unidad no existe, el instalador recurrió a una instalación del binario sin servicio, y la documentación de Ollama para Linux proporciona el archivo de servicio que debe crear manualmente.
La página glm-4.7-flash indica una versión mínima de Ollama. Un binario antiguo no ejecuta el modelo más lentamente: lo rechaza. La descarga falla con un mensaje que indica que el modelo requiere una versión más reciente de Ollama. Vuelva a ejecutar el script de instalación para actualizarlo. A fecha del 18 August 2026, la versión actual es 0.32.14, muy superior a ese mínimo.
Ahora descargue una etiqueta por nombre.
ollama pull glm-4.7-flash:q4_K_M
ollama lsollama ls debería mostrar glm-4.7-flash:q4_K_M con un tamaño cercano a los 19 GB publicados. Si la descarga falla a mitad de camino, no queda nada ejecutable, así que vuelva a ejecutar el mismo comando. La causa más habitual de una descarga fallida en un plan pequeño es que el disco esté lleno, no un problema de red, porque el modelo se escribe en /usr/share/ollama/.ollama/models del sistema de archivos raíz. Compruébelo con df -h /usr/share/ollama antes de empezar.
¿Cuánta RAM necesita cada cuantización?
Tome el tamaño de descarga como mínimo y añada el resto. Los pesos deben permanecer en memoria. Además, se necesita la caché KV (caché de clave/valor), que es la memoria que usa el runtime para recordar los tokens que ya están en la conversación, junto con los búferes de cálculo y la memoria que use el sistema operativo. Un equipo con exactamente 19 GB de RAM no ejecutará la etiqueta de 19 GB.
No existe un único multiplicador válido para todos los casos, porque la caché KV aumenta con la longitud de contexto permitida y el resto varía entre versiones del runtime. Por eso, mida en lugar de hacer estimaciones. Cargue el modelo con un prompt trivial y lea la memoria reservada por el servidor.
ollama run glm-4.7-flash:q4_K_M "Reply with the single word: ready"
ollama psollama ps muestra el modelo cargado con una columna SIZE y una columna PROCESSOR. SIZE es la memoria que el runtime reservó realmente. Ese es el número que debe comparar con su planificación. PROCESSOR indica dónde se realiza el trabajo, por lo que 100% CPU significa que no se utilizó la GPU.
Cuando el modelo no cabe, el fallo es silencioso y se presenta de dos formas. Con swap habilitado, la carga parece completarse, pero la generación se ralentiza mucho porque las páginas se mueven entre el disco y la RAM para cada token. Sin swap, el proceso termina de forma inmediata y journalctl -k | grep -i "out of memory" muestra la línea Out of memory: Killed process del kernel, donde se indica ollama. Compruebe ambos casos, porque ninguno muestra un mensaje útil en el terminal donde estaba escribiendo.
El paso de la etiqueta Q4 de 19 GB a la etiqueta Q8 de 32 GB es la principal palanca que tiene para controlar ese número. Q4 reduce algo la calidad de salida, y cuánto se reduce depende de la tarea. La salida estructurada y las cadenas largas de razonamiento sufren más que una conversación informal. Diferencias prácticas entre Q4, Q8 y FP16 merece una lectura antes de decidir, porque en un VPS que sólo usa CPU la elección de la cuantización suele determinar si el modelo se puede ejecutar.
Qué ocurre en un VPS que sólo usa CPU
La mayoría de los planes VPS no incluyen GPU, y Ollama ejecutará el modelo en la CPU sin avisarle. Que el resultado sea utilizable depende de la carga de trabajo y de su paciencia.
El diseño de mezcla de expertos mejora la velocidad. Para cada token sólo se utilizan aproximadamente 3 mil millones de los 30 mil millones de parámetros, por lo que las operaciones necesarias por token son muy inferiores a las de un modelo denso de 30B. La memoria, en cambio, no se reduce. Todos los expertos deben permanecer residentes, porque el router puede seleccionar cualquiera de ellos para el siguiente token. Por tanto, un equipo que sólo usa CPU sigue necesitando los 19 GB completos o más para la etiqueta Q4, y su rendimiento depende principalmente del ancho de banda de memoria, no de la frecuencia de reloj.
Esto tiene una consecuencia práctica: dos planes con el mismo número de núcleos y la misma RAM pueden generar texto a velocidades apreciablemente distintas porque sus subsistemas de memoria son diferentes. Un plan compartido añade una segunda variable, ya que el tiempo de CPU robado por un vecino ruidoso aparece como una cifra de tokens por segundo que cambia de una hora a otra. Por eso ninguna cifra publicada por otra persona predice la suya, y por eso la siguiente sección presenta un procedimiento de medición en lugar de una tabla de resultados.
Mide tus propios tokens por segundo
El endpoint generate de Ollama devuelve campos de tiempo en su objeto JSON final. Divide la cantidad de tokens generados entre la duración de la generación y obtendrás el valor correspondiente a tu plan y a tu prompt.
sudo apt install -y jq
curl -s http://localhost:11434/api/generate -d '{
"model": "glm-4.7-flash:q4_K_M",
"prompt": "Write a 200 word explanation of how TCP congestion control works.",
"stream": false,
"options": {"num_ctx": 8192}
}' | jq '{
tokens: .eval_count,
tokens_per_second: (.eval_count / .eval_duration * 1e9),
prompt_seconds: (.prompt_eval_duration / 1e9),
load_seconds: (.load_duration / 1e9)
}'eval_count indica cuántos tokens se generaron y eval_duration indica cuántos nanosegundos se emplearon en generarlos; por tanto, eval_count / eval_duration * 1e9 representa los tokens por segundo. prompt_eval_duration corresponde a la lectura de tu prompt, que es lo que una persona percibe como la espera antes de que aparezca el primer token. load_duration es el tiempo empleado en cargar el modelo desde el disco, por lo que es alto en la primera llamada después de un reinicio y casi nulo en la siguiente.
Ejecútalo tres veces y conserva los resultados segundo y tercero, porque el primero incluye esa carga. Después, ejecútalo de nuevo con un prompt mucho más largo, ya que el procesamiento del prompt aumenta con la longitud de la entrada, mientras que la velocidad de generación no lo hace. Anota los números junto al nombre de tu plan y su cuantización. Ese registro es más útil que cualquier prueba de rendimiento que leas, porque se midió en el hardware por el que estás pagando.
Cómo la longitud del contexto multiplica el uso de memoria
Ollama usa de forma predeterminada un contexto de 4096 tokens. El modelo anuncia un límite mucho mayor, de 198K tokens para glm-4.7-flash, pero ese límite no se obtiene de forma predeterminada y activarlo no es gratis.
La caché KV almacena un vector de clave y un vector de valor para cada token, en cada capa. Su tamaño crece de forma lineal con el número de tokens permitido. Pasar de 4096 a 32768 tokens multiplica por ocho el contexto, por lo que la caché KV también ocupa aproximadamente ocho veces más. En un equipo dimensionado para que quepan justo los pesos, esa asignación adicional es la que provoca el uso de swap. Por eso, un equipo que respondía bien a solicitudes cortas puede volverse muy lento cuando alguien pega un documento largo.
Establézcalo por solicitud con num_ctx en el objeto de opciones, como en el comando curl anterior, o cambie el valor predeterminado del servidor.
sudo install -d -m 755 /etc/systemd/system/ollama.service.d
printf '[Service]\nEnvironment="OLLAMA_CONTEXT_LENGTH=16384"\n' \
| sudo tee /etc/systemd/system/ollama.service.d/override.conf
sudo systemctl daemon-reload
sudo systemctl restart ollama
systemctl show ollama --property=EnvironmentEl último comando debería mostrar el valor de OLLAMA_CONTEXT_LENGTH. Si muestra un Environment= vacío, el archivo de sobrescritura está en el directorio incorrecto o se omitió la recarga. Después de cargar el modelo de nuevo, ollama ps debería mostrar un SIZE claramente mayor que el valor que mostraba con 4096. Aumente el valor por pasos y compruebe ese número cada vez. Configurar la longitud del contexto de Ollama con num_ctx explica cómo interactúa esto con keep-alive y con las solicitudes paralelas, que multiplican el mismo coste.
Cuando la API cuesta menos que el servidor
El autoalojamiento no es automáticamente más barato, y en esta familia los precios de lista publicados lo dejan especialmente claro.
The data behind this chart
[
{
"label": "GLM-5.2 input",
"usd_per_million_tokens": 1.4
},
{
"label": "GLM-5.2 output",
"usd_per_million_tokens": 4.4
},
{
"label": "GLM-4.7-Flash input",
"usd_per_million_tokens": 0
},
{
"label": "GLM-4.7-Flash output",
"usd_per_million_tokens": 0
}
]A fecha de 18 de agosto de 2026, Z.ai indica un precio de $1.4 por cada millón de tokens de entrada para GLM-5.2 y de $4.4 por cada millón de tokens de salida. Para GLM-4.7-Flash, el modelo que ejecuta esta guía de forma local, indica $0 en ambas direcciones. Son precios publicados y pueden cambiar, así que consulte la página actual antes de elaborar un presupuesto basado en cualquiera de ellos.
Por tanto, el argumento económico a favor del autoalojamiento glm-4.7-flash es débil en este momento. Una VPS con suficiente RAM cuesta dinero real cada mes, mientras que el editor ofrece el mismo modelo sin coste. Al ejecutarlo usted mismo obtiene otra cosa: sus prompts permanecen en una máquina que controla y la versión del modelo no cambia a menos que usted la cambie. Son buenas razones para autoalojarlo. El coste no es una de ellas para este modelo y con estos precios.
El cálculo cambia cuando el modelo que quiere no es gratuito o cuando sus datos no pueden salir legalmente de su propia red. El punto de equilibrio entre una VPS con GPU y los tokens de la API desarrolla ese cálculo con cada variable identificada. Si todavía está eligiendo la máquina, cuánto cuesta realmente una VPS al mes es la otra parte de la suma.
Mantenga el endpoint en localhost
Este es el paso que se suele omitir y el más importante.
Ollama se enlaza a 127.0.0.1 en el puerto 11434 de forma predeterminada, por lo que sólo se puede acceder a él desde el propio servidor. Confírmelo en su servidor en lugar de darlo por hecho.
ss -ltnp | grep 11434Debe aparecer 127.0.0.1:11434. Si aparece 0.0.0.0:11434 o *:11434, significa que la API está escuchando en todas las interfaces, incluida la pública.
Esto es importante porque la API de Ollama no tiene autenticación. No hay contraseña, token ni lista de permitidos. Cualquiera que pueda acceder al puerto 11434 puede enumerar sus modelos, ejecutar generaciones con hardware que usted está pagando, descargar modelos nuevos hasta llenar el disco y eliminar los modelos existentes. El puerto 11434 es fijo y conocido, por lo que los escáneres encuentran rápidamente los puertos abiertos.
No configure OLLAMA_HOST=0.0.0.0. Muchos tutoriales lo sugieren como solución cuando un cliente del portátil no puede conectarse, pero no es la solución correcta. En su lugar, reenvíe el puerto.
ssh -N -L 11434:127.0.0.1:11434 you@your-serverEsto asigna el puerto 11434 del portátil a la dirección de loopback del servidor mediante SSH. Así, cualquier cliente configurado para http://localhost:11434 funciona sin cambios y no se expone nada nuevo. Para varias personas o varias máquinas, coloque el servidor en una red privada de túnel y enlace Ollama a la dirección del túnel, nunca a 0.0.0.0.
Verifique el resultado desde un equipo distinto del servidor. Desde el portátil, con el túnel SSH cerrado:
curl -m 5 http://your-server-ip:11434/api/tagscurl: (28) Connection timed out o curl: (7) Failed to connect es el resultado correcto. Una lista JSON de sus modelos indica que el puerto está abierto a Internet y que debe corregirse de inmediato. El firewall de red de su proveedor es un control independiente del firewall que se ejecuta en el servidor, por lo que debe comprobar ambos. La cuestión más amplia de si el alojamiento VPS es seguro cubre el resto de la configuración básica de una máquina que mantiene en ejecución.
Si glm-4.7-flash sigue siendo demasiado grande
Cuando la etiqueta Q4 no cabe en tu plan, la solución es usar un modelo más pequeño, no reducir el contexto. Reducir el contexto para que el modelo quepa produce un modelo que carga, pero falla con la primera solicitud larga. Qwen 3 de 8B y 27B en un VPS sigue el mismo proceso de instalación con tamaños adecuados para servidores modestos, y la guía general para alojar un LLM en un VPS con Ollama cubre los aspectos que no cambian independientemente del modelo que elijas. Sea cual sea el modelo que uses, fija la etiqueta, mide el rendimiento en tu propio plan y deja el endpoint en loopback.
FAQ
¿Puede GLM 5.2 ejecutarse localmente en un VPS?
No. A fecha del 18 August 2026, GLM 5.2 sólo existe en la biblioteca de Ollama como glm-5.2:cloud, una etiqueta que se ejecuta en la infraestructura de Ollama y necesita ollama signin para funcionar. El modelo tiene 756 billion parameters, por lo que incluso con cuatro bits por parámetro, sólo los pesos ocupan cientos de gigabytes. Esta cifra supera ampliamente lo que ofrece cualquier plan de VPS estándar. El modelo de GLM con pesos descargables que cabe en un servidor alquilado es glm-4.7-flash.
¿Cuánta RAM necesita glm-4.7-flash?
Considere el tamaño de descarga de la etiqueta como el mínimo y reserve espacio adicional para la caché KV y el sistema operativo. Ollama indica que la etiqueta Q4 ocupa 19 GB, la Q8 ocupa 32 GB y la etiqueta bfloat16 ocupa 60 GB. No existe un multiplicador fijo adecuado para todos los casos, porque la caché KV aumenta con la longitud de contexto configurada. Cargue el modelo, ejecute ollama ps y consulte la columna SIZE para conocer la cifra real en su equipo.
¿Cómo mido los tokens por segundo en mi propio VPS?
Envíe una solicitud a http://localhost:11434/api/generate con "stream": false y lea eval_count y eval_duration de la respuesta. Los tokens por segundo se calculan como eval_count / eval_duration * 1e9, porque eval_duration se indica en nanosegundos. Descarte la primera ejecución, porque load_duration incluye en ese caso la lectura de los pesos desde el disco. Repita la prueba también con un mensaje largo, porque prompt_eval_duration aumenta con la longitud de entrada, mientras que la velocidad de generación no cambia.
¿Por qué no debo establecer OLLAMA_HOST en 0.0.0.0?
Porque la API de Ollama no tiene autenticación. Al enlazarla con 0.0.0.0, expone un endpoint sin autenticación en Internet público. Cualquiera que pueda acceder al puerto 11434 puede generar contenido con su hardware y cambiar los modelos instalados. Mantenga el enlace predeterminado en 127.0.0.1, compruébelo con ss -ltnp | grep 11434 y acceda a la API desde su portátil mediante un túnel SSH como ssh -N -L 11434:127.0.0.1:11434 you@your-server.