Conozca CodeT5+: Salesforce Research Nuevos LLM de generación de código fuente abierto

El conjunto de modelos exhibió habilidades como el aprendizaje de tiro cero y el razonamiento matemático.

Jesus Rodriguez
Hacia la IA
Creado usando Midjourney

Hace poco inicié un boletín educativo centrado en la IA, que ya tiene más de 160 000 suscriptores. TheSequence es un boletín informativo orientado a ML sin BS (es decir, sin exageraciones, sin noticias, etc.) que tarda 5 minutos en leerse. El objetivo es mantenerlo actualizado con proyectos de aprendizaje automático, trabajos de investigación y conceptos. Pruébalo suscribiéndote a continuación:

Los modelos de lenguaje extenso (LLM) entrenados previamente en código fuente extenso, denominados «LLM de código», han revolucionado la inteligencia de código en los últimos años. Estas herramientas generativas impulsadas por IA han empoderado a los desarrolladores de software, permitiéndoles crear y mantener código con notable facilidad y mejorar significativamente su productividad. A pesar de estos logros, los LLM de código existentes enfrentan dos limitaciones críticas dentro de su diseño. En primer lugar, muchos modelos adoptan arquitecturas específicas que restringen su adaptabilidad a tareas posteriores. Por ejemplo, los modelos de solo decodificador, como los LLM basados ​​en GPT, tienen dificultades para comprender tareas como la detección de defectos y la recuperación de códigos. Abordar estos desafíos a menudo requiere modificaciones arquitectónicas sustanciales o ajustes adicionales para alinear los modelos con aplicaciones específicas. En segundo lugar, los modelos actuales se basan en un conjunto limitado de objetivos previos al entrenamiento que pueden no ser óptimos para ciertas tareas posteriores. Por ejemplo, los modelos basados ​​en T5 entrenados con un objetivo de eliminación de ruido de intervalo no son adecuados para tareas de generación autorregresiva como la finalización de código. Esta discrepancia entre los objetivos de preentrenamiento y de inferencia da como resultado una degradación significativa del rendimiento.

Para abordar estos desafíos, Salesforce Research presentó recientemente CodeT5+, una familia innovadora de LLM de código que mejora significativamente la flexibilidad en términos de arquitectura de modelo y objetivos de aprendizaje. Los modelos CodeT5+ se adaptan a la perfección tanto a la generación de código como a las tareas de comprensión, al mismo tiempo que superan o igualan el rendimiento de otros LLM.

La introducción de CodeT5+ se basa en una arquitectura versátil de codificador-decodificador en la que los módulos de componentes se pueden combinar para adaptarse a una amplia gama de tareas de código descendente. Esta flexibilidad es posible gracias a la combinación novedosa de objetivos de preentrenamiento, que reduce efectivamente la discrepancia entre el preentrenamiento y el ajuste fino.

Una de las ideas interesantes de los modelos CodeT5+ es cómo aprovechan los LLM congelados listos para usar, eliminando la necesidad de capacitación desde cero. Este enfoque permite a Salesforce Research escalar modelos de manera eficiente mientras explora técnicas de ajuste de instrucciones para alinear los modelos con instrucciones en lenguaje natural.

Como se mencionó anteriormente, CodeT5+ se basa en un modelo basado en codificador-decodificador altamente adaptable diseñado para atender a una amplia gama de aplicaciones posteriores dentro del dominio tecnológico de aprendizaje automático. CodeT5+ ofrece modos operativos flexibles, que incluyen solo codificador, solo decodificador y codificador-decodificador, lo que garantiza un rendimiento óptimo para diferentes tareas. Los aspectos clave de la arquitectura y el entrenamiento del modelo CodeT5+ incluyen:

· Codificación contextual: El módulo codificador codifica de manera eficiente representaciones contextuales a partir de secuencias de código/texto, acomodando secuencias completas, parciales o enmascaradas.

· Generación de Salida: El módulo decodificador está capacitado para generar varios tipos de salidas basadas en tareas de aprendizaje previas al entrenamiento. Esta flexibilidad permite que el modelo maneje diferentes escenarios de generación de código de manera efectiva.

· Mezcla de tareas de preentrenamiento: CodeT5+ aprovecha un conjunto diverso de tareas previas al entrenamiento, que incluyen eliminación de ruido, modelado de lenguaje causal (CLM), aprendizaje contrastivo de código de texto y tareas de coincidencia. Esta combinación permite que el modelo aprenda representaciones de contexto de código significativas, recupere información faltante en múltiples niveles (tramos de código, programas parciales y programas completos) y cierre la brecha entre las etapas de preentrenamiento y ajuste.

Crédito de la imagen: Investigación de Salesforce

Escalado de modelos: optimización del rendimiento y la eficiencia

Para escalar los modelos CodeT5+ de manera eficiente, Salesforce Research adopta una estrategia de capacitación eficiente en computación que utiliza LLM de código congelado, como CodeGen o cualquier otro LLM de estilo GPT. Esta estrategia emplea una arquitectura de «codificador superficial y decodificador profundo», en la que solo el codificador pequeño y las capas de atención cruzada permanecen entrenables mientras que el LLM del decodificador profundo está congelado. Esta decisión de diseño se basa en la idea de que el decodificador maneja una mayor complejidad en las tareas de generación y requiere una mayor cantidad de parámetros neuronales.

Preentrenamiento por etapas: aprovechamiento de diversas modalidades de datos

CodeT5+ aprovecha dos tipos principales de modalidades de datos para mejorar la capacitación LLM de código: datos de código unimodal y datos de texto de código bimodal. El proceso de preentrenamiento consta de dos etapas:

· Preentrenamiento de datos de código unimodal: En la primera etapa, el modelo se entrena previamente en cantidades masivas de datos de código unimodal provenientes de plataformas de código abierto como GitHub. Los datos de entrenamiento comprenden muestras de código con licencia permisiva en nueve lenguajes de programación, lo que proporciona un conjunto de datos de entrenamiento multilingüe completo.

· Preentrenamiento bimodal de datos de código-texto: La segunda etapa implica el entrenamiento previo del modelo en datos de texto de código bimodal a nivel de función. Cada muestra de datos contiene un par de código de texto que consta de una función de código y su cadena de documentación correspondiente que describe la semántica de la función. Este enfoque expone el modelo a diversos datos, lo que le permite aprender ricas representaciones contextuales de manera efectiva.

Crédito de la imagen: Investigación de Salesforce

Ajuste de instrucciones: mejora del rendimiento del modelo

Inspirándose en los avances recientes en el campo de la PNL, Salesforce Research incorpora técnicas de ajuste de instrucciones para mejorar aún más CodeT5+. Los modelos se ajustan utilizando tareas sintéticas de seguimiento de instrucciones. Los datos de instrucción son generados por LLM preentrenados, como text-davinci-003, que generan tareas novedosas con instrucciones de tareas, entradas (si corresponde) y salidas esperadas. Este proceso de refinamiento mejora la capacidad del modelo para comprender y seguir instrucciones con precisión.

Crédito de la imagen: Investigación de Salesforce

Tareas posteriores admitidas: versatilidad y rendimiento

CodeT5+ admite una amplia gama de tareas, gracias a sus modos operativos flexibles:

· Generación y resumen de código: Como modelo de codificador-decodificador, CodeT5+ sobresale en tareas de generación y resumen de código. Además, el modelo se puede adaptar como un modelo de generación de recuperación aumentada de extremo a extremo, elevando la calidad de los resultados generados.

· Generación Autoregresiva: Aprovechando su completo conjunto de tareas de aprendizaje, CodeT5+ puede funcionar como un modelo solo de decodificador, particularmente adecuado para tareas de generación autorregresiva como la finalización de código.

· Comprensión del código: CodeT5+ puede realizar varias tareas de comprensión de código, como tareas de detección y recuperación.

Salesforce Research realizó una evaluación exhaustiva de CodeT5+ en un conjunto diverso de más de 20 puntos de referencia que abarcan tareas de generación y comprensión de código. La evaluación reveló que los modelos CodeT5+ logran constantemente un rendimiento de vanguardia (SoTA) en varios dominios, incluida la generación y finalización de código, la programación matemática y las tareas de recuperación de texto a código.

Generación de código de disparo cero en HumanEval Benchmark

El punto de referencia HumanEval, reconocido por evaluar las capacidades de generación de código, presenta a los LLM el desafío de generar funciones de Python basadas en firmas de funciones y cadenas de documentos. En este contexto, el CodeT5+ 16B sintonizado con instrucciones demuestra un rendimiento notable, logrando nuevos resultados de SoTA con una tasa de aprobación del 35,0 % en la primera posición. Este logro supera a otros LLM de código abierto, incluido el modelo OpenAI code-cushman-001.

En las evaluaciones frente a otros LLM, incluidos LLaMA, StarCoder e incluso el modelo code-cushman-001 de OpenAI, CodeT5+ supera a la competencia y se establece como el líder entre los LLM de código abierto. En particular, CodeT5+ sobresale en puntos de referencia desafiantes como HumanEval, demostrando sus capacidades superiores y elevando el campo de la inteligencia de código a nuevas alturas.

Crédito de la imagen: Investigación de Salesforce

Adaptación para la resolución de problemas matemáticos

CodeT5+ muestra su versatilidad al demostrar su capacidad para resolver problemas matemáticos de la escuela primaria en puntos de referencia como MathQA y GSM8K. La tarea implica generar programas en Python que resuelvan problemas matemáticos descritos en descripciones en lenguaje natural. Bajo la configuración de evaluación de ajuste fino, CodeT5+ 770M logra nuevos resultados de SoTA con una tasa de aprobación del 87,4 % en la posición de los 80 primeros en MathQA-Python y del 73,8 % en la posición de los 100 primeros en GSM8K-Python.

Crédito de la imagen: Investigación de Salesforce

Generación de código aumentada por recuperación

CodeT5+ presenta una función cautivadora en la que, naturalmente, funciona como un sistema de generación de código aumentado de recuperación de extremo a extremo. Al utilizar el codificador para recuperar fragmentos de código relevantes, el modelo aprovecha estos fragmentos como entrada para el decodificador, mejorando significativamente el rendimiento de generación de código.

Crédito de la imagen: Investigación de Salesforce

CodeT5+ representa una iteración importante en los LLM de generación de código. el conjunto de modelos combina una arquitectura de modelo flexible con diversos objetivos de aprendizaje. Con la capacidad de operar como modelos de solo codificador, solo decodificador o codificador-decodificador, CodeT5+ se adapta sin esfuerzo a varias tareas posteriores que abarcan la comprensión y la generación de código.

Además, CodeT5+ aprovecha una estrategia de computación eficiente al sacar provecho de los LLM listos para usar, lo que permite una escalabilidad perfecta. El modelo se somete a un ajuste de instrucciones para alinearse con las instrucciones en lenguaje natural, lo que da como resultado un rendimiento mejorado y una alineación con las expectativas del usuario.


Comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *