Vi cómo un modelo de 27GB se desmoronaba a mitad de la inferencia mientras una alternativa de 6.6GB seguía como si nada.
Ese momento—sentado frente a mi RTX 5070 Ti, viendo un error de segfault en WSL2—me hizo ver algo en lo que llevo siendo escéptico dos décadas cubriendo esta industria: contar parámetros es pura vanidad. Es lo que sale en los comunicados de prensa y los pitches de venture. Lo que hace que los inversores duerman tranquilo. Pero casi nunca es lo que hace que un modelo te sea útil en tu escritorio.
Probé qwen3.5:9B contra cinco modelos competidores en 18 tests, enfocándome en trabajo con agentes locales—esas tareas del mundo real donde realmente estás llamando herramientas, parseando datos estructurados y obteniendo resultados lo bastante rápido para no necesitar un café entre medio. El ganador no tuvo competencia.
El Benchmark Que Nadie Menciona: Llamadas Estructuradas de Herramientas
Aquí está lo que realmente separa el grano de la paja en agentes locales, y parece que los ingenieros de Alibaba lo entendieron mejor que nadie.
Cuando le pides a la mayoría de modelos que usen una herramienta—digamos, listar un directorio o consultar una base de datos—van y entierran la llamada de función en mitad de una respuesta larguísima. Luego necesitas lógica de parsing, manejo de errores, reintentos. Es un desastre. Algunos lo hacen mejor que otros, pero la mayoría te obliga a construir una capa de extracción improvisada.
“Solo funcionaron sin problemas los modelos con soporte nativo de tool_calls y cuantización Q4_K_M.”
Qwen3.5:9B devuelve un campo tool_calls limpio e independiente en JSON. Listo. Sin parsing. Sin acrobacias regex. Sin rezarle a los dioses de Python. Competidores más grandes como Qwen2.5:14B y Qwen2.5-coder:14B enterraban la información en texto plano, obligándote a construir capas de extracción y debuggearlas a las tres de la mañana.
Probé este escenario exacto en cinco modelos. Qwen3.5:9B acertó el 100% de las veces. Gemma 4 E4B (9.6GB) necesitó 30 minutos de ajuste en Ollama para pasar de 3 llamadas de herramienta a 14. Aun así, no llegó a la consistencia del modelo más pequeño. ¿Los de 27B? Problemas de estabilidad que hacían impracticable cualquier despliegue en producción.
Dónde la VRAM Se Convierte en el Verdadero Cuello de Botella (Spoiler: Siempre)
Voy a ser directo: la memoria de GPU de consumidor es la restricción real en IA local, no la sofisticación del modelo.
Qwen3.5:9B consumió 6.6GB de VRAM en mi RTX 5070 Ti, dejando mucho espacio para KV cache y contexto más largo. ¿Un modelo de 27B cuantizado Q4_K_M? 16GB—maximiza completamente la tarjeta. Y ahí empezaron los crashes. El bug de segfault de TurboQuant en WSL2 lo empeoró todo, convirtiendo lo que debería ser inferencia directa en una pesadilla de debugging.
Tomé notas detalladas. Esto es lo que pasó en realidad:
Los defensores de modelos más grandes siempre dicen “simplemente añade más VRAM”. Claro, si tienes 8,000 dólares tirados por ahí para una A100. Pero si corres agentes locales en una GPU de consumidor—que seamos sinceros, es la mayoría de nosotros—VRAM es la restricción de verdad. No capacidad teórica. No puntajes de benchmark. Memoria real, física.
Qwen3.5:9B respeta esa realidad.
El Truco de Eficiencia de Tokens Que Nadie Está Comentando
Aquí es donde se pone raro, y también donde están las ganancias de verdad.
Qwen3.5:9B soporta un parámetro think=false que desactiva los tokens de razonamiento interno. Misma tarea. Consumo diferente de tokens. Hablamos de 1024+ tokens que bajan a 131. Una reducción de 8-10x. Eso no es un error de redondeo—es un cambio de fase en cómo se comporta el modelo.
¿Por qué importa? Porque contextos más largos y más resultados de herramientas caben en