StarCoder Un LLM de última generación para el código

StarCoder, un LLM de última generación para el código.

Presentando StarCoder

StarCoder y StarCoderBase son Grandes Modelos de Lenguaje para Código (Code LLMs) entrenados con datos con licencia permisiva de GitHub, incluyendo más de 80 lenguajes de programación, commits de Git, issues de GitHub y notebooks de Jupyter. Similar a LLaMA, entrenamos un modelo de ~15 mil millones de parámetros para 1 billón de tokens. Ajustamos finamente el modelo StarCoderBase para 35 mil millones de tokens de Python, resultando en un nuevo modelo que llamamos StarCoder.

Descubrimos que StarCoderBase supera a los modelos abiertos existentes de Code LLMs en benchmarks populares de programación y se iguala o supera a modelos cerrados como code-cushman-001 de OpenAI (el modelo original Codex que impulsó las primeras versiones de GitHub Copilot). Con una longitud de contexto de más de 8,000 tokens, los modelos de StarCoder pueden procesar más entrada que cualquier otro LLM abierto, lo que permite una amplia gama de aplicaciones interesantes. Por ejemplo, al proporcionarles una serie de diálogos, les permitimos actuar como asistentes técnicos. Además, los modelos pueden usarse para autocompletar código, realizar modificaciones en el código a través de instrucciones y explicar un fragmento de código en lenguaje natural. Tomamos varios pasos importantes hacia un lanzamiento seguro del modelo abierto, incluyendo una mejor tubería de redacción de PII, una herramienta de rastreo de atribución novedosa y hacemos que StarCoder esté disponible públicamente bajo una versión mejorada de la licencia OpenRAIL. La licencia actualizada simplifica el proceso para que las empresas integren el modelo en sus productos. Creemos que con su alto rendimiento, los modelos de StarCoder servirán como una base sólida para que la comunidad lo utilice y lo adapte a sus casos de uso y productos.

Evaluación

Evaluamos exhaustivamente StarCoder y varios modelos similares y una variedad de benchmarks. Un benchmark popular de Python es HumanEval, que prueba si el modelo puede completar funciones basadas en su firma y docstring. Descubrimos que tanto StarCoder como StarCoderBase superan a los modelos más grandes, incluyendo PaLM, LaMDA y LLaMA, a pesar de ser significativamente más pequeños. También superan a CodeGen-16B-Mono y al modelo code-cushman-001 (12B) de OpenAI. También observamos que un caso de fallo del modelo era que produciría código # Solución aquí, probablemente porque ese tipo de código suele ser parte de un ejercicio. Para forzar al modelo a generar una solución real, agregamos el prompt <nombre_de_archivo>soluciones/solucion_1.py\n# Aquí está la implementación correcta del ejercicio de código. Esto aumentó significativamente la puntuación de HumanEval de StarCoder del 34% a más del 40%, estableciendo un nuevo resultado de vanguardia para los modelos abiertos. También probamos este prompt para CodeGen y StarCoderBase, pero no observamos mucha diferencia.

Un aspecto interesante de StarCoder es que es multilingüe, por lo que lo evaluamos en MultiPL-E, que amplía HumanEval a muchos otros lenguajes. Observamos que StarCoder se iguala o supera a code-cushman-001 en muchos lenguajes. En un benchmark de ciencia de datos llamado DS-1000, claramente lo supera, así como a todos los demás modelos de acceso abierto. ¡Pero veamos qué más puede hacer el modelo además de completar código!

Asistente Técnico

Con las evaluaciones exhaustivas, descubrimos que StarCoder es muy capaz de escribir código. Pero también queríamos probar si se puede utilizar como un asistente técnico, después de todo, fue entrenado con mucha documentación y problemas de GitHub. Inspirados en el prompt HHH de Anthropic, creamos un Prompt de Asistente Técnico. Sorprendentemente, solo con el prompt el modelo es capaz de actuar como un asistente técnico y responder a solicitudes relacionadas con la programación.

Datos de entrenamiento

