SSD Nodes Learn Hosting plans →
Guías Matt ConnorPor Matt Connor

VPS con GPU frente a API: punto de equilibrio

Calcula cuándo un VPS con GPU a $0.50/h supera el coste por token de una API, con el volumen mensual exacto para modelos grandes y pequeños.

Dónde se alcanza realmente el punto de equilibrio

Una GPU VPS supera la facturación de una API por token en un punto: cuando el coste mensual fijo, dividido entre los tokens de salida que realmente genera ese mes, es inferior a lo que la API cobra por esos mismos tokens. El alquiler no cambia. La factura de la API cambia con cada petición. Por tanto, la respuesta siempre es un volumen mensual, nunca un simple sí o no.

Haga el cálculo con una GPU VPS de gama media a $0.50 por hora, es decir, $365 por un mes de 730 horas. Frente a la API de un modelo de frontera, alcanza el punto de equilibrio con 24.3 millones de tokens de salida al mes. Frente a un modelo comercial pequeño, son 73 millones. Frente a un modelo de pesos abiertos alojado del mismo tamaño, nunca alcanza el punto de equilibrio, porque una sola tarjeta no puede producir suficientes tokens en un mes para llegar al punto de cruce.

Los estudios publicados sobre el punto de equilibrio no responden a esta pregunta. Un análisis de un proveedor de julio de 2026 sitúa el cruce cerca del 50% de utilización para una H100 dedicada a $2.00 por hora frente a la inferencia sin servidor. Estos estudios comparan una tarjeta dedicada de un centro de datos con un producto sin servidor y calculan los aceleradores con una tarifa por hora varias veces superior a la utilizada aquí. La aritmética es idéntica. A continuación se repite el cálculo para una tarjeta, un modelo abierto de entre 7B y 30B y una facturación normal de API por consumo.

Todos los números siguientes son entradas, no resultados. Sustitúyalos por los suyos.

La fórmula, para que pueda sustituir sus propios valores

cost_per_million = (hourly_rate * 1000000) / (tokens_per_second * 3600 * duty_cycle)

breakeven_millions_per_month = (hourly_rate * hours_per_month) / api_price_per_million

capacity_millions_per_month = (tokens_per_second * 3600 * hours_per_month) / 1000000

required_duty_cycle = breakeven_millions_per_month / capacity_millions_per_month

Hay cuatro valores de entrada. Puede medirlos o consultarlos todos.

  • hourly_rate es el coste por hora de la GPU VPS, incluidas las horas en las que permanece inactiva. Si paga mensualmente, divida el precio mensual entre 730.
  • tokens_per_second es la tasa de salida agregada que mantiene su servidor con su concurrencia real. No es el valor de una sola secuencia de una tabla del proveedor.
  • duty_cycle es la fracción del mes durante la que la GPU genera tokens. Una máquina que alquila todo el mes y usa dos horas al día tiene un valor del 8.3%.
  • api_price_per_million es el precio medido con el que compara, para los tokens de salida.

El ejemplo calcula el precio de los tokens de salida en ambos lados, porque la salida representa la mayor parte del coste en chats y trabajos de agentes. Si sus prompts son largos, añada la entrada en ambos lados. En la API, aparece como una línea independiente de la factura. En su propia tarjeta, el prellenado consume tiempo de GPU, por lo que ya se refleja en un valor tokens_per_second medido más bajo.

Cómo medir los tokens por segundo antes de confiar en el cálculo

Todo lo anterior depende de un único valor medido. Si se equivoca por un factor de tres, el resultado también será incorrecto por un factor de tres. Mídalo en la tarjeta que va a alquilar, con el modelo y la cuantización que realmente va a ejecutar.

Ollama proporciona la cifra de un único flujo con un solo comando:

ollama run qwen3:8b --verbose "Write 400 words about disk latency."

--verbose muestra un bloque de tiempos después de la respuesta. La línea importante es eval rate, expresada en tokens por segundo, que sólo cuenta la generación. prompt eval rate es la velocidad de prefill y normalmente es mucho mayor. Sus valores serán distintos de estos:

eval count:       412 token(s)
eval duration:    9.612s
eval rate:        42.86 tokens/s

