1 puntos por GN⁺ 2023-08-25 | 1 comentarios | Compartir por WhatsApp
  • Ante la creciente demanda de asistencia para programar, Meta presentó Code Llama, ampliando las opciones de generación, autocompletado y depuración de código basadas en modelos abiertos
  • Este modelo es una versión de Llama 2 entrenada adicionalmente con datos de código, y puede realizar tareas de código tanto con prompts de código como de lenguaje natural
  • Está disponible en tamaños de 7B, 13B, 34B y 70B; el modelo 70B se anunció posteriormente, el 29 de enero de 2024, como el más grande y de mejor rendimiento de la familia Code Llama
  • Se divide en modelo base, modelo especializado en Python y la variante Instruct para instrucciones en lenguaje natural, por lo que debe elegirse según latencia, rendimiento y caso de uso
  • Su uso para investigación y fines comerciales es gratuito, pero se deben respetar la licencia y la política de uso aceptable, además de realizar evaluaciones de seguridad de la generación de código

Qué tareas de código busca cubrir Code Llama

  • Code Llama es un modelo de lenguaje grande para programación capaz de generar código a partir de prompts de texto
  • Apunta a un rendimiento de vanguardia en tareas de código entre los LLM públicos, y tiene el potencial de hacer el flujo de trabajo de los desarrolladores más rápido y eficiente
  • Puede usarse como una herramienta de productividad y educación para reducir la barrera de entrada de quienes están aprendiendo a programar y para ayudar a los programadores a escribir software más robusto y mejor documentado
  • Meta publicó Code Llama bajo una licencia comunitaria como la de Llama 2

Entrenado adicionalmente sobre Llama 2 con datos de código

  • Code Llama es una versión especializada en código creada a partir de Llama 2 mediante entrenamiento adicional con un dataset específico de código
  • Puede recibir como entrada tanto código como prompts en lenguaje natural, y generar código y lenguaje natural relacionado con código
    • Prompt de ejemplo: “Escribe una función que imprima la secuencia de Fibonacci”
  • También puede usarse para autocompletar y depurar código
  • Entre los lenguajes compatibles están Python, C++, Java, PHP, Typescript(JavaScript), C#, Bash

Criterios de elección por tamaño y contexto

  • Code Llama está disponible con 7B, 13B, 34B y 70B parámetros
  • Los modelos de 7B, 13B y 34B fueron entrenados con 500B tokens de código y datos relacionados con código, y el modelo 70B con 1T tokens
  • Los modelos base e Instruct de 7B y 13B también fueron entrenados con la capacidad fill-in-the-middle(FIM) para insertar código en medio de código existente
    • Esto permite soportar directamente tareas como el autocompletado de código
  • El tamaño del modelo depende del esquema de despliegue y de los requisitos de latencia
    • El modelo 7B puede desplegarse en una sola GPU
    • Los modelos 34B y 70B ofrecen los mejores resultados y una mejor asistencia para programar
    • Los modelos 7B y 13B, al ser más rápidos, son más adecuados para tareas que requieren baja latencia, como el autocompletado de código en tiempo real
  • Los modelos Code Llama ofrecen generación estable con un contexto de hasta 100,000 tokens
    • Todos los modelos fueron entrenados con secuencias de 16,000 tokens
    • Mostraron mejoras con entradas de hasta 100,000 tokens

Tres variantes: base, Python e Instruct

  • La familia Code Llama se divide en tres variantes
    • Code Llama: modelo base de código
    • Code Llama - Python: modelo especializado en Python
    • Code Llama - Instruct: modelo afinado para comprender instrucciones en lenguaje natural
  • Code Llama - Python fue afinado adicionalmente con 100B tokens de código Python
    • Python es el lenguaje más evaluado en benchmarks de generación de código
    • Python y PyTorch cumplen un papel importante en la comunidad de IA
  • Code Llama - Instruct es una variante cuyo entrenamiento continuó usando entradas de instrucciones en lenguaje natural y salidas esperadas
    • Está diseñado para comprender mejor lo que las personas esperan de un prompt
    • Fue afinado para generar respuestas útiles y seguras en lenguaje natural
  • Para usar Code Llama en generación de código, se recomienda la variante Code Llama - Instruct
  • Code Llama y Code Llama - Python no fueron diseñados para seguir instrucciones en lenguaje natural, por lo que no se recomiendan para tareas generales de lenguaje natural
  • Code Llama está especializado en tareas de código y no es adecuado como modelo base para otras tareas

