DEV Community

Cover image for Qwen3.6-35B-A3B corre en mi laptop y dibuja mejor que Claude Opus 4.7
Juan Torchia
Juan Torchia

Posted on • Originally published at juanchi.dev

Qwen3.6-35B-A3B corre en mi laptop y dibuja mejor que Claude Opus 4.7

Estaba probando modelos locales para reemplazar algunas llamadas a la API de Anthropic — costo, latencia, privacidad, las razones de siempre — cuando le pedí a Qwen3.6-35B-A3B que me dibujara un pelícano en ASCII art. Lo que apareció en la terminal me hizo hacer un doble-take. Copié el prompt exacto, lo mandé a Claude Opus 4.7 vía API, y el resultado fue... peor. Considerablemente peor. Ahí me quedé cinco minutos mirando las dos salidas en splits de terminal preguntándome qué carajo estaba midiendo todo el mundo con esos benchmarks.

Qwen3.6 local vs Claude Opus 4.7: el contexto antes del pelícano

Qwen3.6-35B-A3B es un modelo Mixture of Experts de Alibaba. 35 mil millones de parámetros en total, pero solo activa 3.7B por inferencia — de ahí el sufijo A3B. Eso lo hace sorprendentemente eficiente en hardware de consumo. Yo lo corro con llama.cpp en una laptop con 32GB de RAM unificada, quantizado a Q4_K_M, y la inferencia es fluida. No rápida como una API en la nube, pero fluida.

Claude Opus 4.7 es el modelo más caro de Anthropic al momento de escribir esto. Cuesta $15 por millón de tokens de entrada y $75 por millón de salida. Es el que usás cuando querés lo mejor que tiene Anthropic para ofrecer.

Estos dos modelos no deberían estar compitiendo en el mismo rango. Y sin embargo.

# Setup: llama.cpp con soporte Metal en macOS
# El modelo pesa ~22GB en Q4_K_M

# Descarga del modelo desde Hugging Face
huggingface-cli download \
  Qwen/Qwen3.6-35B-A3B-Q4_K_M-GGUF \
  --local-dir ./models/qwen3.6-35b

# Servidor local con contexto amplio
./llama-server \
  -m ./models/qwen3.6-35b/qwen3.6-35b-a3b-q4_k_m.gguf \
  --ctx-size 32768 \
  --n-predict 2048 \
  --host 0.0.0.0 \
  --port 8080 \
  -ngl 99  # Todas las capas en GPU (Metal)
Enter fullscreen mode Exit fullscreen mode

El prompt que usé fue deliberadamente simple: "Dibujame un pelícano en ASCII art. Que se vea bien, con detalle en el pico característico." Sin instrucciones de tamaño, sin ejemplos, sin chain-of-thought forzado.

Lo que salió: la comparación que no esperaba

Qwen3.6 me devolvió esto (reconstruido aproximadamente para el post, pero fiel al output real):

        .---.
       /     \
      |  o   |
       \  --/ \
        '--'   |
       /|      |
      / |  __--'
,----'  | /
|       |/
|    ___|
|   /   \___
'--'         '--.
   ~~~~~~~~~~~~~~~
Enter fullscreen mode Exit fullscreen mode

Tiene el pico largo y abultado abajo — el saco gular del pelícano. Tiene cuello. Tiene cuerpo. Tiene patas. El agua en la base tiene sentido contextual. No es un pelícano fotográfico, pero es un pelícano. Alguien que no supiera qué modelo lo generó diría "ah, sí, un pelícano".

Claude Opus 4.7 me devolvió algo más parecido a esto:

   ___
  /   \
 |  o  |
  \___/
   |||
   |||  ___________
   |||_/
Enter fullscreen mode Exit fullscreen mode

Eso es un pájaro genérico con un palo debajo. No hay pico distintivo. No hay saco gular. No hay nada que lo identifique como pelícano específicamente. Podría ser cualquier ave.

Repetí el experimento tres veces con variaciones del prompt. El patrón se mantuvo.

Por qué esto importa más allá del ASCII art

La primera reacción fácil es: "bueno, es una tarea de nicho, los benchmarks miden cosas más importantes". Y ahí está el problema exactamente.

