Generación de código

StarCoder: qué es, cómo funciona y ventajas para los programadores

  • Home
  • Inteligencia Artificial

Un nuevo gran modelo de lenguaje nació de la colaboración entre ServiceNow y Hugging Face. Tiene 15.000 millones de parámetros y es compatible con docenas de lenguajes de programación, el principal de ellos Python.

Publicado el 15 Nov 2023

StarCoder.

Lanzado en mayo de 2023, StarCoder es un sistema gratuito de generación de código de IA y se propone como alternativa a los más conocidos Copilot de GitHub, CodeWhisperer de Amazon o AlphaCode de DeepMind.

Este nuevo modelo dice mucho de hasta qué punto el campo del apoyo a los programadores está bajo la lupa de quienes desarrollan las Inteligencias Artificiales (IA) y, más en general, de cómo los Grandes Modelos de Lenguaje (LLM) se están convirtiendo cada vez más en herramientas al servicio de las propias IA.

StarCoder forma parte de BigCode, un proyecto que pretende crear una comunidad centrada en las herramientas de generación de código de IA y en el que participan más de 600 socios de laboratorios académicos e industriales. Estamos ante un gran cambio, el de los autocodificadores abiertos, cuyos efectos son aún inimaginables.

Introducción a StarCoder, el nuevo LLM

StarCoder se sitúa en la esfera de BigCode, un proyecto de colaboración entre ServiceNow y Hugging Face, una startup con sede en Nueva York que está cambiando el desarrollo y el uso de los modelos lingüísticos, haciéndolos menos complejos de desplegar y menos costosos, participando activamente en su democratización. De hecho, StarCoder es de código abierto y puede adquirirse acá.

La naturaleza abierta también responde a las necesidades de cumplir con los requisitos de responsabilidad: el código de licencia abierta es un activo en el que todos pueden participar.

Formado mediante código fuente libre, el modelo StarCoder cuenta con 15.500 millones de parámetros y es compatible con más de 80 lenguajes de programación, lo que se presta a ser un asistente de codificación cruzada, aunque Python es el lenguaje que más se beneficia.

Es un modelo de lenguaje refinado capaz de una codificación autorizada. Un valioso (y cada vez más esencial) apoyo para los programadores.

codificador estrella

Cómo funciona StarCoder

Hace uso de la técnica Multy-query Attention (MQA) con la que ya cuenta GPT-4. Multy-query Attention -en su explicación más simplificada- consiste en múltiples niveles de atención que actúan en paralelo con diferentes transformaciones lineales sobre las consultas, los valores, las claves y la salida. 

El punto crucial es que permite a StarCoder comprender código que ya ha sido escrito y devolver sugerencias oportunas y precisas precisamente porque se examinan múltiples consultas simultáneamente.

Gracias a esta técnica, StarCoder recoge y compila una gran cantidad de datos de múltiples lenguajes de programación y de repositorios de GitHub. Un enorme y diverso conjunto de datos que aumenta la eficacia con la que realiza sus tareas.

Multy-query Attention tiene otro mérito: demuestra que los LLM no son tan complicados como parecen a primera vista. Aprovechan el aprendizaje profundo para analizar los datos y comprender la gramática, la sintaxis y -en distinta medida que un humano- el contexto.

En este sentido, StarCoder es uno de los muchos LLM que contribuyen a cambiar el enfoque de los procesos.

Aplicaciones de StarCoder

Los usos más inmediatos conducen a la finalización, la verificación y la generación de código. En el primer caso, puede examinar porciones de código para completarlo -incluso detectar partes que faltan-, y proporcionar así una valiosa ayuda a quienes están desarrollando.

Discusión ligeramente distinta es la de la generación de código mediante indicaciones en lenguaje natural, algo que el propio StarCoder es incapaz de hacer, salvo mediante el uso de herramientas especiales. Herramientas que, además, también permiten encontrar fallos en el código que se identifican al ejecutarlo.

Las ventajas de utilizar StarCoder

Hablando de ventajas, las más inmediatas van más allá de la generación automática de código, de las sugerencias y de las capacidades de comprobación y verificación. Son ventajas, desde luego, pero superficiales. Las hay menos evidentes:

Aprendizaje

Una ventaja no solo para los principiantes. La capacidad de StarCoder de proporcionar ejemplos de código ayuda a comprender cómo superar los problemas o cómo escribir mejor las partes complejas y poco intuitivas

Formación

StarCoder es un modelo preentrenado, lo que significa que está prácticamente listo para su uso sin tener que proporcionar entrenamiento desde cero

Interoperabilidad

Puede integrarse en muchas aplicaciones, por ejemplo, en IDEs o chatbots.

Existen herramientas que enseñan a convertirse en usuario de StarCoder.

Recursos disponibles para aprender y utilizar StarCoder

El mejor consejo es empezar por lo básico. Hay algunos vídeos básicos en YouTube. Además del elaborado por AssemblyAI hay un tutorial igualmente bueno publicado por Sam Witteveen. En GitHub hay ejemplos de uso y especificaciones para los respectivos usos.

También está la interfaz gráfica creada especialmente para que todo el mundo pueda comprender mejor el uso de StarCode y una consistente base de conocimientos, de nuevo mantenida por BigCode.

Hugging Face ha creado páginas web dedicadas al uso de StarCoder, con explicaciones detalladas sobre la instalación y las limitaciones del LLM.

Limitaciones y desafíos del uso de StarCoder

Como cualquier modelo de inteligencia artificial, StarCoder tiene sus limitaciones y puede que no siempre sea capaz de generar el código más eficiente. Por lo tanto, el código debe verificarse siempre y, si procede, optimizarse.

El idioma principal utilizado para el entrenamiento es el inglés; esto puede contribuir a la falta de precisión de StarCoder, al igual que el entrenamiento, y -de nuevo- este es un mal común de todos los modelos. La cantidad y la calidad de los datos utilizados son fundamentales desde el punto de vista de la precisión de los resultados y, más en general, del rendimiento de StarCoder.

A la espera de mejoras por parte de BigCode, hay que tener en cuenta que StarCoder se presta mal al procesamiento de grandes masas de datos, incluso cuando se proporcionan a través de herramientas nativas como Playground o el Chatbot. StarCoder es una ayuda valiosa, pero no un sustituto de los humanos.

codificador estrella

StarCoder: el futuro de la codificación automatizada.

Hay que advertir que la suerte no está echada todavía. La codificación automatizada tiene un futuro cada vez más brillante, formado por herramientas cada vez más confiables, de alto rendimiento y precisas. Sin embargo, los desafíos son muchos y, también en este ámbito, BigCode ha tomado riesgos. La decisión de proponer un código abierto y trabajar sobre datos abiertos permite una mayor responsabilidad por parte de toda la comunidad implicada.

Sin embargo, para continuar en esta dirección se requiere un proceso de retroalimentación oportuno y adecuadamente crítico, así como la voluntad de corregir los errores y superar los problemas que inevitablemente surgirán.

Si el principal temor es la sustitución de los humanos por los LLM, no vamos a ninguna parte y, en cualquier caso, no existe ni una sola prueba de que se haya producido una sustitución en detrimento de los desarrolladores. El momento en que un modelo sea capaz de escribir un código mejor que los humanos está muy lejos.

Prohibida su reproducción total o parcial.

¿Qué te ha parecido este artículo?

¡Su opinión es importante para nosotros!

M
Giuditta Mosca
Temas principales

Especificaciones

I
IA

Nota 1 de 2