Un único flujo no es el valor correcto para un modelo de costes, porque mide una petición cada vez en una tarjeta que puede atender varias simultáneamente. Para obtener la cifra agregada, sirva el modelo con vLLM y lea el rendimiento que el servidor informa:

pip install vllm
vllm serve Qwen/Qwen3-8B --max-model-len 8192

Mientras haya peticiones en curso, el servidor registra una línea de estado en cada intervalo de informe. Los campos exactos cambian entre versiones de vLLM, así que lea los de su instalación en lugar de copiar los míos:

Avg prompt throughput: 812.4 tokens/s, Avg generation throughput: 396.1 tokens/s, Running: 16 reqs, Waiting: 0 reqs, GPU KV cache usage: 21.7%

Avg generation throughput es el valor que necesita la fórmula. Aumenta al añadir peticiones simultáneas hasta que se llena la caché KV (caché key-value, el estado de atención que vLLM mantiene en la VRAM para cada petición); después deja de aumentar. Si supera ese punto, las peticiones esperan en cola en lugar de procesarse más rápido, lo que se observa como un aumento del contador Waiting. vLLM también incluye un generador de carga, vllm bench serve. Sus flags cambian entre versiones, así que ejecute vllm bench serve --help en la versión que instaló en lugar de copiar un comando de una publicación de blog.

Supervise la tarjeta mientras se ejecuta la prueba:

nvidia-smi --query-gpu=utilization.gpu,memory.used,power.draw --format=csv -l 5

Si utilization.gpu se mantiene cerca del 100% durante la generación, está limitado por el rendimiento y el valor medido es el límite real. Si se mantiene bajo, el límite es otro: hay muy pocas peticiones simultáneas, el cliente es lento o el modelo no cabe en la VRAM y parte de su ejecución se descarga en la RAM del sistema. Ollama y vLLM aplican compromisos muy distintos en este aspecto, y la diferencia entre ambos en la misma tarjeta es suficientemente grande como para cambiar el punto de equilibrio por un factor de varios.

Qué aspecto tiene la factura a lo largo de un mes

El ejemplo práctico utiliza una GPU VPS de 24 GB a $0.50 por hora y un modelo abierto de 8B servido por vLLM, con una medición agregada de 400 tokens de salida por segundo y 16 solicitudes simultáneas. El alquiler es fijo, independientemente de que use la tarjeta o no. A esa velocidad, la capacidad es de 1,051 millones de tokens de salida al mes. Esa es la producción de la tarjeta si no se detiene nunca.

GráficoMonthly cost by output volume: one GPU VPS at $0.50 per hour against metered APIs (USD)
Los datos de este gráfico
[
  {
    "output_tokens_millions": 5,
    "gpu_vps_usd": 365,
    "open_api_usd": 1,
    "small_api_usd": 25,
    "frontier_api_usd": 75
  },
  {
    "output_tokens_millions": 10,
    "gpu_vps_usd": 365,
    "open_api_usd": 2,
    "small_api_usd": 50,
    "frontier_api_usd": 150
  },
  {
    "output_tokens_millions": 25,
    "gpu_vps_usd": 365,
    "open_api_usd": 5,
    "small_api_usd": 125,
    "frontier_api_usd": 375
  },
  {
    "output_tokens_millions": 50,
    "gpu_vps_usd": 365,
    "open_api_usd": 10,
    "small_api_usd": 250,
    "frontier_api_usd": 750
  },
  {
    "output_tokens_millions": 100,
    "gpu_vps_usd": 365,
    "open_api_usd": 20,
    "small_api_usd": 500,
    "frontier_api_usd": 1500
  },
  {
    "output_tokens_millions": 250,
    "gpu_vps_usd": 365,
    "open_api_usd": 50,
    "small_api_usd": 1250,
    "frontier_api_usd": 3750
  },
  {
    "output_tokens_millions": 500,
    "gpu_vps_usd": 365,
    "open_api_usd": 100,
    "small_api_usd": 2500,
    "frontier_api_usd": 7500
  },
  {
    "output_tokens_millions": 1000,
    "gpu_vps_usd": 365,
    "open_api_usd": 200,
    "small_api_usd": 5000,
    "frontier_api_usd": 15000
  }
]

El coste de la GPU es constante: 365 dólares, porque el alquiler no depende de lo que haga con la tarjeta. Cada línea de API es una recta que parte de cero. Cada par se cruza exactamente una vez.

