Ornith-1.0-35B: calidad de un 27B denso con MoE en un MacBook
Cómo se compara un modelo mixture-of-experts de 35B con 3B de parámetros activos frente a Qwen3.6, qué necesita para funcionar con llama.cpp y dónde brilla o se queda atrás.
Un modelo denso de 27B es algo pesado de mantener funcionando a diario, incluso uno bueno como Qwen3.6-27B. Ornith-1.0-35B toma otro camino. Tiene 35.000 millones de parámetros en total, pero solo despierta unos 3.000 millones por token, cabe en hardware de consumo y, en programación y uso de herramientas, se queda cerca de los modelos densos de 27B. Además se distribuye en GGUF, así que no hace falta actualizar llama.cpp ni montar una infraestructura de serving especial. Descargar, cargar y listo. Y es rápido.
Qué es Ornith-1.0-35B
Ornith-1.0 es una familia de modelos de DeepReinforce. Parte de los pesos preentrenados de Qwen 3.5 y se ajusta con el método propio del laboratorio, un aprendizaje por refuerzo con andamiajes que el modelo construye por sí mismo (self-scaffolding RL). El miembro de 35B tiene un diseño Mixture-of-Experts (MoE): existen 35B de parámetros, pero solo unos 3B participan en el procesamiento de cada token.
Imagina un cerebro grande en el que, para cada pensamiento, solo se ilumina la región relevante mientras el resto descansa y ahorra cómputo. El resultado es una calidad cercana a la de un 27B denso con unos 3B de cómputo activo. Para la IA local es un equilibrio muy atractivo.
Las cifras
Un benchmark de capacidades mixtas llamado spark-bench, publicado en github.com/Weschera/spark-bench, ejecuta 57 escenarios en 10 dominios. Así quedó Ornith frente a la familia Qwen3.6:
Model Overall Coding Math Tool Use Reasoning
Ornith-1.0-35B 41.07 62.26 47.29 58.14 38.92
Qwen3.6-27B (dense) 43.12 64.18 49.87 56.32 41.05
Qwen3.6-35B-A3B (MoE) 39.84 59.47 44.12 52.88 37.21
Destacan algunos puntos.
Ornith supera a Qwen3.6-35B-A3B en todo. Es su pariente más cercano, ya que ambos son modelos MoE de 35B con unos 3B activos. El self-scaffolding RL le da a Ornith una ventaja clara en programación (+2,8 puntos), uso de herramientas (+5,3) y razonamiento (+1,7).
Ornith también se queda cerca de Qwen3.6-27B. El modelo denso sigue por delante en el total por 2,05 puntos, pero en programación la diferencia se reduce a 1,92 y en uso de herramientas la situación se invierte, con Ornith 1,82 por delante. En matemáticas y razonamiento puro sigue ganando el denso. Aun así, para el trabajo de programación con agentes, Ornith compite bien.
Pruebas en un MacBook
Con el modelo conectado a un agente en un MacBook, un ciclo de trabajo completo incluyó buscar en la web, escribir código y editar archivos. En el día a día se sentía como Qwen3.6-27B, pero más rápido.
La razón es la arquitectura. Con solo unos 3B de parámetros activos por token, una cuantización Q4_K_M en llama.cpp exige mucho menos cómputo por token que un 27B denso, aunque el número total de parámetros sea mayor.
Model Q4_K_M Size Active Params Est. tok/s (M4 Max 64GB)
Ornith-1.0-35B (MoE) 21.2 GB ~3B ~75-85 tok/s
Qwen3.6-27B (dense) 16.5 GB 27B ~15-18 tok/s
Qwen3.6-35B-A3B (MoE) 20.5 GB ~3B ~65-75 tok/s
El GGUF de Ornith ocupa 21,2 GB en Q4_K_M, algo más que los 16,5 GB de Qwen3.6-27B, pero el cómputo activo por token es unas nueve veces menor. Ese es el trato del MoE: pagas una vez en memoria para cargar todos los expertos y luego, por cada token, solo pagas el cómputo de 3B.
En un M4 Max con 64 GB, la versión Q4_K_M ocupa unos 25 GB de memoria en total, contando pesos, caché KV y runtime, lo que deja espacio de sobra para el contexto y otras aplicaciones.
Sin actualizar llama.cpp
Ornith-1.0-35B funciona sin más en la versión actual de llama.cpp. Usa las mismas etiquetas <think> y </think> que los modelos Qwen, y llama.cpp enruta los expertos de forma nativa. No hay parches, ni forks, ni que esperar a que llegue el soporte upstream.
Tras apuntar el agente al GGUF descargado, las etiquetas de razonamiento se interpretaron correctamente, las llamadas a herramientas funcionaron y los bucles de agente de varios turnos se ejecutaron sin problemas.
Puntos fuertes y límites
La programación y el uso de herramientas son su terreno. El entrenamiento con self-scaffolding RL se centró específicamente en flujos de programación con agentes, y en las pruebas el modelo escribió código limpio, gestionó ediciones en varios archivos y eligió sus herramientas (búsqueda web, comandos de shell) con sensatez.
El razonamiento es sólido, aunque un escalón por debajo de Qwen3.6-27B. En matemáticas puras o lógica intrincada, el modelo denso mantiene ventaja. Para el razonamiento que importa al programar, como depurar, tomar decisiones de arquitectura o revisar código, Ornith va más que sobrado.
Admite contexto largo por encima de 200K tokens. No se ha llevado al extremo, pero entre 32K y 64K maneja grandes bases de código y RAG sobre varios documentos sin quejarse.
No sustituye a Qwen3.6-27B cuando necesitas la máxima profundidad de razonamiento o matemáticas. Si tu carga principal es programar, usar herramientas y ejecutar bucles de agentes, obtienes alrededor del 90 % de la calidad con una fracción del cómputo.
Conclusión
Ornith-1.0-35B es el tipo de modelo que hace que la carrera por el número de parámetros parezca menos importante: 35B en total, 3B activos por token, calidad cercana a un 27B denso en programación y uso de herramientas, hardware de consumo y sin serving especial. En un MacBook, es el punto ideal.
¿Usas Qwen3.6-35B-A3B? Pásate a Ornith. ¿Usas Qwen3.6-27B y quieres una inferencia más rápida sin sacrificar mucha calidad? Pruébalo. El GGUF está en Hugging Face, el soporte en llama.cpp va fino y los resultados se sostienen.
La IA local de código abierto sigue mejorando, y ver a un modelo MoE avanzar así sugiere que queda mucho margen. El próximo hito al que conviene prestar atención es Qwen3.7-27B.