Los benchmarks miden lo que es fácil de medir: MMLU, HumanEval, GSM8K, razonamiento matemático, comprensión lectora estandarizada. Son útiles. Pero no miden capacidad de representación espacial en texto, que es exactamente lo que el ASCII art testea. Y esa capacidad tiene correlatos reales: entender diagramas de arquitectura descriptos en texto, razonar sobre layouts, generar documentación técnica con diagramas ASCII que son legibles.

Ya escribí antes sobre la brecha entre 'funciona' y 'es útil' con Gemma 4 en iPhone. El caso del pelícano es la historia al revés: algo que técnicamente debería ser inferior, en una métrica que a mí me importa, no lo es.

Esto tiene implicaciones directas sobre cuánto pagás. Si usás Claude Opus 4.7 para tareas donde Qwen3.6 local es igual o mejor, estás pagando por nombre de marca y por la comodidad de la API. Eso puede ser válido — la API de Anthropic usa tus créditos de maneras que no siempre son transparentes y tenés que entender el trade-off. Pero al menos que sea una decisión consciente.

# Comparación de costos para el mismo volumen de uso
# 1 millón de tokens de input por mes (uso moderado)

costos = {
    # Modelos de API
    "claude_opus_4_7": {
        "input_por_mtoken": 15.00,   # USD
        "output_por_mtoken": 75.00,
        "costo_mensual_estimado": 90.00,  # 1M input + 1M output aprox
        "hardware_requerido": 0
    },
    "claude_sonnet": {
        "input_por_mtoken": 3.00,
        "output_por_mtoken": 15.00,
        "costo_mensual_estimado": 18.00,
        "hardware_requerido": 0
    },
    # Modelo local
    "qwen3_6_35b_local": {
        "input_por_mtoken": 0,        # Electricidad, básicamente
        "output_por_mtoken": 0,
        "costo_mensual_estimado": 3.50, # Estimado de electricidad
        "hardware_requerido": 32_000   # MB RAM mínimo
    }
}

# El punto no es que local siempre gana
# El punto es que la diferencia de calidad
# no siempre justifica la diferencia de precio
Enter fullscreen mode Exit fullscreen mode

Los errores que cometés cuando evaluás modelos locales

Error 1: Comparar el modelo cuantizado con el full-precision como si fueran iguales. Q4_K_M pierde algo de calidad respecto al modelo original en FP16. En tareas de razonamiento complejo, esa pérdida importa. En ASCII art y en muchas tareas de generación de texto, no se nota. Necesitás saber cuándo importa.

Error 2: Ignorar la temperatura y los parámetros de sampleo. Los modelos locales con llama.cpp tienen defaults que pueden ser distintos a los que usa Anthropic en su API. Una temperatura de 0.7 local puede comportarse diferente a temperatura 0.7 en la API.

# Parámetros que cambié para obtener resultados más consistentes
# en tareas creativas/espaciales
./llama-cli \
  -m ./models/qwen3.6-35b-a3b-q4_k_m.gguf \
  --temp 0.6 \
  --top-p 0.9 \
  --top-k 40 \
  --repeat-penalty 1.1 \
  -p "Dibujame un pelícano en ASCII art con detalle en el pico"
# --temp más bajo = más determinista, mejor para tareas espaciales
# --repeat-penalty evita que repita caracteres en loop
Enter fullscreen mode Exit fullscreen mode

Error 3: Usar el modo thinking cuando no hace falta. Qwen3.6 tiene capacidad de razonamiento extendido (como un chain-of-thought interno). Para ASCII art, ese modo es contraproducente — el modelo empieza a razonar sobre el pelícano en vez de dibujarlo. Lo apagué con /no_think en el prompt y los resultados mejoraron.

Error 4: Evaluar solo en lo que ya sabés que el modelo cloud gana. Si tu evaluación es sesgada hacia las fortalezas del modelo caro, vas a concluir que vale la pena. Testéalo en tus casos de uso reales, no en los benchmarks de marketing.

Error 5: No considerar la privacidad como variable de la ecuación. Todo lo que mandás a la API de Anthropic sale de tu máquina. Si eso importa en tu contexto — y debería importarte más de lo que creés — entonces el modelo local tiene un valor que no aparece en ningún benchmark de calidad.

FAQ: Qwen3.6 local vs Claude Opus 4.7

¿Qwen3.6-35B-A3B realmente corre en hardware de consumo?
Sí, con condiciones. Necesitás al menos 24GB de RAM para el modelo quantizado en Q4_K_M (~22GB). Con 32GB de RAM unificada (como los M2/M3 Pro de Apple) corrés cómodo. En sistemas con RAM y VRAM separadas, necesitás que entre en VRAM o tolerar inferencia parcial en CPU, que es mucho más lenta.

¿Qué significa exactamente el sufijo A3B en Qwen3.6-35B-A3B?
Es un modelo Mixture of Experts (MoE). Tiene 35 mil millones de parámetros en total, pero la arquitectura MoE activa solo un subconjunto por cada token procesado — en este caso, aproximadamente 3.7B parámetros activos. Eso lo hace mucho más eficiente en memoria y velocidad que un modelo denso de 35B equivalente, manteniendo buena parte de la capacidad.

¿En qué tareas sigue ganando Claude Opus 4.7 cómodamente?
Razonamiento matemático complejo, instrucción siguiendo con muchas restricciones simultáneas, análisis de documentos largos con contexto extendido, y tareas donde la consistencia bajo presión importa mucho. Para código muy específico con edge cases complejos, yo todavía prefiero Claude Sonnet o Opus. El pelícano fue una sorpresa; no significa que sean equivalentes en todo.

¿Vale la pena el setup técnico para correr Qwen3.6 local?
Depende de tu volumen de uso. Si hacés más de 500K tokens por mes, el ahorro es significativo. Si usás modelos locales en proyectos donde la privacidad importa — código propietario, datos sensibles — el setup vale independientemente del costo. Si sos curioso técnicamente y ya tenés el hardware, definitivamente sí. No es un proceso para usuarios casuales todavía, pero tampoco es rocket science.

¿Cómo sé qué modelo usar para cada tarea en la práctica?
La respuesta honesta: experimentá en tus casos de uso específicos, no en benchmarks genéricos. Armé un sistema similar al que describí en el post sobre curación auto-regulada de recursos técnicos: evalúo modelos en tareas reales que tengo que hacer igual, registro los resultados, y ajusto el routing según eso. No hay un atajo más confiable que ese.

¿Qwen3.6 es seguro de correr localmente desde el punto de vista de seguridad?
Más seguro que la API en el sentido de que tus datos no salen de tu máquina. Pero "seguro" es una dimensión más amplia. El modelo en sí es open-weight y auditble. El vector de riesgo principal en setups locales son las dependencias (llama.cpp, frameworks de serving) y los endpoints que exponés en red. Si exponés el servidor local en red, aplicá las mismas reglas de seguridad que aplicarías a cualquier servicio: autenticación, no lo expongas a internet sin razón, logs.

Lo que el pelícano me enseñó sobre cómo evaluamos inteligencia

El pelícano no es el punto. El punto es que una tarea concreta, específica, que yo necesitaba para un proyecto real, la resolvió mejor un modelo open-weight corriendo en mi laptop que el modelo más caro de uno de los labs de IA más respetados del mundo.

Eso no significa que Qwen3.6 sea "mejor" que Claude Opus 4.7 en ningún sentido global. Significa que la noción de "mejor" es completamente dependiente del contexto, y que los benchmarks que usamos para medir "inteligencia" en modelos de lenguaje son una aproximación ruidosa de lo que nos importa en la práctica.

Lo que me cambió este experimento fue el proceso de evaluación. Ahora antes de elegir qué modelo uso para una tarea nueva, hago una evaluación pequeña y rápida con mis casos de uso reales. No benchmarks de marketing, no papers de los labs. Mis tareas, mi hardware, mi criterio.

A veces el resultado me sorprende. El pelícano me sorprendió. Y eso vale más que cualquier número en un leaderboard.

Si querés replicar el experimento, el setup completo está en el bloque de código de arriba. Tardás una hora en tenerlo andando. Probalo con tus tareas, no con las mías. A lo mejor tu caso de uso sigue necesitando Opus. A lo mejor no. La única forma de saberlo es preguntarle a un pelícano.


Este artículo fue publicado originalmente en juanchi.dev

Top comments (0)