Inteligencia artificial

Cómo mejoró JetBrains la ejecución local de Qwen3.6 dentro del agente Junie

JetBrains explica las modificaciones realizadas en Junie y en el motor de inferencia para ejecutar Qwen3.6-27B localmente en MacBook equipados con el chip M5. La experiencia muestra que el rendimiento de los agentes de programación locales depende tanto de la gestión del contexto y de la etapa de prefill como de la velocidad de generación de tokens.

2026-08-24
8 min de lectura
10 visitas
فريق تحرير certi.news
Cómo mejoró JetBrains la ejecución local de Qwen3.6 dentro del agente Junie

JetBrains reveló detalles técnicos sobre la ejecución local de la primera versión de Junie Local en un MacBook M5 mediante el modelo Qwen3.6-27B. La empresa explicó que alcanzar un rendimiento práctico no fue únicamente resultado de elegir un modelo comprimido, sino que requirió modificaciones en el propio agente de programación, el motor de inferencia, la configuración del modelo y la forma de gestionar el contexto.

La compañía afirma que el proyecto para ejecutar Junie completamente en el dispositivo, sin inferencia en la nube, es un proyecto a largo plazo dirigido a una amplia variedad de configuraciones de hardware. La primera versión disponible actualmente se centra en los dispositivos MacBook M5, lo que explica que las optimizaciones anunciadas se concentren en las características de estos chips.

Mantener el contexto de las tareas dentro de la sesión

Junie, al igual que otros agentes de programación, funciona mediante un ciclo de ejecución en el que el usuario envía una tarea al modelo. Después, el modelo ejecuta llamadas a herramientas, como comandos de Bash y la lectura y escritura de archivos, antes de devolver al modelo los resultados de esas operaciones. Con cada nueva solicitud, el contexto se amplía y es posible reutilizar los datos de KV-cache que el modelo procesó en la solicitud anterior.

En los modelos en la nube, el agente puede volver a solicitar un archivo cuando lo necesita, porque la etapa de prefill, es decir, el procesamiento del contexto inicial antes de generar la respuesta, es relativamente rápida. Sin embargo, JetBrains descubrió que leer archivos resulta costoso en términos de tiempo en los modelos locales. Por ello, modificó la lógica de inferencia local para añadir cada nueva solicitud directamente al contexto en movimiento, en lugar de limitarse a las partes que considera pertinentes para la nueva tarea. De este modo, el archivo que el modelo leyó permanece dentro del contexto y la memoria KV-cache puede reutilizarse, en vez de procesarlo de nuevo.

La empresa también cambió el orden de los datos que Junie envía al iniciar una nueva sesión de programación y añadió al motor de inferencia una lógica para almacenar el prefijo hasta la solicitud del usuario. Como resultado, este prefijo puede reutilizarse en tareas posteriores dentro del mismo proyecto. En cambio, el contexto del proyecto que aparece después de la solicitud del usuario no se almacenó de la misma manera, porque es relativamente pequeño y está compuesto principalmente por archivos de nivel superior que pueden cambiar con frecuencia.

Modificaciones relacionadas con el comportamiento del modelo

Qwen3.6 no gestionaba las actualizaciones de progreso de la forma que Junie espera de los modelos en la nube: normalmente ignoraba el bloque dedicado a las actualizaciones de estado en un formato similar a XML, pero escribía una descripción textual de sus acciones junto con las llamadas a herramientas. JetBrains aprovechó este comportamiento y mostró el texto generado como una actualización para el usuario. La empresa aclara que esta adaptación es específica del modelo, ya que otros modelos podrían no imprimir ningún texto o producir un texto excesivo.

JetBrains también desactivó solicitudes opcionales del modelo, entre ellas la lógica que genera una descripción breve de la tarea. La empresa considera aceptable la concesión limitada en la experiencia de uso a cambio de reducir las solicitudes. Asimismo, desactivó el modo de agentes múltiples, porque el procesamiento secuencial es más eficiente en un dispositivo M5 según sus pruebas, mientras que las solicitudes paralelas seguirían limitadas por la velocidad de inferencia.

¿Por qué se eligió Qwen3.6-27B?

JetBrains decidió desactivar por completo el reasoning en la versión local. Según sus pruebas internas de la versión en la nube de Qwen3.6-27B, activar el razonamiento no produjo un aumento significativo de la calidad. Puesto que los tokens de razonamiento se contabilizan entre los tokens generados por el motor de inferencia, desactivarlos redujo entre dos y tres veces la cantidad de tokens necesarios. La empresa tradujo esto en una aceleración cercana al doble en la ejecución de tareas, con un impacto que describió como insignificante en la calidad.

