Interno de Databricks Enseña a la IA a Mejorar la Reparación Rápida de Código

Databricks

Así como los humanos perfeccionan sus habilidades a través de la práctica iterativa y el aprendizaje de los errores, los modelos de inteligencia artificial están siendo entrenados para perfeccionar su arte en dominios complejos como la reparación de código. Este ciclo fundamental de retroalimentación fue el corazón de un reciente proyecto de pasantía de verano en Databricks, cuyo objetivo era elevar las capacidades de su Asistente de Código. La iniciativa se centró en enseñar a un “modelo de recompensa” especializado a discernir y priorizar las correcciones de código óptimas, un paso crucial en la construcción de una herramienta de desarrollador sofisticada.

La innovación central es la función “Quick Fix” de Databricks, perfectamente integrada en sus Notebooks y editores SQL. Diseñada para resoluciones rápidas y de alta confianza, Quick Fix aborda problemas comunes como errores de sintaxis, nombres de columnas mal escritos y problemas sencillos en tiempo de ejecución. Cuando un desarrollador encuentra un error, Quick Fix entra en acción, analizando el código problemático y su mensaje de error asociado. Luego, aprovecha un modelo de lenguaje grande (LLM) para generar rápidamente una solución específica, generalmente en uno a tres segundos.

Aunque Quick Fix ya proporcionaba una asistencia valiosa, el desafío residía en mejorar su precisión. Incluso después de generar una corrección y pasar las verificaciones básicas de sintaxis, ¿cómo podía el sistema garantizar que era la solución más relevante y precisa para el usuario? La respuesta surgió a través de una técnica conocida como “muestreo best-of-k”. Este enfoque implica generar múltiples sugerencias de corrección potenciales y luego emplear un sofisticado modelo de recompensa para evaluar y seleccionar la mejor opción individual.

El proyecto abarcó tanto la ingeniería de backend como la investigación experimental. La fase inicial se centró en expandir el sistema Quick Fix para generar una amplia gama de sugerencias en paralelo. Esto implicó experimentar con varias indicaciones e información contextual, incluyendo técnicas como el razonamiento “cadena de pensamiento”, el razonamiento de salida predicha y variaciones en las indicaciones del sistema, junto con un contexto de base de datos selectivo. Si bien estos métodos aumentaron la calidad y variedad de las sugerencias, también introdujeron un cierto grado de retraso en el procesamiento, destacando una compensación crítica entre la calidad de la salida y la velocidad operativa.

Una vez generadas múltiples sugerencias, el siguiente paso fue identificar la más prometedora para presentar al usuario. Un intento inicial involucró un simple sistema de votación por mayoría, que, a pesar de funcionar bien en pruebas aisladas, no produjo mejoras significativas en las pruebas A/B de usuarios en el mundo real y, por lo tanto, no se implementó. La solución más efectiva implicó desarrollar y entrenar modelos de recompensa dedicados. Estos modelos fueron diseñados para predecir qué correcciones propuestas aceptarían y ejecutarían con éxito los usuarios. Curiosamente, el proceso de desarrollo utilizó tanto métodos tradicionales de aprendizaje automático, como la regresión logística y los árboles de decisión potenciados por gradiente (específicamente utilizando el paquete LightGBM), junto con modelos de lenguaje grandes más contemporáneos y ajustados.

Un hallazgo notable surgió de la evaluación: para la tarea específica de predecir la aceptación del usuario y el éxito de la ejecución, los modelos clásicos de aprendizaje automático tuvieron un rendimiento comparable al de los LLM ajustados, que requieren más recursos, en evaluaciones fuera de línea. El modelo de árbol de decisión, en particular, demostró ser muy eficaz. Su éxito se atribuyó al hecho de que, para los tipos de errores que Quick Fix aborda, las ediciones de código que parecen correctas a menudo lo son. Las características clave que informaron sus decisiones incluyeron la similitud entre la línea de código original y la corrección generada, así como el tipo de error específico encontrado.

Dada su rendimiento comparable y, lo que es crucial, su tiempo de inferencia significativamente más rápido, el modelo de árbol de decisión LightGBM fue finalmente elegido para su implementación en producción. La velocidad es primordial para Quick Fix; las sugerencias deben aparecer casi instantáneamente, antes de que un desarrollador pueda intervenir manualmente, ya que cualquier retraso reduce el número de errores que pueden resolverse rápidamente. El tamaño compacto del modelo LightGBM también lo hizo notablemente eficiente en recursos y más fácil de integrar en la infraestructura existente. Mediante una combinación de optimizaciones de modelos e infraestructura, el tiempo promedio de inferencia se redujo drásticamente en casi cien veces. Esta implementación del enfoque best-of-k, junto con el modelo de recompensa, llevó a un aumento medible en la tasa de aceptación interna de Databricks, lo que se tradujo directamente en una mayor calidad y una experiencia más fluida para los usuarios, todo ello manteniendo la latencia del sistema dentro de límites aceptables.