Con 25 millones de tokens de salida al mes, la API de frontera factura 375 dólares, por lo que ambas opciones difieren en menos de diez dólares. Con 50 millones, el modelo comercial pequeño factura 250 dólares y sigue siendo la opción más barata. Con 1000 millones de tokens de salida, lo que requiere que la tarjeta esté ocupada el 95% del mes, la API alojada de pesos abiertos factura 200 dólares, frente al mismo alquiler. La tarjeta pierde por un factor de casi dos justo en el volumen en el que trabaja con mayor intensidad.

Este último resultado sorprende, pero no es accidental. Un endpoint alojado de pesos abiertos es una flota de GPU que funciona con una utilización elevada, por lo que su precio se aproxima al coste de una tarjeta saturada. No puede superar a una flota saturada alquilando una tarjeta y ejecutándola con una carga inferior a la máxima. Lo que sí puede superar son los precios de los modelos de frontera, que se fijan según sus capacidades y no según el tiempo de uso del hardware.

Coste por millón de tokens de salida en cada ciclo de actividad

El volumen y el ciclo de actividad son el mismo hecho visto desde dos perspectivas. El alquiler compra horas. Las horas inactivas no producen nada y siguen costando dinero.

GráficoCost per million output tokens at each duty cycle (USD, list prices August 2026)
Los datos de este gráfico
[
  {
    "label": "100% duty",
    "self_host_usd_per_million": "0.35",
    "open_api_usd_per_million": "0.20",
    "small_api_usd_per_million": "5.00",
    "frontier_api_usd_per_million": "15.00"
  },
  {
    "label": "50% duty",
    "self_host_usd_per_million": "0.69",
    "open_api_usd_per_million": "0.20",
    "small_api_usd_per_million": "5.00",
    "frontier_api_usd_per_million": "15.00"
  },
  {
    "label": "25% duty",
    "self_host_usd_per_million": "1.39",
    "open_api_usd_per_million": "0.20",
    "small_api_usd_per_million": "5.00",
    "frontier_api_usd_per_million": "15.00"
  },
  {
    "label": "10% duty",
    "self_host_usd_per_million": "3.47",
    "open_api_usd_per_million": "0.20",
    "small_api_usd_per_million": "5.00",
    "frontier_api_usd_per_million": "15.00"
  },
  {
    "label": "5% duty",
    "self_host_usd_per_million": "6.94",
    "open_api_usd_per_million": "0.20",
    "small_api_usd_per_million": "5.00",
    "frontier_api_usd_per_million": "15.00"
  },
  {
    "label": "2% duty",
    "self_host_usd_per_million": "17.36",
    "open_api_usd_per_million": "0.20",
    "small_api_usd_per_million": "5.00",
    "frontier_api_usd_per_million": "15.00"
  }
]

Las tres columnas de API muestran precios de lista publicados habituales a fecha de agosto de 2026: 0.20 dólares por millón de tokens de salida para un modelo open-weight alojado de 8B, 5.00 dólares para un modelo comercial pequeño y 15.00 dólares para un modelo frontier. Son valores ilustrativos. Consulte la página de precios actual antes de tomar una decisión. Si la comparación es con un plan mensual fijo en lugar de tokens medidos, el cálculo de la suscripción funciona de otra manera y el punto de cruce vuelve a cambiar.

Ejecute la tarjeta a plena capacidad y un millón de tokens de salida cuesta 0.35 dólares, lo que es realmente barato. Con un ciclo de actividad del 10%, el mismo millón cuesta 3.47 dólares. Con un ciclo de actividad del 2%, cuesta 17.36 dólares, una cifra que no está en el mismo rango que los 0.20 dólares que cobra un modelo open alojado por la misma salida.

Frente a un modelo open-weight alojado, alquilar una GPU es la opción más cara en todos los ciclos de actividad del gráfico. Con un 10% está pagando 3.47 dólares por millón de tokens de salida que se ofrece por 0.20 dólares, y lo que compra con la diferencia es privacidad y una factura que no varía. Eso puede tener un valor real. No supone una ventaja de precio, así que no la contabilice como tal. Frente a los niveles comerciales, la situación se invierte: con un ciclo de actividad del 10%, la tarjeta es más barata que los precios del modelo comercial pequeño y del modelo frontier, y sigue siendo más barata que el nivel frontier hasta que el ciclo de actividad baja aproximadamente al 2.3%.

