Estás leyendo la publicación: La investigación más reciente de Google AI explica cómo combinaron Machine Learning ML y Semantic Engines SE para desarrollar una novedosa finalización de código de aprendizaje automático semántico híbrido basado en transformadores
Uno de los mayores obstáculos para la eficiencia de la ingeniería de software es la creciente complejidad del código. La finalización del código ha sido crucial en los entornos de desarrollo integrado para reducir esta complejidad. Tradicionalmente, los motores semánticos basados en reglas que pueden acceder a todo el repositorio y comprender su estructura semántica se utilizan para crear sugerencias de finalización de código. Según un estudio reciente, los modelos de lenguaje grandes como Codex y PaLM permiten sugerencias de código más largas y sofisticadas. Esto es lo que ha provocado que recientemente surjan otras tecnologías útiles como Copilot. Más allá de la productividad percibida y las sugerencias aceptadas, no está claro cómo la finalización del código habilitada por el aprendizaje automático afecta la productividad del desarrollador. Los investigadores de Google AI crearon un revolucionario modelo de finalización de código semántico híbrido basado en Transformer que ahora está disponible para los ingenieros internos de Google al combinar ML con SE. El método de los investigadores para integrar ML con SE se define como volver a clasificar las propuestas de token único de SE con ML, aplicar completaciones de una sola línea y de varias líneas con ML y luego validar los resultados con SE.
Además, sugirieron emplear ML de sugerencias semánticas de un solo token para la continuación de una sola línea y de varias líneas. Durante tres meses, más de 10.000 empleados de Google probaron el modelo en ocho lenguajes de programación. Cuando se expuso a la finalización de ML de una sola línea, los resultados indicaron una reducción del 6 por ciento en el tiempo de iteración de codificación y una reducción del 7 por ciento en los cambios de contexto. Estos resultados concluyen consistentemente que una combinación de ML y SE puede mejorar la productividad de un desarrollador. Para la comprensión del lenguaje, los modelos basados en transformadores emplean un mecanismo de autoatención. Entrenar estos modelos de transformadores para permitir la comprensión del código y las predicciones de finalización es una estrategia popular para la finalización del código. El código se representa mediante tokens de subpalabras y un vocabulario de SentencePiece, tal como lo sería un idioma. Luego, en las TPU, se realizan modelos de transformador codificador-decodificador para generar pronósticos de finalización. El código alrededor del cursor sirve como entrada, mientras que una lista de ideas para terminar la línea actual o varias sirve como salida.
El requisito de modelos especializados se eliminó cuando los investigadores entrenaron un solo modelo en ocho idiomas y observaron un rendimiento mejorado o comparable en todos los idiomas. Se encontró que el modelo se beneficia mucho de la alta calidad del monorepo, que se mantiene a través de reglas y evaluaciones. El modelo de una sola línea se aplica iterativamente a propuestas de varias líneas con umbrales aprendidos para determinar cuándo comenzar a predecir las terminaciones para la siguiente línea. Se puede utilizar un porcentaje de aceptación del usuario del 25% al 34% entre los más de 10 000 desarrolladores internos de Google que utilizan la configuración completa en su IDE para evaluar la confiabilidad del modelo. El equipo confía en que su modelo de finalización de código basado en transformadores completa más del 3 % del código y acorta los tiempos de iteración de Googlers en un 6 %. La magnitud del cambio es consistente con los impactos que se muestran para las características de transformación, que a menudo solo afectan a una pequeña subpoblación. Por el contrario, ML puede generalizarse en la mayoría de los principales lenguajes de programación e ingenieros. Como siguiente paso, la IA de Google quiere utilizar aún más los SE al proporcionar datos adicionales a los modelos ML en el momento de la inferencia. Ir y venir entre el ML y el SE, donde el SE verifica iterativamente la corrección y ofrece al modelo ML todas las posibles continuaciones, es una estrategia que están investigando para los pronósticos extendidos. Además de garantizar resultados “inteligentes”, los investigadores también esperan aumentar la eficiencia al introducir nuevas funciones basadas en ML.
Este artículo está escrito como un artículo de resumen de investigación por el personal de Marktechpost basado en el artículo de investigación ‘La finalización de código mejorada con ML mejora la productividad de los desarrolladores‘. Todo el crédito de esta investigación es para los investigadores de este proyecto.
Por favor no olvides unirte Nuestro subreddit de ML
Echa un vistazo a https://aitoolsclub.com para encontrar 100 de Cool AI Tools