Lanzamiento adicional de Code Llama 70B

  • En una actualización del 29 de enero de 2024 se publicó Code Llama 70B
  • 70B es el modelo más grande y de mejor rendimiento de la familia Code Llama
  • Se ofrece en las mismas tres versiones que Code Llama, y todas son gratuitas para investigación y uso comercial
    • CodeLlama - 70B: modelo base de código
    • CodeLlama - 70B - Python: modelo 70B especializado en Python
    • Code Llama - 70B - Instruct 70B: modelo afinado para comprender instrucciones en lenguaje natural

Benchmarks y evaluación de seguridad

  • La evaluación de rendimiento se realizó con dos benchmarks de programación
    • HumanEval: evalúa la capacidad de autocompletar código a partir de docstrings
    • MBPP: evalúa la capacidad de escribir código a partir de descripciones
  • En los benchmarks, Code Llama mostró mejor rendimiento que los LLM abiertos especializados en código y que Llama 2
  • Code Llama 34B registró 53.7% en HumanEval y 56.2% en MBPP
    • Fue uno de los niveles más altos frente a soluciones abiertas públicas de vanguardia y quedó en un nivel similar al de ChatGPT
  • Antes de su publicación, Meta aplicó varias medidas de seguridad y cuantificó el riesgo de generación de código malicioso mediante red teaming
    • Se crearon prompts que solicitaban código malicioso con intención explícita
    • Las respuestas de Code Llama se puntuaron comparándolas con las de GPT-3.5 Turbo de ChatGPT
    • En los resultados, Code Llama ofreció respuestas más seguras
  • Los detalles del red teaming con especialistas en IA responsable, ingeniería de seguridad ofensiva, desarrollo de malware e ingeniería de software están incluidos en el artículo de investigación

Recursos publicados y uso responsable

  • La receta de entrenamiento de Code Llama está publicada en el repositorio de GitHub
  • También se ofrecen los pesos del modelo
  • El artículo de investigación incluye el desarrollo de Code Llama, la forma en que se hicieron las pruebas de benchmark, sus limitaciones, problemas conocidos, medidas de mitigación y temas a investigar en el futuro
  • También se actualizó la Responsible Use Guide
    • Definición de políticas de contenido y medidas de mitigación
    • Preparación de datos
    • Ajuste fino del modelo
    • Evaluación y mejora del rendimiento
    • Respuesta a riesgos a nivel de entrada y salida
    • Construcción de transparencia y mecanismos de reporte en la interacción con usuarios
  • Los desarrolladores deben evaluar el modelo con benchmarks especializados en código
  • Se recomienda investigar la seguridad en casos de uso específicos de código, como generación de malware, virus informáticos y código malicioso
  • También se recomienda usar datasets de seguridad para evaluación automática y humana, así como red teaming basado en prompts adversariales

Rol dentro del ecosistema de modelos abiertos para programación

  • Code Llama fue diseñado para apoyar a ingenieros de software en distintos ámbitos, como investigación, industria, proyectos open source, ONG y empresas
  • Aún quedan muchos casos de uso más allá de lo que pueden cubrir el modelo base y el modelo Instruct
  • Meta espera que Code Llama motive a otros a aprovechar Llama 2 para crear nuevas herramientas para investigación y productos comerciales
  • Materiales relacionados:

1 comentarios

 
GN⁺ 2023-08-25
Opiniones en Hacker News