El volumen de equilibrio para cada nivel de API

GráficoBreak-even output volume per month, and the duty cycle it requires
Los datos de este gráfico
[
  {
    "label": "Hosted open 8B API",
    "breakeven_tokens_millions": 1825,
    "required_duty_pct": 174
  },
  {
    "label": "Small commercial model",
    "breakeven_tokens_millions": 73,
    "required_duty_pct": 6.9
  },
  {
    "label": "Frontier model",
    "breakeven_tokens_millions": 24.3,
    "required_duty_pct": 2.3
  }
]

Frente al nivel frontier, necesita 24.3 millones de tokens de salida al mes, lo que representa sólo 2.3% de lo que puede procesar la tarjeta. Es un umbral bajo. Un equipo pequeño que ejecute agentes de programación durante la jornada laboral lo supera.

Frente al nivel comercial pequeño, necesita 73 millones de tokens al mes, o un ciclo de utilización del 6.9%. Frente al nivel de pesos abiertos alojado, el ciclo de utilización necesario es del 174%. Cualquier valor superior al 100% es inalcanzable por definición: la tarjeta tendría que funcionar más horas de las que contiene el mes. Una tarjeta de gama media con esta tarifa por hora no puede superar esa comparación, así que las únicas formas de cambiar el resultado son usar una tarjeta más barata, una tarjeta más rápida o tener un motivo que no sea el precio.

Lo que oculta la fórmula

La fórmula calcula el coste de las horas de GPU y los tokens. Varios costes reales quedan fuera.

Arranques en frío. Un modelo 8B con pesos de 16 bits ocupa aproximadamente 16 GB, y cargarlo desde el disco local en la VRAM tarda decenas de segundos. Si detiene el servidor entre usos para ahorrar el alquiler, debe esperar ese tiempo antes de la primera petición cada vez. Si lo deja en ejecución para evitar la espera, el ciclo de actividad se reduce y el coste por token aumenta. Ese equilibrio es la razón de ser de la inferencia serverless.

Almacenamiento y descarga. Los pesos ocupan mucho espacio. Un modelo 8B a 16 bits ocupa alrededor de 16 GB, un modelo 30B cuantizado a 4 bits ocupa alrededor de 18 GB y un modelo 30B a 16 bits no cabe en una tarjeta de 24 GB. El límite se vuelve evidente rápidamente en la gama alta, donde ejecutar un modelo abierto de un billón de parámetros como Kimi K3 significa que sólo los pesos superan la capacidad de cualquier tarjeta individual que pueda alquilar por horas. Paga ese disco cada mes y también paga en tiempo cada vez que reconstruye el entorno. Ejecute du -sh ~/.cache/huggingface/hub después de una semana de experimentos. Crece más rápido de lo esperado porque cada cuantización que probó una vez sigue almacenada.

Su propio tiempo. Las versiones de los controladores y de CUDA, los errores de falta de memoria con una longitud de contexto que funcionaba ayer y una actualización del modelo que cambia la plantilla de chat. Nada de esto aparece en una cifra de coste por token, pero todo se descuenta de sus tardes. Si nunca ha dimensionado uno de estos servidores, merece la pena leer qué ofrece realmente un GPU VPS antes de comprometerse a pagar un mes de alquiler.

La diferencia de calidad. Este es el mayor coste oculto y el más difícil de calcular. Un modelo abierto 8B no es un modelo de frontera. Si necesita tres intentos cuando el modelo de frontera necesita uno, su precio real por respuesta útil es tres veces el valor de la tabla y puede que aun así no complete la tarea. Compare primero con sus propias peticiones y después compare el precio. En las cargas de trabajo de agentes, la respuesta habitual es enrutar las peticiones según su dificultad y reservar los tokens locales baratos para el trabajo masivo. En gran medida, eso es lo que implica controlar el gasto de agentes en un VPS.

Facturación que olvidó. Una instancia de GPU por horas que ha detenido suele seguir generando cargos por el almacenamiento asociado y por la dirección IP reservada. Lea la factura, no la página de precios.