La empresa utilizó la versión con cuantización de 4 bits, porque era solo ligeramente peor que la versión de 8 bits en las pruebas de referencia y porque la generación de tokens limitada por la memoria era aproximadamente el doble de rápida que en la versión de 8 bits. Sin embargo, la velocidad de prefill no varió entre las versiones de 4, 8 y 16 bits en las pruebas iniciales, lo que llevó al equipo a examinar las operaciones matemáticas dentro del motor.

El cuello de botella invisible: la etapa de prefill

Según las cifras de JetBrains, la velocidad de prefill puede alcanzar aproximadamente 3.700 tokens por segundo en una tarjeta RTX 5090 con la configuración predeterminada, frente a unos 650 tokens por segundo en M5 antes de la optimización. En las tareas de investigación dentro de archivos, la mayor parte del tiempo se dedicaba a procesar el contexto, no a generar la respuesta en sí.

El equipo descubrió que una parte considerable de las operaciones matriciales durante el prefill se ejecutaba con precisión de 16 bits, incluso cuando los pesos estaban comprimidos a 4 bits, porque los pesos se convertían a 16 bits antes de ejecutar las operaciones. Como el M5 dispone de instrucciones específicas para cálculos con precisión de 8 bits, JetBrains aplicó una corrección al paquete MLX-VLM para trasladar a 8 bits algunas operaciones matriciales de las capas de self-attention, con lo que obtuvo un aumento cercano al 40 % en la velocidad de prefill. La modificación no incluyó las capas de full-attention, cuyos pesos permanecen con precisión de 16 bits incluso con la cuantización.

La empresa relaciona su enfoque actual en M5 precisamente con estas instrucciones de cálculo: los chips M4 no las tienen, y JetBrains afirma que los cálculos de 16 bits en M4 son entre un 20 % y un 30 % más lentos en la etapa de prefill que en M5.

Acelerar la generación y elegir el modelo

JetBrains activó conjuntamente dos métodos de speculative decoding: la predicción de múltiples tokens MTP mediante un modelo borrador independiente y la coincidencia de n-gramas, que busca secuencias repetidas en el contexto para predecir los tokens siguientes. En algunos casos pueden aceptarse aproximadamente tres tokens propuestos mediante MTP y hasta ocho tokens adicionales mediante la coincidencia de n-gramas, lo que proporcionó una aceleración de hasta el doble en la generación.

La empresa explica que Qwen3.8-27B no era la mejor opción en dispositivos Mac, porque necesita reasoning para funcionar bien. Al desactivarlo, la calidad se deteriora considerablemente y el modelo puede quedarse atascado en un ciclo en el que repite la misma llamada a la herramienta. Activarlo en un nivel medio aumenta aproximadamente cinco veces la cantidad de tokens generados, lo que en la práctica provoca una ralentización cercana a cuatro veces, ya que el tiempo de prefill no cambia demasiado. Por ello, Qwen3.6-27B sigue siendo actualmente, según la evaluación de JetBrains, la opción más adecuada para ejecutar Junie localmente en hardware Mac.

Lectura de certi.news: ¿qué cambia realmente?

Esta experiencia muestra que medir un agente de programación local únicamente por el número de tokens generados por segundo puede ofrecer una imagen incompleta. El usuario también espera la carga de archivos, la reutilización del contexto y la ejecución de llamadas a herramientas, etapas que pueden convertirse en un cuello de botella antes de que comience la generación. En la práctica, las modificaciones de Junie reducen la necesidad de volver a leer los archivos, mientras que la corrección de MLX-VLM aumenta la velocidad de procesamiento del contexto en M5 y la desactivación del reasoning reduce el número de tokens necesarios.

Pero las limitaciones también son claras: la primera versión se centra en M5, desactivar el reasoning puede no ser adecuado para los modelos que dependen de él para mantener la calidad y el aprovechamiento de las actualizaciones de progreso está vinculado al comportamiento de Qwen3.6. JetBrains afirma que dispone de prototipos para admitir DGX Spark y RTX 5090 y que también está estudiando tarjetas con 24 GB de capacidad, pero el material no proporciona una fecha ni especificaciones para la disponibilidad de estas versiones. Por tanto, Junie Local representa un paso técnico importante hacia agentes de programación locales más utilizables, no una prueba de que la experiencia ya sea equivalente a la de todos los modelos en la nube o esté disponible en todo tipo de hardware.

Fuente de la noticia
JetBrains Blog
Abrir fuente original ↗
ف
Autor

فريق تحرير certi.news

De la misma categoría

También te puede interesar

Ver todas las noticias