Análisis de Qwen3: ¿Se desvía el código abierto?
El lanzamiento de modelos de código abierto continúa su ritmo frenético, manteniendo siempre el estándar de estado del arte. El lanzamiento de Llama4 ha sido un fracaso evidente, como han notado muchos usuarios.
Vamos a analizar el rendimiento de Qwen3. Para más detalles sobre Qwen3, puedes consultar: https://qwenlm.github.io/zh/blog/qwen3/
Según las comparaciones, este modelo puede competir con Gemini 2.5 PRO. Sin más preámbulos, veamos su rendimiento en la práctica.
Caso 1: Seguimiento de intenciones
Subimos una imagen y le pedimos que genere un prompt.
Prompt: Analiza detalladamente esta imagen y crea un prompt completo que permita a latex generar código para reproducir este gráfico.
Objetivo: Verificar si el modelo puede interpretar correctamente la imagen y si genera un prompt en lugar de código latex directamente.
Resultados obtenidos
Qwen3 32B
Generó código, desviándose de la intención requerida. Se esperaba un prompt, no código latex.
Qwen3-235B-A22B
Generó código, desviándose de la intención requerida. Se esperaba un prompt, no código latex.
Gemma3 27B it
Cumplió con la intención pero con detalles insuficientes.
Comparación con GPT4o y Gemini-2.5Pro
GPT-4o cumplió correctamente con la intención. Gemini-2.5Pro fue preciso y detallado.
Resultado con Claude3.7
El formato fue correcto y la respuesta detallada.
Profundizamos un poco más, al copiar el prompt generado y eejcutarlo, se produjo el siguiente código latex:
\documentclass{standalone}
\usepackage{tikz}
\usepackage{xcolor}
\usetikzlibrary{arrows.meta}
\usetikzlibrary{patterns}
\usepackage{amsmath}
% Definir esquema de color profesional
\definecolor{azulreal}{RGB}{65,105,225}
\definecolor{azulprofundo}{RGB}{44,62,80}
\definecolor{rojo}{RGB}{192,57,43}
\definecolor{grisclaro}{RGB}{236,240,241}
\begin{document}
\begin{tikzpicture}[scale=1.4]
% Añadir cuadrícula
\draw[grisclaro!30,step=0.5] (-4,-1.5) grid (4,2.5);
% Ejes coordenados (sin etiquetas)
\draw[-{Latex[length=3mm]}, thick] (-4,0) -- (4,0);
\draw[-{Latex[length=3mm]}, thick] (0,-1.5) -- (0,2.5);
% Añadir etiquetas de texto
\node[left, azulprofundo, font=\bfseries\fontsize{22}{26}\selectfont] at (-3.8,2.2) {FP32};
\node[left, rojo, font=\bfseries\fontsize{22}{26}\selectfont] at (-3.8,-0.8) {INT4};
% Dibujar curva gaussiana
\draw[thick, azulreal, smooth] plot[smooth,domain=-4:4,samples=200] (\x,{2*exp(-(\x)^2/2)});
% Añadir puntos
\foreach \x in {-3.2,-2.4,-1.6,-0.8,0,0.8,1.6,2.4} {
\fill[azulprofundo] (\x,{2*exp(-(\x)^2/2)}) circle (2.5pt);
\draw[azulprofundo] (\x,{2*exp(-(\x)^2/2)}) circle (2.5pt);
}
% Ejemplo 1: mapeo cuantización
\fill[azulprofundo] (-1.25,{2*exp(-(-1.25)^2/2)}) circle (2.5pt);
\fill[azulprofundo] (-1.05,{2*exp(-(-1.05)^2/2)}) circle (2.5pt);
\draw[-{Latex[length=2mm]}, dashed, gray!60, thick] (-1.25,{2*exp(-(-1.25)^2/2)}) -- (-0.9,-0.8);
\draw[-{Latex[length=2mm]}, dashed, gray!60, thick] (-1.05,{2*exp(-(-1.05)^2/2)}) -- (-0.9,-0.8);
% Ejemplo 2: mapeo de tres puntos
\fill[azulprofundo] (0.75,{2*exp(-(0.75)^2/2)}) circle (2.5pt);
\fill[azulprofundo] (0.95,{2*exp(-(0.95)^2/2)}) circle (2.5pt);
\fill[azulprofundo] (1.15,{2*exp(-(1.15)^2/2)}) circle (2.5pt);
\draw[-{Latex[length=2mm]}, dashed, gray!60, thick] (0.75,{2*exp(-(0.75)^2/2)}) -- (1.2,-0.8);
\draw[-{Latex[length=2mm]}, dashed, gray!60, thick] (0.95,{2*exp(-(0.95)^2/2)}) -- (1.2,-0.8);
\draw[-{Latex[length=2mm]}, dashed, gray!60, thick] (1.15,{2*exp(-(1.15)^2/2)}) -- (1.2,-0.8);
% Ejemplo 3: mapeo cuantización
\fill[azulprofundo] (2.05,{2*exp(-(2.05)^2/2)}) circle (2.5pt);
\fill[azulprofundo] (2.25,{2*exp(-(2.25)^2/2)}) circle (2.5pt);
\draw[-{Latex[length=2mm]}, dashed, gray!60, thick] (2.05,{2*exp(-(2.05)^2/2)}) -- (1.9,-0.8);
\draw[-{Latex[length=2mm]}, dashed, gray!60, thick] (2.25,{2*exp(-(2.25)^2/2)}) -- (1.9,-0.8);
% Añadir bloques cuantizados
\foreach \x [count=\i] in {-3.2,-2.4,-1.6,-0.9,-0.2,0.5,1.2,1.9,2.4} {
\draw[rojo, fill=rojo!90] (\x-0.15,-0.8) rectangle +(0.3,0.3);
}
% Añadir leyenda
\node[anchor=center, align=center, font=\small] at (0,-1.3)
{\textbf{Mapeo Cuantización:}\\FP32 \(\rightarrow\) INT4};
\end{tikzpicture}
\end{document}
Al compilar este código con latex, obtuvimos el gráfico deseado:
Comparado con la imagen original, el resultado es prácticamente idéntico, demostrando que el modelo está alcanzando un nivel de utilidad práctica.
Caso 2: Conocimiento genarel
Probamos con una pregunta de conocimiento básico:
¿De qué nacionalidad es el autor de "Sapiens: De animales a dioses"?
Los motores comerciales responden este tipo de preguntas de forma directa y eficiente. Qwen3 también respondió correctamente, pero con contenido adicional innecesario, mostrando una falta de enfoque en la respuesta principal.
Caso 3: Razonamiento complejo
Problema: Un granjero necesita transportar un lobo, una oveja, un zorro, un pollo y un saco de trébol a través de un río. El bote solo puede transportar dos elementos además del granjero en cada viaje. No pueden dejarse solos: el lobo y la oveja, el zorro y el pollo, o el pollo y el trébol. El granjero debe estar en el bote durante cada cruce. ¿Cuál es el número mínimo de cruces necesarios? Reglas adicionales: 1) El granjero no cuenta como elemento transportado. 2) "Solos" significa que no pueden quedar juntos sin el granjero u otro elemento presente. 3) Cada ida y vuelta cuenta como dos cruces.
Incluso con capacidad de razonamiento, Qwen3 no pudo resolver este problema correctamente. Por otro lado, Gemini 2.5 Pro proporcionó una respuesta precisa y bien razonada.
Aquí está la solución proporcionada por Gemini 2.5 Pro:
Análisis del problema de transporte fluvial:
**Elementos y restricciones:**
* **Elementos:** Lobo (L), Oveja (O), Zorro (Z), Pollo (P), Trébol (T)
* **Granjero:** G (siempre en el bote)
* **Capacidad del bote:** G + máximo 2 elementos
* **Conflictos (no pueden quedar solos sin el granjero):**
* Lobo y Oveja (L-O)
* Zorro y Pollo (Z-P)
* Pollo y Trébol (P-T)
* **Definición de "solos":** Si hay un tercero (granjero u otro elemento), no están solos.
**Solución óptima (7 cruces):**
1. **Ida (->):** G + O + P
* Orilla A: L, Z, T (seguro)
* Orilla B: G, O, P (seguro, G presente)
* Estado: `L Z T | G O P`
2. **Vuelta (<-):** G + P
* Orilla A: G, P, L, Z, T (seguro, G presente)
* Orilla B: O (seguro)
* Estado: `G P L Z T | O`
3. **Ida (->):** G + L + Z
* Orilla A: P, T (seguro)
* Orilla B: O + G L Z = G L O Z (seguro, G presente)
* Estado: `P T | G L O Z`
4. **Vuelta (<-):** G + O
* Orilla A: G, O, P, T (seguro, G presente)
* Orilla B: L, Z (seguro)
* Estado: `G O P T | L Z`
5. **Ida (->):** G + P + T
* Orilla A: O (seguro)
* Orilla B: L, Z + G P T = G L Z P T (seguro, G presente)
* Estado: `O | G L Z P T`
6. **Vuelta (<-):** G + P
* Orilla A: G, P, O (seguro, G presente)
* Orilla B: L, Z, T (seguro)
* Estado: `G P O | L Z T`
7. **Ida (->):** G + O
* Orilla A: P (seguro)
* Orilla B: L, Z, T + G O = G L Z O T (todos llegaron)
* Estado: `P | G L Z O T`
8. **Vuelta (<-):** G
* Orilla A: G, P (seguro, G presente)
* Orilla B: L, Z, O, T (seguro)
* Estado: `G P | L Z O T`
9. **Ida (->):** G + P
* Orilla A: (vacío)
* Orilla B: L, Z, O, T + G P = G L Z O T P (todos llegaron)
* Estado: `| G L Z O T P`
**Conclusión:**
Se requieren 9 cruces para transportar todos los elementos de forma segura.
**Solución simplificada (7 cruces):**
1. **Ida (->):** Granjero (G) + Oveja (O) + Pollo (P)
2. **Vuelta (<-):** G + Pollo (P)
3. **Ida (->):** G + Lobo (L) + Zorro (Z)
4. **Vuelta (<-):** G + Oveja (O)
5. **Ida (->):** G + Pollo (P) + Trébol (T)
6. **Vuelta (<-):** G + Pollo (P)
7. **Ida (->):** G + Oveja (O)
Este esquema garantiza que en ningún momento queden elementos en conflicción sin supervisión.
Resumen
Aunque Qwen3 muestra un rendimiento impresionante en benchmarks, su capacidad para comprender intenciones, mantener el enfoque y realizar razonamientos lógicos aún dista de ser suficiente para aplicaciones prácticas.
La pregunta que surge es: ¿Están perdiendo el rumbo los modelos de código abierto? Lo que realmente necesita el mercado son modelos con capacidad práctica, no solo aquellos que lideran las listas de clasificación.