- 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
- 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
Opiniones en Hacker News