Medí hoy, con números, dónde se va el tiempo de cada respuesta. Y armé el plan para bajarlo.
Qué vas a encontrar
Tu QM no es lento porque el modelo sea lento. Es lento porque va y vuelve muchas veces al mostrador, y porque en cada vuelta lleva una mochila enorme de papeles.
Tres datos que resumen todo:
| Lo que pasa hoy | Cuánto cuesta |
|---|---|
| Una pregunta directa al Gestor Obra (sin pasar por el agente) | 0,4 s |
| La misma pregunta, pero el agente la resuelve solo | 20 a 62 s |
| El modelo escribiendo (su velocidad real) | 45 a 138 palabras-por-segundo |
El modelo no es el problema. El problema son los pasos y la mochila.
Todo lo que sigue lo medí el 4 de noviembre de 2026, con pedidos reales, no con folletos. MEDIDO
| Tramo | Tiempo | Qué significa |
|---|---|---|
| Tu PC abre la conexión con el portal | 248 ms | Es el tiempo de ida y vuelta hasta Alemania |
| Tu PC recibe el primer pedazo de la página | 766 ms | Casi un segundo mirando la pantalla en blanco |
| El servidor habla con el proveedor del modelo | 90 a 350 ms | Saludo cifrado + primer byte |
Hallazgo aparte, importante. En tu PC, cuando un programa intenta conectarse a OpenRouter sin forzar IPv4, la conexión tardó 3,98 segundos. Forzando IPv4 tardó 0,22 s. Es decir: hay conexiones que pierden casi 4 segundos antes de empezar a hablar.
Eso no es el modelo. Es tu red eligiendo un camino (IPv6) que no responde y esperando. Se arregla con una línea de configuración y es de las cosas más baratas de todo este plan.
El tiempo hasta la primera palabra se llama TTFT (time to first token). Es lo que vos sentís como "no contesta".
| Situación | Tarda en empezar |
|---|---|
| Modelo chico (Qwen 3.7 Flash), pregunta corta | 0,8 a 1,1 s |
| Modelo chico, con 30.000 tokens de conversación encima | 2,3 s |
| Mismo caso, sin caché de contexto | 3,1 s |
| Mismo caso, con caché de contexto (31.104 tokens leídos de la caché) | 2,3 s |
| DeepSeek v4 Flash, pregunta corta | 2,0 a 2,3 s |
| Modelos grandes (Qwen Plus, DeepSeek Pro, Kimi K2.5) | 1,7 a 4,8 s |
| Con el "pensar" activado | +1 a +3 s |
Dato útil: el caché de contexto funciona y ahorra plata y tiempo. En la prueba, la segunda llamada con el mismo texto leyó 31.104 tokens de la caché y arrancó 0,7 segundos antes. Es gratis: solo hay que ordenar el pedido para que el principio no cambie nunca.
| Trabajo chico | Tiempo |
|---|---|
| Arrancar Python (sin nada) | 27 a 32 ms |
| Arrancar Python con las librerías que uso | 104 a 122 ms |
| Una consulta a la base de obras (6 MB) | 42 a 50 ms |
| Un pedido HTTP al portal desde el propio servidor | 180 a 200 ms |
No parece mucho, pero se suma. Un turno con 10 comandos son 1 o 2 segundos solo de "arrancar programas". Y el contenedor tiene 2 núcleos y 2 GB de memoria: si dos cosas corren a la vez, se pelean.
Toda respuesta de un agente se arma con esta suma:
T = pasos × (red + leer contexto + escribir + herramientas) + red tuya
Pongamos números reales de un turno típico de 6 pasos, con 30.000 tokens de contexto:
| Etapa (por paso) | Tiempo | Por qué |
|---|---|---|
| Red al proveedor | 0,15 s | Saludo + envío |
| Leer el contexto (prefill) | 2,3 s | Relee la mochila entera |
| Escribir la respuesta | 1,0 s | ~80 tokens a 80 por segundo |
| Herramientas | 0,3 s | Arrancar Python + consultar |
| Total por paso | 3,7 s | |
| Turno de 6 pasos | 22 s | Y en voz se midió 62 s |
Están ordenadas por lo que ganás, de más a menos. Cada una dice qué se toca y cuánto mejora. RECOMENDACIÓN
Si la respuesta se puede sacar con un comando, no se le pregunta al modelo. Se llama ruta directa y ya la tenés probada: el Gestor Obra contesta en 0,4 s cuando va derecho, contra 62 s cuando el agente lo busca solo.
Dos cosas distintas: achicar el contexto (menos papeles) y no mover el principio (para que la caché acierte).
Medí que el modelo chico arranca en 1 s y el grande en 2 a 5 s. Además, "pensar" suma 1 a 3 s. El 80% de los pedidos no necesita pensar.
Lo que la persona siente no es el final: es el primer pedazo. Si el texto empieza a salir a los 0,8 s, la respuesta se siente rápida aunque el total sea 6 s.
Tu servidor está en Núremberg (Alemania). Cada ida y vuelta desde Corrientes son 250 ms, y la página tarda 766 ms en empezar a llegar.
Arrancar Python cuesta 30 a 120 ms, y el contenedor tiene solo 2 núcleos. Diez comandos son 1 o 2 segundos perdidos en calentar motores.
Muchas preguntas se repiten: "cómo va la caja de Casa Gerardo", "qué stock hay". Si la respuesta salió hace 5 minutos, no hay razón para volver a pensarla.
Un informe de 200 renglones no puede frenar un "hola, cómo va". Hoy comparten la misma fila.
Se puede poner el motor adentro de tu servidor, con un modelo propio. Ahí no hay llamadas a nadie y el tiempo se vuelve previsible. Pero cuesta plata fija.
Sin números no hay mejora. Cada respuesta tiene que dejar anotado: cuánto esperó la red, cuánto tardó el modelo, cuántas herramientas usó y cuánto salió.
Antes de tocar nada, dejar el tablero. Sin esto, cualquier cambio es a ciegas.
Meta medible: de 20 s a 6-8 s en el promedio, y la primera palabra en menos de 1,5 s.
Meta medible: página de 766 ms a menos de 400 ms; un paso de herramienta de 150 ms a menos de 60 ms.
Meta medible: costo por respuesta conocido al centavo y tiempo estable entre días.
Tu servidor es de Hetzner y está en Núremberg. Hetzner tiene centros en Alemania (Falkenstein y Núremberg), Finlandia (Helsinki), Estados Unidos (Ashburn y Hillsboro) y Singapur. No tiene nada en Sudamérica. VERIFICADO
| Opción | Qué se hace | Costo | Riesgo |
|---|---|---|---|
| A. Arreglar lo barato | IPv4 primero, keep-alive, caché de páginas estáticas en Cloudflare | Casi cero | Ninguno |
| B. Argo | Cloudflare elige la ruta más corta entre su borde y Alemania | Servicio pago de Cloudflare, por uso | Bajo. Se prende y se apaga |
| C. Mudar a Sudamérica | Servidor en San Pablo o Santiago (AWS, Vultr, Oracle, Magalu) | Un servidor más | Alto: hay que mover DataObra y 35 contenedores |
Mi consejo: hacé A y B ahora. La C queda para cuando el chat sea el corazón del negocio, porque mudar el servidor donde vive el Gestor Obra es un trabajo de fin de semana con riesgo de romper algo que hoy funciona. Y ojo: si mudás solo la parte del chat y dejás la base en Alemania, no ganás nada: el pedido igual cruza el océano.
Un motor propio es un programa que atiende a los modelos en tu propia máquina. Los dos que usa todo el mundo son vLLM y SGLang. Esto es lo que hacen bien, explicado simple:
| Técnica | Qué hace | Analogía |
|---|---|---|
| PagedAttention | Guarda la memoria de la conversación en bloques ordenados, sin desperdiciar | Estacionamiento con lugares pintados, en vez de reservar una manzana por auto |
| Lotes continuos | Atiende a varios usuarios a la vez sin hacer esperar a nadie | El colectivo que sube y baja gente en cada parada, no espera a llenarse |
| Caché de prefijo (RadixAttention) | Reusa la parte repetida del pedido entre llamadas | La fotocopia ya hecha del cuaderno |
| Prefill por partes | No deja que un pedido largo congele a los cortos | No dejás que el que pide 200 sánguches frene la caja de un café |
| Decodificación especulativa | Un modelo chico escribe un borrador y el grande lo corrige de una lectura | El cadete redacta, el jefe firma |
| Cuantización FP8 | El modelo ocupa la mitad de memoria casi sin perder calidad | Guardar la ropa en bolsas que ocupan la mitad, sin arrugarla |
| Separar arranque de generación | Dos máquinas: una lee, otra escribe | Uno atiende el mostrador y otro hace los trámites |
Precios de GPU alquilada por hora, verificados en RunPod el 4 de noviembre de 2026 VERIFICADO:
| GPU | Por hora | Por mes, 24/7 | Para qué alcanza |
|---|---|---|---|
| A40 / A6000 (48 GB) | USD 0,59 | USD 425 | Modelos de 8 a 30 mil millones |
| L40S (48 GB) | USD 1,09 | USD 785 | Lo mismo, más rápido y con FP8 |
| RTX 4090 (24 GB) | USD 0,89 | USD 641 | Modelos de hasta 14 mil millones |
| H100 (80 GB) | USD 2,89 | USD 2.081 | Modelos grandes de verdad |
La cuenta honesta: hoy tu gasto de API va de USD 3 a 11 por día, o sea entre USD 90 y 330 por mes. Una GPU de USD 425 al mes sale más cara que lo que gastás, salvo que: (1) el volumen crezca mucho, (2) vendas el paquete y el motor sea parte del producto, o (3) el tiempo de respuesta pase a ser una necesidad del negocio.
Mientras tanto, la plata rinde mucho más arreglando pasos, contexto y red.
Todo lo que está arriba de una recomendación sale de acá. Las mediciones son propias, hechas hoy.
Kwon, W., Li, Z., Zhuang, S. y otros. Efficient Memory Management for Large Language Model Serving with PagedAttention. arXiv:2309.06180, 2023. — El paper de vLLM. arxiv.org/abs/2309.06180
Leviathan, Y., Kalman, M., Matias, Y. Fast Inference from Transformers via Speculative Decoding. arXiv:2211.17192, 2022. — El borrador que corrige el jefe. arxiv.org/abs/2211.17192
Zhong, Y., Liu, S., Chen, J. y otros. DistServe: Disaggregating Prefill and Decoding for Goodput-optimized LLM Serving. arXiv:2401.09670, 2024. — Separar arranque de generación. arxiv.org/abs/2401.09670
Agrawal, A., Kedia, N., Panwar, A. y otros. Taming Throughput-Latency Tradeoff in LLM Inference with Sarathi-Serve. arXiv:2403.02310, 2024. — Prefill por partes. arxiv.org/abs/2403.02310
Zheng, L. y otros. SGLang: Efficient Execution of Structured Language Model Programs. arXiv:2312.07104, 2023. — RadixAttention. arxiv.org/abs/2312.07104
Pope, R., Douglas, S., Chowdhery, A. y otros. Efficiently Scaling Transformer Inference. arXiv:2211.05102, 2022. — Los compromisos de latencia y partición. arxiv.org/abs/2211.05102
vLLM. Optimization and Tuning (caché de prefijo, lotes, cuantización, especulación). docs.vllm.ai/en/latest/performance/optimization.html
vLLM. Automatic Prefix Caching. docs.vllm.ai/en/latest/features/automatic_prefix_caching/
vLLM. Speculative Decoding. docs.vllm.ai/en/latest/features/speculative_decoding/
LMSYS. Fast and Expressive LLM Inference with RadixAttention and SGLang. lmsys.org/blog/2024-01-17-sglang/
Anthropic. Prompt caching (escritura +25%, lecturas baratas, vida de 5 minutos, precalentado del caché). docs.anthropic.com/en/docs/build-with-claude/prompt-caching
DeepSeek. Context Caching (reglas de acierto: A+B y después A+C no acierta; A+B y después A+B+C sí). api-docs.deepseek.com/guides/kv_cache
Cloudflare. Argo Smart Routing. developers.cloudflare.com/argo-smart-routing/
Cloudflare. Workers Smart Placement (correr el programa cerca del servidor, no del usuario). developers.cloudflare.com/workers/configuration/smart-placement/
Hetzner. Cloud locations: Falkenstein, Núremberg, Helsinki, Ashburn, Hillsboro, Singapur. hetzner.com/cloud
RunPod. GPU Cloud Pricing (precios por hora citados arriba). runpod.io/pricing
OpenRouter. API y catálogo de modelos (de acá salieron los modelos y precios de la prueba). openrouter.ai/docs
Latencia desde tu PC al portal, velocidad de arranque de Python, tiempos al primer token por tamaño de contexto, prueba de caché de contexto (31.104 tokens leídos), velocidad de escritura por modelo y comparación entre modelos chicos y grandes. Todo con pedidos reales, no estimaciones.
Un solo paso: arrancar la Fase 1 con la palanca 1 (menos pasos) y la palanca 2 (mochila liviana), porque son las dos que más bajan el tiempo y no cuestan plata.
Si querés que lo haga yo, decime "dale con la fase 1" y arranco midiendo el promedio actual para tener el punto de partida, antes de tocar nada.
Pedido para pegar en Claude Code (Fase 1 · carril rápido y mochila liviana) Objetivo: bajar el tiempo medio de respuesta de 20 s a 6-8 s sin cambiar de proveedor. 1) Antes de tocar: medir 20 preguntas reales y anotar por cada una: - tiempo hasta el primer token - tiempo total - cantidad de pasos del agente - tokens de entrada y cuántos vienen de caché - costo estimado Guardar el resultado en un archivo de referencia. 2) Clasificador de intención con el modelo más chico disponible, con el razonamiento APAGADO. Debe decidir entre: - RUTA DIRECTA: se responde con un comando o consulta puntual - RUTA AGENTE: hace falta pensar, comparar o crear algo Si no está seguro, que elija RUTA AGENTE. 3) Ruta directa para las 10 preguntas más frecuentes. Sin pasar por el agente. 4) Contexto: máximo 40.000 tokens. Compactar automáticamente y descartar resultados viejos de herramientas antes que la conversación. 5) Orden del pedido, siempre igual: instrucciones del sistema -> definición de herramientas -> historial -> pregunta nueva. El principio NO cambia nunca entre llamadas, así el caché de contexto acierta. 6) Streaming en el chat: mostrar el texto a medida que llega. 7) Al terminar, volver a medir las mismas 20 preguntas y comparar contra el punto de partida. Entregar la tabla comparativa.
Recordatorio: las mediciones son de hoy y en tu infraestructura. Si cambia el proveedor del modelo o el servidor, hay que volver a medir antes de sacar conclusiones.
Informe armado el 4 de noviembre de 2026 · QM