StarCoder: ¡Únete a la resistencia!
StarCoder, presentado en 2023, abrió nuevas posibilidades para programar con modelos de lenguaje. Repasamos sus resultados, licencia y limitaciones.

Un modelo de lenguaje para programar, con pesos abiertos y una licencia de uso responsable

StarCoder
StarCoder es un modelo de lenguaje de gran tamaño (LLM) desarrollado por la comunidad BigCode, lanzado en mayo de 2023. Está diseñado para trabajar con código y ofrece una opción de pesos abiertos frente a servicios como GitHub Copilot, o el mismísimo ChatGPT.
El objetivo es mejorar la eficiencia y la productividad de los desarrolladores al generar automáticamente código y corregir errores de sintaxis, entre otras tareas. Pero antes de seguir, veamos quiénes son los responsables que hay detrás de este nuevo modelo, qué significa Code LLM y qué nos aporta StarCoder.
BigCode: democratizando el acceso a herramientas de programación avanzadas.
BigCode es una colaboración científica abierta que desarrolla modelos de lenguaje para código. Busca hacer la programación más accesible y eficiente. Está liderada conjuntamente por HuggingFace y ServiceNow, con participación de la comunidad investigadora.
StarCoder es fruto de esta colaboración. Otro fruto es The Stack, un gran conjunto de datos de código con licencias permisivas. BigCode también investiga cómo desarrollar estos modelos de forma responsable y reducir los riesgos de su uso.

Características de “The Stack”
Code LLM: Tecnología de IA para la generación de código de programación
Los modelos de lenguaje de gran tamaño (LLM) aprenden patrones a partir de grandes volúmenes de texto y pueden generar nuevas secuencias coherentes con el contexto. Cuando se entrenan específicamente con código, hablamos de modelos de lenguaje para código o Code LLMs. Su capacidad para producir una respuesta plausible no garantiza que sea correcta.
Los modelos para código utilizan procedimientos de entrenamiento similares a otros LLM, pero incorporan grandes cantidades de programas, documentación y otros textos relacionados. Así aprenden patrones de sintaxis y estructura en distintos lenguajes de programación.
Como resultado, son capaces de entender el lenguaje de programación y aprender a escribir código a partir de los patrones y la estructura del código en el entrenamiento
Esta capacidad de generar código puede resultar útil para completar fragmentos, proponer correcciones de sintaxis y sugerir soluciones en un entorno de desarrollo. Al reducir parte del trabajo repetitivo, permite dedicar más tiempo a tareas complejas y creativas. El código generado sigue necesitando revisión y pruebas.
StarCoder: la promesa open source de los Code LLM
BigCode presentó dos modelos relacionados: StarCoderBase y StarCoder. Ambos pueden completar código y admiten inferencia por lotes; StarCoder añade entrenamiento específico en Python.
¿Cómo se entrenaron? StarCoderBase aprendió a partir de un billón de tokens, es decir, un millón de millones, procedentes de una selección de The Stack. Después se continuó el entrenamiento con 35.000 millones de tokens de Python para obtener StarCoder. Este ajuste buscaba mejorar su rendimiento en ese lenguaje.

Interfaz en Chat Conversacional de StarCoder
Las evaluaciones de lanzamiento de 2023 situaban a StarCoder entre los modelos abiertos destacados para código. Los resultados correspondían a pruebas concretas y no demostraban superioridad general sobre todos los servicios cerrados, como OpenAI GPT3.5 , o GitHub Copilot.
El equipo adoptó medidas para reducir riesgos de privacidad y mejorar la trazabilidad de los datos. Eso no elimina la posibilidad de generar contenido incorrecto, inseguro u ofensivo.
BigCode publicó los pesos bajo la licencia BigCode OpenRAIL-M, que permite usos comerciales sujetos a sus condiciones y restricciones.
La licencia de StarCoder permite a desarrolladores y empresas utilizar estos modelos en sus propias herramientas y aplicaciones, abriendo un mundo de posibilidades para la generación de código asistida por IA, una potencial “explosión cámbrica” de aplicaciones basadas en LLMs similar a la producida con Stable Diffusion hace unos meses.
Para más detalles sobre cómo se entrenó y afinó StarCoder, así como para una discusión en profundidad de sus resultados de rendimiento, se puede consultar el paper “StarCoder: ¡que la fuente esté contigo!”.
¿Puede StarCoder y su alianza abierta desafiar al Imperio de los modelos cerrados?
En las evaluaciones de lanzamiento de StarCoder se compararon modelos mediante dos bancos de pruebas de programación: HumanEval y MBPP.
HumanEval contiene problemas de programación escritos por personas, pero evalúa el código generado mediante pruebas automatizadas. Se comprueba si las funciones producen los resultados esperados; no se trata de un jurado humano que puntúe la legibilidad de cada respuesta.
MBPP significa Mostly Basic Programming Problems. Reúne tareas de programación en Python descritas en lenguaje natural, junto con pruebas que permiten comprobar las soluciones. No es una comparación de preferencias entre pares de modelos.

Ranking de LLMs
En la tabla, StarCoder obtiene 33,6 en HumanEval y 52,7 en MBPP, mientras que StarCoder-Prompted alcanza 40,8 y 49,5, respectivamente. El cambio de prompt mejora una evaluación y empeora la otra, así que conviene comparar cada tarea por separado.
La tabla también incluye CodeGen, CodeGeeX, LLaMA, PaLM, LaMDA y una versión de Codex. Sus posiciones cambian según la prueba: CodeGen-16B-Multi y CodeGeeX no ocupan el tercer y cuarto puesto. Comparar modelos exige mirar la tarea, la versión y las condiciones de evaluación, además de la puntuación.
StarCoder-Prompted no es un modelo distinto, sino StarCoder con una instrucción de entrada adaptada a la tarea. En esta tabla mejora HumanEval de 33,6 a 40,8, pero reduce MBPP de 52,7 a 49,5. El ejemplo muestra cuánto puede influir el prompt y por qué no conviene hablar de un ganador universal.
Entonces, ¿puede StarCoder desafiar la hegemonía de OpenAI y sus mejores modelos de lenguaje? En el contexto de 2023, la respuesta era NO, PERO los resultados mostraban avances: en varias pruebas, StarCoder superaba a code-cushman-001, una versión antigua de Codex, el modelo de generación de código de OpenAI evaluado entonces.

Únete a la alianza rebelde de los LLMs con StarCoder
Más Allá de la Programación: Lenguaje Natural
Aunque StarCoder se diseñó principalmente para código, el trabajo también exploró tareas de lenguaje natural, como razonamiento y comprensión de textos. Es una línea interesante: entrenar con código puede aportar capacidades útiles más allá de programar, aunque no convierte automáticamente al modelo en el mejor para cualquier tarea.
En razonamiento se compararon enfoques como PAL (Program-aided Language Models), que combina generación de programas con ejecución, y CoT (Chain-of-Thought), basado en pasos intermedios. También se estudiaron tareas de conocimiento y comprensión con MMLU (Massive Multitask Language Understanding) y CoQA (Conversational Question Answering).
Los resultados de estas evaluaciones muestran que StarCoder es capaz de desempeñarse eficazmente en estas tareas de lenguaje natural, aunque su rendimiento puede ser ligeramente inferior al de otros modelos específicos más grandes.
StarCoder ha demostrado su versatilidad más allá de la generación de código, tiene un buen desempeño como modelo de lenguaje para tareas generalistas
Ética y Seguridad: Un Compromiso Firme
El equipo de BigCode documentó medidas como el filtrado de información personal, la posibilidad de retirar código del conjunto de datos y las herramientas de atribución. Son pasos hacia un desarrollo responsable, no una certificación de que el modelo sea seguro o esté libre de sesgos. Los LLM pueden generar información falsa, reproducir prejuicios o proponer código vulnerable; por eso es importante estudiar sus límites y revisar sus resultados.
Aplicaciones Prácticas: Mejorando la Vida de Desarrolladores y usuarios
StarCoder no es solo una herramienta teórica de inteligencia artificial, sino una aplicación práctica que puede tener un impacto significativo en la vida cotidiana de los desarrolladores de software. Su capacidad para entender, generar y corregir código puede simplificar y automatizar una serie de tareas, mejorando la eficiencia y la productividad. Entre ellas:
- Automatización de la escritura de código. Por ejemplo, un desarrollador puede proporcionar una descripción de alto nivel de la funcionalidad que desea, y StarCoder puede generar automáticamente código útil para implementar esa funcionalidad. Esto puede ahorrar mucho tiempo y esfuerzo, especialmente en tareas repetitivas o estándar, así como evitar el “síndrome de la hoja en blanco”.
- Corrección de errores y QA. Para identificar y corregir errores de sintaxis y semánticos en el código. Una de las tareas más importantes, pero en ocasiones tediosas e ingratas, es la corrección y QA de código, con StarCoder esto se vuelve mucho más dinámico, ayudando a analizar el código existente, sugiriendo correcciones y mejoras, y ayudando a los desarrolladores a evitar errores comunes y mejorar la calidad de su código.
- Facilitar el aprendizaje de nuevos lenguajes de programación. Para los desarrolladores que están aprendiendo un nuevo lenguaje de programación, StarCoder puede ser una herramienta de aprendizaje muy útil. Al proporcionar ejemplos de cómo se ve el código en ese lenguaje, puede ayudar a los desarrolladores a familiarizarse más rápidamente con la sintaxis y las convenciones del nuevo lenguaje.
- Refactoring y mejora del código existente. Al analizar el código y sugerir mejoras, ayuda a mantener el código limpio, eficiente y fácil de entender, incluso nos puede generar documentación y comentarios para el código.
En resumen, StarCoder tiene el potencial de ser una herramienta valiosa para los desarrolladores, automatizando y simplificando una serie de tareas y ayudando a mejorar la eficiencia y la calidad del código.