El modelo fue entrenado en un subconjunto de The Stack 1.2. El conjunto de datos consiste únicamente en código con licencia permisiva e incluye un proceso de exclusión voluntaria para que los contribuyentes de código puedan eliminar sus datos del conjunto de datos (consultar ¿Estoy en The Stack?). En colaboración con Toloka, eliminamos la Información de Identificación Personal de los datos de entrenamiento, como nombres, contraseñas y direcciones de correo electrónico.

Sobre BigCode

BigCode es una colaboración científica abierta liderada conjuntamente por Hugging Face y ServiceNow que trabaja en el desarrollo responsable de modelos de lenguaje grandes para código.

Lanzamientos adicionales

Junto con el modelo, estamos lanzando una lista de recursos y demos:

  • los pesos del modelo, incluidos puntos de control intermedios con licencia OpenRAIL
  • todo el código para el preprocesamiento y entrenamiento de datos con licencia Apache 2.0
  • un conjunto completo de evaluación para modelos de código
  • un nuevo conjunto de datos de PII para entrenamiento y evaluación de eliminación de PII
  • el conjunto de datos completamente preprocesado utilizado para el entrenamiento
  • una herramienta de atribución de código para encontrar código generado en el conjunto de datos

Modelos

  • Paper : Un informe técnico sobre StarCoder.
  • GitHub : Todo lo que necesitas saber sobre cómo usar o ajustar StarCoder.
  • StarCoder : StarCoderBase adicionalmente entrenado en Python.
  • StarCoderBase : Entrenado en más de 80 lenguajes de The Stack.
  • StarEncoder : Modelo de codificador entrenado en TheStack.
  • StarPii : Detector de información de identificación personal (PII) basado en StarEncoder.

Herramientas y Demostraciones

  • StarCoder Chat : ¡Chatea con StarCoder!
  • Extensión de VSCode : ¡Programa con StarCoder!
  • StarCoder Playground : ¡Escribe con StarCoder!
  • Editor de StarCoder : ¡Edita con StarCoder!

Datos y Gobierno

  • StarCoderData : Conjunto de datos de preentrenamiento de StarCoder.
  • Prompt de Asistente Técnico : Con este prompt puedes convertir a StarCoder en un asistente técnico.
  • Tarjeta de Gobierno : Una tarjeta que describe el gobierno del modelo.
  • Acuerdo de Licencia de StarCoder : El modelo está licenciado bajo el acuerdo de licencia BigCode OpenRAIL-M v1.
  • Búsqueda de StarCoder : Búsqueda de texto completo de código en el conjunto de datos de preentrenamiento.
  • Prueba de Membresía de StarCoder : Prueba ultrarrápida si el código estaba presente en el conjunto de datos de preentrenamiento.

¡Puedes encontrar todos los recursos y enlaces en huggingface.co/bigcode!

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Ciencia de Datos

El Desafío de Ver la Imagen Completa de la Inteligencia Artificial

Cada vez es más difícil tener conversaciones reflexivas sobre el cambiante (y rápidamente creciente) impacto de la IA...

Inteligencia Artificial

A pesar de los temores de trampas, las escuelas revocan las prohibiciones de ChatGPT

Algunos distritos que antes se apresuraban a bloquear los chatbots de inteligencia artificial ahora están tratando de...

Inteligencia Artificial

Los fabricantes de chips apilan 'chiplets' como bloques de Lego para impulsar la IA

Los fabricantes de chips están apilando chips preexistentes para acelerar el desarrollo de chips más potentes.

Noticias de Inteligencia Artificial

Fármaco diseñado por inteligencia artificial listo para ensayos en humanos.

Una empresa biotecnológica, Insilico Medicine, respaldada por el conglomerado chino Fosun Group y el gigante de capit...

Inteligencia Artificial

Investigadores de Salesforce presentan XGen-Image-1 un modelo de difusión latente de texto a imagen entrenado para reutilizar varios componentes preentrenados.

La generación de imágenes ha surgido como un campo pionero dentro de la Inteligencia Artificial (IA), ofreciendo opor...

Inteligencia Artificial

Hoja de ruta de Aprendizaje Automático Recomendaciones de la Comunidad 2023

En el último artículo, Parte 1 de este mapa de ruta, discutimos brevemente las herramientas iniciales y las direccion...