Cuándo el alojamiento propio se impone por algo distinto del precio

Cuatro casos en los que la aritmética no es el factor decisivo.

  • Datos que no pueden salir de su control. Si una norma de cumplimiento prohíbe enviar el texto a un tercero, el precio por token no es la cuestión que debe resolverse.
  • Un volumen alto y estable con un horario definido. Un trabajo de clasificación por lotes que se ejecuta seis horas cada noche tiene, por definición, un ciclo de actividad del 25 % y nunca le sorprende con una factura.
  • Límites de tasa. Su propia tarjeta tiene una sola cola y le pertenece.
  • Un modelo que ninguna API ofrece. Si necesita un ajuste fino específico, no hay nada con lo que compararlo.

Si quiere probar primero la versión económica, ejecutar un modelo pequeño en un VPS con Ollama cuesta una tarde, y calcular el tamaño de un modelo abierto según la tarjeta que alquilaría le indica qué GPU necesita realmente. Haga las mediciones allí antes de contratar un mes de alquiler de GPU.

FAQ

¿A partir de qué volumen mensual de tokens supera una GPU VPS el precio de una API?

Divida el coste mensual de la GPU entre el precio de la API por millón de tokens de salida. Una tarjeta que cuesta $365 al mes, frente a una API frontier a 15.00 dólares por millón, alcanza el punto de equilibrio en 24.3 millones de tokens de salida al mes. Frente a un modelo comercial pequeño a 5.00 dólares, son 73 millones. Frente a un modelo open-weight alojado a 0.20 dólares, una tarjeta de gama media no puede generar suficientes tokens en un mes para alcanzar el punto de equilibrio.

¿Por qué una API open-weight alojada cuesta menos que mi propia GPU?

Porque su precio está próximo al coste de una GPU con una carga completa, mientras que su tarjeta no tiene una carga completa. Un proveedor que atiende miles de solicitudes simultáneas mantiene su flota cerca de la saturación, por lo que puede vender tokens cerca del coste marginal de producirlos. Su tarjeta permanece inactiva durante la mayor parte del día y usted paga esas horas de inactividad. Con un duty cycle del 10%, su coste es de 3.47 dólares por millón de tokens de salida, frente a los 0.20 dólares del proveedor.

¿Debo contar también los tokens de entrada?

Cuéntelos si sus prompts son largos. Esta comparación usa sólo tokens de salida, que son el factor dominante en el trabajo de chat y de agentes. Añadir la entrada cambia ambos lados. En la API aparece como un concepto separado y más barato en la factura. En su propia tarjeta, el prefill consume tiempo de GPU, por lo que su coste ya está incluido en los tokens agregados por segundo que midió. Mida con las longitudes reales de sus prompts para que ambos lados sigan siendo comparables.

¿Cómo mido los tokens por segundo que necesita la fórmula?

Sirva el modelo de la forma en que lo utilizará y lea la tasa de generación agregada con concurrencia real. Con Ollama, ollama run <model> --verbose muestra un eval rate en tokens por segundo, pero corresponde a un único flujo y subestima el rendimiento de un servidor por lotes. Con vLLM, el servidor en ejecución registra Avg generation throughput mientras hay solicitudes activas, y ese es el valor que debe utilizar. Supervise nvidia-smi al mismo tiempo. Si el uso de la GPU no se aproxima al 100% durante la generación, todavía no ha encontrado el límite máximo.

¿Merece la pena alquilar una GPU VPS por debajo de un uso del 10%?

Depende de la API que pagaría en su lugar. Con un duty cycle del 10%, paga 3.47 dólares por millón de tokens de salida. Es menos que los niveles comercial pequeño y frontier, pero mucho más que el nivel open-weight alojado. Con un 2% paga 17.36 dólares, una cantidad superior a todas las API con medición de esta comparación, incluido el nivel frontier. Sólo por precio, la tarjeta deja de ser competitiva con aproximadamente un 6.9% de duty cycle frente al nivel comercial pequeño y aproximadamente un 2.3% frente al nivel frontier. Además, nunca resulta competitiva frente a modelos open-weight alojados. Alquile por debajo de esos límites sólo si lo que está pagando es la privacidad o un modelo que ninguna API ofrece.

¿Te resultó útil este artículo?