Ejemplo de cómo integrar “StarCoder” en tus aplicaciones a través de HF Transformers
Fortalezas y desafíos de StarCoder
Puntos fuertes
- Es un modelo de lenguaje para código con pesos disponibles, entrenado con más de 80 lenguajes de programación.
- Es capaz de procesar entradas con una longitud de contexto de más de 8.000 tokens (el número de palabras depende del idioma y del contenido; puede variar y ser menos en español). Esta ventana permite trabajar con fragmentos extensos, pero no determina por sí sola la capacidad del modelo.
- Los pesos y el código de entrenamiento están disponibles bajo sus respectivas licencias, lo que permite estudiar y adaptar el modelo.
- El proyecto incorpora medidas de desarrollo responsable, aunque siguen existiendo riesgos de privacidad, sesgo y generación de contenido inadecuado.
- Los investigadores detrás de StarCoder también han proporcionado herramientas de atribución para ayudar a los usuarios a identificar el código generado por el modelo y asegurarse de cumplir con los requisitos de licencia correspondientes.
Desafíos
- Al igual que con cualquier modelo de lenguaje natural, StarCoder puede generar resultados inexactos o no confiables, especialmente si se utiliza en áreas donde la programación es muy especializada o técnica.
- StarCoder puede generar contenido ofensivo, discriminatorio o engañoso. Se han tomado medidas para evitar esto, pero siempre existe el riesgo de que el modelo pueda producir resultados no éticos.
- Aunque los pesos de StarCoder están disponibles, su licencia impone restricciones de uso que deben revisarse antes de integrarlo en una aplicación.
- La tecnología detrás de StarCoder aún se encuentra en una fase temprana de desarrollo, lo que significa que aún hay muchos desafíos técnicos que deben abordarse antes de que se convierta en una herramienta ampliamente utilizada.
- Los resultados de las pruebas en inglés no garantizan el mismo rendimiento en otros idiomas. Nuestra impresión inicial en español fue positiva, pero no sustituye una evaluación sistemática.
Conclusión
La inteligencia artificial y el aprendizaje automático continúan transformando el desarrollo de software. StarCoder, presentado por BigCode en 2023, fue un paso relevante para ampliar el acceso a modelos capaces de trabajar con código.
Como un modelo de lenguaje de programación a gran escala (LLM), StarCoder abre un mundo de posibilidades. Su capacidad para generar código automáticamente, corregir errores y facilitar el aprendizaje de nuevos lenguajes, puede mejorar mucho la productividad y eficiencia.
Sin embargo, como cualquier tecnología emergente, StarCoder no está exento de desafíos. La generación de contenido inexacto, ofensivo o discriminatorio es un riesgo inherente en cualquier modelo de lenguaje, y aunque se han tomado medidas para mitigar estos riesgos, es crucial seguir trabajando en la mejora continua de estos aspectos.
StarCoder ilustró en 2023 el potencial de los modelos con pesos disponibles para la programación asistida por IA. Su comunidad, documentación y herramientas permiten estudiar y adaptar el sistema. El reto sigue siendo mejorar su utilidad, evaluar sus limitaciones y revisar el código que genera.
¿Qué esperas para probarlo?
Artículo escrito por Jesús Sánchez y Miguel Guerrero.

Las armas no ganan batallas. Tu mente y un buen LLM, poderosa combinación es.
Anexo
Resumen de las características de StarCoder:
- LLM de 15.500 millones de parámetros, con preentrenamiento de un billón de tokens
- Ventana de contexto de 8.192 tokens
- Licencia BigCode OpenRAIL-M: uso comercial sujeto a condiciones
- Asistencia para programación y algunas tareas generales
- Conoce más de 80 lenguajes de programación
- De código y datos abiertos
- Tiene Plugin en VSCode
Links para saber más:
- Proyecto https://hf.co/bigcode
- Blog https://huggingface.co/blog/starcoder
- Genera código https://huggingface.co/spaces/bigcode/bigcode-editor
- Juega con StarCoder: https://huggingface.co/spaces/bigcode/bigcode-playground
- Prueba el razonamiento: https://huggingface.co/spaces/bigcode/Reasoning-with-StarCoder
- Explora el conjunto de datos: https://huggingface.co/spaces/bigcode/search
Magnitudes básicas para desarrollar LLMs:

Magnitudes a tener en cuenta cuando desarrollas LLMs
Una historia de la comunidad Saturdays.AI. Publicada originalmente el 19 may 2023.
← Más historias de la comunidad


