IA local

La gpu de 600 que perdio contra la de 300

Compré una RTX 4060 Ti pensando que iba a arrasar, pero una RTX 2060 más vieja consiguió ganarle en IA local. Hasta que cambiamos el escenario y la historia dio la vuelta.

La gpu de 600 que perdio contra la de 300
⚠️
Compré la gráfica cara para que hiciera el trabajo pesado. La barata se rió de ella en la cara. Durante un rato.

El plan

Para quien no esté en esto: estábamos montando una pequeña infraestructura para generar mensajes automáticamente, con n8n organizando una cola de tareas (a través de Redis) y un modelo de lenguaje corriendo en local con llama.cpp para no depender de servicios externos. El modelo era un Qwen3.5-2B-AWQ — pequeño, nada espectacular en tamaño, pero de sobra para lo que necesitábamos.

Antes de meterlo en producción quería saber qué tan rápido podía responder ese modelo: los "tokens por segundo" (tps), básicamente la velocidad a la que el modelo "escribe" la respuesta.

Tenía dos gráficas para probarlo:

  • Una RTX 4060 Ti de 16GB — la cara, la moderna, la que en teoría tenía que ganar sin discusión.
  • Una RTX 2060 — vieja, con menos memoria, comprada hace años para otra cosa.
📝 Apunte de Juan Eladio
Se la compró para jugar, que no se haga el digno.
Yo hubiese hecho lo mismo

El primer susto

Hice la prueba. Ganó la 2060.

No guardé aquel benchmark (lo borré, como un genio), pero la diferencia se me quedó grabada: la 4060 Ti rondaba los 70 tokens por segundo, y la 2060 estaba entre 120 y 140. El doble. La gráfica de 300€ le estaba dando una paliza, en tokens por segundo, a la de 600€.


La pista del bus de memoria

Le di vueltas y terminé comentándolo con Claude (la IA, no el compañero), a ver si encontrábamos alguna explicación. Llegamos a dos posibles culpables:

  1. Pude lanzar mal alguna instancia o configurar algo distinto entre las dos pruebas — nunca lo descarté del todo.
  2. El bus de memoria — y este es el que más me convenció.

La RTX 2060 tiene un bus de 192 bits que le da unos 336 GB/s de ancho de banda. La 4060 Ti, pese a ser más nueva y tener más VRAM, se quedó con un bus de 128 bits — unos 288 GB/s. Nvidia recortó ahí para abaratar el chip, y en una tarea donde lo que más pesa es mover datos dentro y fuera de la memoria una y otra vez (que es justo lo que hace generar texto token a token, uno detrás de otro), ese recorte se nota. La gráfica "inferior" tenía, en ese aspecto muy concreto, mejores números que la cara.

Pudo ser eso. Pudo ser que metí mal algún parámetro. La cuestión es que, con llama.cpp, sin concurrencia, ganó la 2060. Eso pasó, con explicación clara o sin ella.


El plan real era otro

Pero el plan real nunca fue atender una petición sola detrás de otra. El plan era manejar una cola con varios mensajes esperando a la vez, como un camarero que tiene que atender varias mesas y no una sola. Para eso, llama.cpp no era la herramienta — necesitaba algo pensado para servir muchas peticiones en paralelo. Así que pasé a usar vLLM.

Y ahí la historia cambió del todo.

RTX 2060
(5 usuarios a la vez)
RTX 4060 Ti
(5 usuarios a la vez)
RTX 4060 Ti
(64 usuarios a la vez)
Tokens de salida por segundo 270,5 351,9 714,6
Tiempo hasta la primera palabra (media) 903 ms 410 ms 1.870 ms
Peticiones por segundo 2,11 2,75 5,58

Con solo 5 usuarios escribiendo a la vez, la 4060 Ti ya remontaba: más tokens por segundo y, sobre todo, mucho menos tiempo de espera hasta que aparecía la primera palabra. Y cuando empujé la concurrencia a 64 usuarios simultáneos, la diferencia se volvió absurda — la 4060 Ti llegó a picos de más de 2.200 tokens por segundo, algo que la 2060 ni se planteaba.

La gráfica "lenta" en realidad nunca fue lenta. Era buena en un trabajo muy concreto: aguantar una conversación sola, sin compañía, donde el ancho de banda de memoria manda. En el momento en que tuvo que repartirse entre varios usuarios a la vez, el cuello de botella cambió de sitio, y la 4060 Ti —con más músculo de cálculo y más memoria para repartir— empezó a demostrar por qué costaba el doble.


La lección

No hay vuelta de tuerca dramática aquí, solo una lección que ya deberíamos habernos aplicado antes de comprar nada: el benchmark que haces tiene que parecerse al trabajo que vas a hacer de verdad.

Probar una gráfica con una sola petición cuando el plan final es atender una cola de mensajes de varios usuarios es como elegir coche probándolo solo en el garaje. Se mueve, sí. Pero eso no te dice nada de cómo se va a comportar en la carretera.

Jose Maria Gomez Lobato
Escrito por

Jose Maria Gomez Lobato

Desarrollador web y cofundador de Nebula Systems. Trabajo creando soluciones donde la inteligencia artificial se convierte en herramientas reales, combinando desarrollo, automatización y curiosidad por entender cómo funciona todo por dentro.