Los desarrolladores están adoptando generadores de código impulsados por IA (servicios como GitHub Copilot y Amazon CodeWhisperer, junto con modelos de acceso abierto como CodeLlama de Meta) a un ritmo asombroso tasa. Pero las herramientas están lejos de ser ideales. Muchos no son gratis. Otros lo son, pero sólo bajo licencias que impiden su uso en contextos comerciales comunes.
Al percibir la demanda de alternativas, la startup de inteligencia artificial Hugging Face se asoció hace varios años con ServiceNow, la plataforma de automatización del flujo de trabajo, para crear StarCoder, un generador de código fuente abierto con una licencia menos restrictiva que algunos de los demás. El original estuvo en línea a principios del año pasado y desde entonces se ha estado trabajando en un seguimiento, StarCoder 2.
StarCoder 2 no es un modelo único de generación de código, sino más bien una familia. Lanzado hoy, viene en tres variantes, las dos primeras pueden ejecutarse en la mayoría de las GPU de consumo modernas:
- Un modelo de 3 mil millones de parámetros (3B) entrenado por ServiceNow
- Un modelo de 7 mil millones de parámetros (7B) entrenado por Hugging Face
- Un modelo de 15 mil millones de parámetros (15B) entrenado por Nvidia, el último patrocinador del proyecto StarCoder.
(Tenga en cuenta que los “parámetros” son las partes de un modelo aprendidas a partir de datos de entrenamiento y esencialmente definen la habilidad del modelo en un problema, en este caso generar código).
Como la mayoría de los otros generadores de código, StarCoder 2 puede sugerir formas de completar líneas de código sin terminar, así como resumir y recuperar fragmentos de código cuando se le solicita en lenguaje natural. Entrenado con 4 veces más datos que el StarCoder original, StarCoder 2 ofrece lo que Hugging Face, ServiceNow y Nvidia caracterizan como un rendimiento “significativamente” mejorado a menores costos de operación.
StarCoder 2 se puede ajustar “en unas pocas horas” usando una GPU como la Nvidia A100 con datos propios o de terceros para crear aplicaciones como chatbots y asistentes de codificación personales. Y, debido a que fue entrenado en un conjunto de datos más grande y diverso que el StarCoder original (~619 lenguajes de programación), StarCoder 2 puede hacer predicciones más precisas y conscientes del contexto, al menos hipotéticamente.
“StarCoder 2 fue creado especialmente para desarrolladores que necesitan crear aplicaciones rápidamente”, dijo a TechCrunch Harm de Vries, jefe del equipo de desarrollo StarCoder 2 de ServiceNow, en una entrevista. “Con StarCoder2, los desarrolladores pueden utilizar sus capacidades para hacer que la codificación sea más eficiente sin sacrificar la velocidad o la calidad”.
Ahora, me atrevería a decir que no todos los desarrolladores estarían de acuerdo con De Vries en cuanto a velocidad y calidad. Los generadores de código prometen agilizar ciertas tareas de codificación, pero a un costo.
Un estudio reciente de Stanford encontró que los ingenieros que utilizan sistemas de generación de código tienen más probabilidades de introducir vulnerabilidades de seguridad en las aplicaciones que desarrollan. En otros lugares, un encuesta de Sonatype, la empresa de ciberseguridad, muestra que la mayoría de los desarrolladores están preocupados por la falta de conocimiento sobre cómo se produce el código de los generadores de código y la “dispersión de código” de los generadores que producen demasiado código para administrar.
La licencia de StarCoder 2 también podría resultar un obstáculo para algunos.
StarCoder 2 tiene licencia bajo RAIL-M de Hugging Face, cuyo objetivo es promover el uso responsable imponiendo restricciones de “toque ligero” tanto a los licenciatarios del modelo como a los usuarios intermedios. Si bien es menos restrictiva que muchas otras licencias, RAIL-M no es realmente “abierta” en el sentido de que no permiso desarrolladores utilizarán StarCoder 2 para cada aplicación imaginable (por ejemplo, las aplicaciones de asesoramiento médico están estrictamente prohibidas). Algunos comentaristas dicen que los requisitos de RAIL-M pueden ser demasiado vagos para cumplirlos en cualquier caso, y que RAIL-M podría entrar en conflicto con regulaciones relacionadas con la IA, como la Ley de IA de la UE.
Dejando todo esto de lado por un momento, ¿StarCoder 2 es realmente superior a otros generadores de código que existen, gratuitos o de pago?
Dependiendo del punto de referencia, parece ser más eficiente que una de las versiones de CodeLlama, CodeLlama 33B. Hugging Face dice que StarCoder 2 15B coincide con CodeLlama 33B en un subconjunto de tareas de finalización de código al doble de velocidad. No está claro qué tareas; Hugging Face no lo especificó.
StarCoder 2, como colección de modelos de código abierto, también tiene la ventaja de poder implementarse localmente y “aprender” el código fuente o el código base de un desarrollador, una perspectiva atractiva para los desarrolladores y las empresas que desconfían de exponer el código a una IA alojada en la nube. En un 2023 encuesta de Portal26 y CensusWide, el 85% de las empresas dijeron que desconfiaban de adoptar GenAI como generadores de códigos debido a los riesgos de privacidad y seguridad, como que los empleados compartan información confidencial o que los proveedores se capaciten sobre datos propietarios.
Hugging Face, ServiceNow y Nvidia también argumentan que StarCoder 2 es más ético (y menos complicado legalmente) que sus rivales.
Todos los modelos GenAI regurgitan; en otras palabras, escupen una copia reflejada de los datos con los que fueron entrenados. No hace falta una imaginación activa para ver por qué esto podría causarle problemas a un desarrollador. Con generadores de códigos capacitados en códigos protegidos por derechos de autor, es muy posible que, incluso con filtros y salvaguardas adicionales implementados, los generadores recomienden sin saberlo códigos protegidos por derechos de autor y no lo etiqueten como tal.
Algunos proveedores, incluidos GitHub, Microsoft (la empresa matriz de GitHub) y Amazon, se han comprometido a brindar cobertura legal en situaciones en las que un cliente generador de código sea acusado de violar los derechos de autor. Pero la cobertura varía de un proveedor a otro y generalmente se limita a la clientela corporativa.
A diferencia de los generadores de código entrenados con código protegido por derechos de autor (GitHub Copilot, entre otros), StarCoder 2 se entrenó únicamente con datos bajo licencia de Software Heritage, la organización sin fines de lucro que brinda servicios de archivo de código. Antes de la capacitación de StarCoder 2, BigCode, el equipo interorganizacional detrás de gran parte de la hoja de ruta de StarCoder 2, les dio a los propietarios de códigos la oportunidad de optar por no participar en el conjunto de capacitación si así lo deseaban.
Al igual que con el StarCoder original, los datos de entrenamiento de StarCoder 2 están disponibles para que los desarrolladores los bifurquen, reproduzcan o auditen como quieran.
Leandro von Werra, ingeniero de aprendizaje automático de Hugging Face y codirector de BigCode, señaló que si bien recientemente ha habido una proliferación de generadores de código abierto, pocos han estado acompañados de información sobre los datos que se utilizaron para entrenarlos y, de hecho, cómo fueron entrenados.
“Desde un punto de vista científico, el problema es que la capacitación no es reproducible, pero también como productor de datos (es decir, alguien que carga su código en GitHub), no sabes si tus datos fueron utilizados y cómo”, dijo Von Werra en un entrevista. “StarCoder 2 aborda este problema siendo completamente transparente en todo el proceso de capacitación, desde la recopilación de datos previos a la capacitación hasta la capacitación misma”.
Dicho esto, StarCoder 2 no es perfecto. Al igual que otros generadores de código, es susceptible de sufrir sesgos. De Vries señala que puede generar código con elementos que reflejen estereotipos sobre género y raza. Y debido a que StarCoder 2 fue entrenado predominantemente en comentarios en idioma inglés, código Python y Java, su rendimiento es más débil en idiomas distintos del inglés y código de “bajos recursos” como Fortran y Haksell.
Aún así, Von Werra afirma que es un paso en la dirección correcta.
“Creemos firmemente que generar confianza y responsabilidad con los modelos de IA requiere transparencia y auditabilidad de todo el proceso del modelo, incluidos los datos y la receta de capacitación”, dijo. “Codificador estrella 2 [showcases] cómo los modelos totalmente abiertos pueden ofrecer un rendimiento competitivo”.
Quizás se pregunte, al igual que este escritor, qué incentivo tienen Hugging Face, ServiceNow y Nvidia para invertir en un proyecto como StarCoder 2. Después de todo, son negocios, y los modelos de capacitación no son baratos.
Hasta donde puedo decir, es una estrategia probada y verdadera: fomentar la buena voluntad y crear servicios pagos además de las versiones de código abierto.
ServiceNow ya ha utilizado StarCoder para crear Now LLM, un producto para la generación de código ajustado a los patrones de flujo de trabajo, casos de uso y procesos de ServiceNow. Hugging Face, que ofrece planes de consultoría para la implementación de modelos, ofrece versiones alojadas de los modelos StarCoder 2 en su plataforma. También lo es Nvidia, que hace que StarCoder 2 esté disponible a través de una API y una interfaz web.
Para los desarrolladores expresamente interesados en la experiencia fuera de línea sin costo, StarCoder 2 (los modelos, el código fuente y más) se pueden descargar desde la página de GitHub del proyecto.