Los grandes modelos de lenguaje (LLMs) han transformado el procesamiento del lenguaje natural, con resultados impresionantes en tareas que van desde el diálogo hasta la generación de código. Dentro de esta evolución, los modelos de difusión enmascarada han surgido como una alternativa, escalándose en modelos basados en difusión como LLaDA y Dream. Estos modelos refinan la secuencia completa de forma iterativa y paralela, lo que permite una planificación global del contenido. Este enfoque encaja bien con la generación de código, donde a menudo se requiere una revisión y ajuste no secuenciales. Sin embargo, aún no está claro cómo se desempeñan los modelos de difusión abiertos en tareas de programación, dado que los intentos previos presentan mejoras limitadas o dependen de decodificación semi-autoregresiva, que va en contra de la naturaleza de planificación global propia de la difusión.
En cuanto a la evolución de los modelos de difusión para texto y su influencia en la síntesis de código, los primeros ejemplos incluyen los modelos de difusión enmascarada. Recientemente, trabajos a mayor escala han dado lugar a LLMs de difusión como DiffuLLaMA, LLaDA y Dream. También se ha propuesto una estrategia híbrida llamada difusión por bloques, que aplica difusión dentro de bloques específicos. Los modelos multimodales como LaViDa, MMaDA y Dimple combinan difusión textual con modelos visuales. En la generación de código, CodeFusion fue pionero en incorporar modelos de difusión, aunque limitada a modelos pequeños y tareas simples. En el ámbito comercial, modelos como Mercury y Gemini alcanzan un rendimiento comparable a los principales modelos autoregresivos. Las técnicas de aprendizaje por refuerzo para estos modelos, como d1 y MMaDA usando GRPO, sin embargo, dependen de la decodificación por bloques durante la evaluación.
Recientemente, investigadores de Apple y la Universidad de Hong Kong presentaron DiffuCoder, un modelo de difusión enmascarada especializado en generación de código a escala 7 mil millones de parámetros, entrenado con 130 mil millones de tokens efectivos. Esto lo convierte en una plataforma ideal para explorar comportamientos de modelos basados en difusión y avanzar en métodos de post-entrenamiento. Además, introdujeron métricas de autoregresividad local y global para medir qué tan cerca está la generación de un patrón de izquierda a derecha. El análisis mostró que los modelos de difusión tienden a presentar un efecto de “sumidero de entropía”, lo que provoca un fuerte sesgo causal en la generación condicional. Al variar la temperatura de muestreo de 0.2 a 1.2, DiffuCoder gana flexibilidad para generar tokens en distintos órdenes, liberándose de la rigidez izquierda-derecha y mejorando su precisión en pruebas.
El entrenamiento de DiffuCoder siguió un proceso en cuatro etapas, partiendo de Qwen-2.5-Coder como modelo base y realizando un preentrenamiento continuo con 400 mil millones de tokens provenientes de RefineCode y Stackv2. Las fases incluyeron preentrenamiento de adaptación, entrenamiento intermedio con 16 mil millones de tokens de datos de código en refino, ajuste por instrucciones con 436 mil muestras y post-entrenamiento mediante coupled-GRPO con 21 mil muestras difíciles de Acecoder-87K. La etapa inicial se detuvo temprano tras procesar 65 mil millones de tokens, y la segunda etapa abarcó 4 épocas. Las evaluaciones se efectuaron con cuatro benchmarks de código diversos (HumanEval, MBPP, EvalPlus y BigCodeBench), incluyendo subconjuntos completos y difíciles, para distintos tipos de consultas basadas en finalización e instrucciones.
En cuanto a resultados, DiffuCoder entrenado con 130 mil millones de tokens logra un rendimiento comparable a Qwen2.5-Coder y OpenCoder. Sin embargo, todos los modelos de difusión muestran solo mejoras marginales tras el ajuste por instrucciones, a diferencia de Qwen2.5-Coder+SFT, que obtiene avances significativos con el mismo procedimiento. Por otro lado, el entrenamiento usando coupled-GRPO demostró ser muy efectivo, mientras que variantes básicas como d1, finalización con máscara completa o muestreo desacoplado mostraron comportamiento errático en la optimización de recompensas. El afinamiento con aprendizaje por refuerzo elevó la temperatura óptima de muestreo durante la evaluación, lo que indica que el modelo consigue distribuciones de probabilidad más definidas por token. Esto reduce la dependencia en la decodificación estrictamente autoregresiva y mejora la generación paralela de tokens.
En resumen, los investigadores presentan DiffuCoder, un modelo de difusión abierto para generación de código de 7 mil millones de parámetros que destaca por su rendimiento, junto con una receta completa de entrenamiento y un análisis detallado de los modelos de difusión para esta tarea. También introducen coupled-GRPO, un algoritmo de aprendizaje por refuerzo que respeta la naturaleza no autoregresiva de estos modelos mediante una técnica de muestreo conjunto para estimar la probabilidad con mayor precisión. Coupled-GRPO mejora notablemente el desempeño de DiffuCoder, evidenciando el potencial de aplicar métodos de RL alineados con los principios de la difusión. Este trabajo aporta a la comunidad un entendimiento más profundo sobre los modelos de difusión para generación de código y sienta bases sólidas para futuras investigaciones en tareas generativas y de razonamiento complejo.



