ControlNet y StarCoder: avances en la investigación de Roblox para la IA generativa

Estamos profundamente comprometidos con llevar a cabo una investigación responsable y comprometida con la comunidad en todas las áreas, incluida la inteligencia artificial (IA). Lo conseguimos a través de la transparencia, la validación externa y el apoyo a instituciones académicas mediante la colaboración y el patrocinio. Este enfoque nos permite acelerar el logro de los mayores avances en nuestras tres áreas de interés: IA generativa, escalabilidad de centros de datos y seguridad en línea. Hoy compartimos ideas y resultados de dos de nuestros proyectos de investigación en IA generativa. ControlNet es una red neuronal de código abierto que añade control condicional a los modelos de generación de imágenes para obtener resultados más precisos. StarCoder es un modelo de lenguaje grande (LLM) de código abierto de última generación para la generación de código.
Ambos proyectos son colaboraciones entre el mundo académico y la industria. Además, ambos se centran en herramientas radicalmente más potentes para nuestros creadores: artistas 3D y programadores. Y lo que es más importante, en consonancia con nuestra misión de invertir a largo plazo a través de la investigación transformadora, estos proyectos muestran indicios de avances en la comprensión científica fundamental y el control de la IA para numerosas aplicaciones. Creemos que este trabajo puede tener un impacto significativo en el futuro de Roblox y del sector en su conjunto, y nos enorgullece compartirlo abiertamente.
ControlNet
Los recientes avances en IA —concretamente los métodos de aprendizaje automático (ML) basados en datos que utilizan redes neuronales profundas— han impulsado nuevos avances en las herramientas de creación. Estos avances incluyen nuestras funciones Code Assist y Material Generator, que están disponibles públicamente en nuestra herramienta gratuita, Roblox Studio. Los sistemas modernos de IA generativa contienen estructuras de datos denominadas «modelos» que se perfeccionan a través de miles de millones de operaciones de entrenamiento. Los modelos más potentes en la actualidad son multimodales, lo que significa que se entrenan con una combinación de medios, como texto, imágenes y audio. Esto les permite encontrar los significados subyacentes comunes en todos los medios, en lugar de sobreajustarse a elementos específicos de un conjunto de datos, como las paletas de colores o la ortografía.
Estos nuevos sistemas de IA tienen un gran poder expresivo, pero ese poder se canaliza en gran medida a través de la «ingeniería de prompts». Hacerlo significa simplemente cambiar el texto de entrada, de forma similar a refinar una consulta en un motor de búsqueda si esta no ha devuelto lo que esperabas. Aunque esta puede ser una forma atractiva de jugar con una nueva tecnología, como un chatbot no dirigido, no es una forma eficiente ni eficaz de crear contenido. En cambio, los creadores necesitan herramientas potentes que puedan aprovechar de forma eficaz mediante un control activo, en lugar de basarse en conjeturas.
El proyecto ControlNet es un paso hacia la resolución de algunos de estos retos. Ofrece una forma eficiente de aprovechar el poder de grandes modelos de IA preentrenados, como Stable Diffusion, sin depender de la ingeniería de prompts. ControlNet aumenta el control al permitir que el artista proporcione condiciones de entrada adicionales más allá de los simples prompts de texto. El investigador de Roblox y profesor de la Universidad de Stanford, Maneesh Agrawala, y el investigador de Stanford, Lvmin Zhang, definen los objetivos de nuestro proyecto conjunto ControlNet de la siguiente manera:
- Desarrollar una mejor interfaz de usuario para las herramientas de IA generativa. Ir más allá de la oscura manipulación de las indicaciones y basarse en formas más naturales de comunicar una idea o un concepto creativo.
- Proporcionar un control espacial más preciso, para ir más allá de crear «una imagen como» o «una imagen al estilo de...» y permitir materializar exactamente la imagen que el creador tiene en mente.
- Transformar el entrenamiento de la IA generativa en un proceso más eficiente desde el punto de vista computacional que se ejecute más rápidamente, requiera menos memoria y consuma menos energía eléctrica.
- Ampliar la IA generativa de imágenes para convertirla en un bloque de construcción reutilizable. De este modo, se podrá integrar con procesos estandarizados de procesamiento de imágenes y renderizado 3D.
Al permitir a los creadores proporcionar una imagen adicional para el control espacial, ControlNet ofrece un mayor control sobre la imagen final generada. Por ejemplo, una indicación como «ciervo macho con cuernos» en un generador de texto a imagen existente produjo una amplia variedad de imágenes, como se muestra a continuación:

Estas imágenes generadas con soluciones de IA anteriores son atractivas, pero, por desgracia, son resultados esencialmente arbitrarios: no hay control. En esos sistemas de generación de imágenes anteriores no hay forma de dirigir el resultado, salvo revisando el texto de la indicación.
Con ControlNet, el creador tiene ahora mucho más poder. Una forma de utilizar ControlNet es proporcionar tanto una indicación como una imagen de referencia para determinar la forma general a seguir. En este caso, las imágenes resultantes seguirían ofreciendo variedad, pero, lo que es más importante, mantendrían la forma especificada:

El creador también podría haber especificado un conjunto de aristas, una imagen sin ningún tipo de indicación, o muchas otras formas de proporcionar una entrada expresiva al sistema.
Para crear una ControlNet, clonamos los pesos de la red de un gran modelo de difusión en dos versiones. Una es la red entrenable (esta proporciona el control; es «la ControlNet») y la otra es la red bloqueada. La red bloqueada conserva la capacidad aprendida a partir de miles de millones de imágenes y podría ser cualquier generador de imágenes anterior. A continuación, entrenamos la red entrenable con conjuntos de datos específicos de la tarea para que aprenda el control condicional a partir de la imagen adicional. Las copias entrenables y bloqueadas están conectadas mediante un tipo único de capa de convolución que denominamos «convolución cero», en la que los pesos de convolución crecen progresivamente desde ceros hasta parámetros optimizados de forma aprendida, lo que significa que inicialmente no tienen influencia y el sistema deriva el nivel óptimo de control que debe ejercer sobre la red bloqueada.
Dado que los pesos originales se conservan a través de la red bloqueada, el modelo funciona bien con conjuntos de datos de entrenamiento de diversos tamaños. Y la capa de convolución cero agiliza mucho el proceso, acercándolo más al ajuste fino de un modelo de difusión que al entrenamiento de nuevas capas desde cero.
Hemos llevado a cabo una validación exhaustiva de esta técnica para la generación de imágenes. ControlNet no solo mejora la calidad de la imagen de salida. También hace que el entrenamiento de una red para una tarea específica sea más eficiente y, por lo tanto, más práctico de implementar a gran escala para nuestros millones de creadores. En los experimentos, ControlNet proporciona una ganancia de eficiencia de hasta 10 veces en comparación con escenarios alternativos que requieren que un modelo se vuelva a entrenar por completo. Esta eficiencia es fundamental, ya que el proceso de creación de nuevos modelos requiere mucho tiempo y recursos en comparación con el desarrollo de software tradicional. Hacer que el entrenamiento sea más eficiente ahorra electricidad, reduce los costes y aumenta la velocidad a la que se pueden añadir nuevas funcionalidades.
La estructura única de ControlNet hace que funcione bien con conjuntos de datos de entrenamiento de diversos tamaños y en muchos tipos diferentes de medios. Se ha demostrado que ControlNet funciona con muchos tipos diferentes de modalidades de control, incluyendo fotos, garabatos dibujados a mano y detección de poses OpenPose. Creemos que ControlNet puede aplicarse a muchos tipos diferentes de medios para la creación de contenido de IA generativa. Esta investigación es abierta y está disponible públicamente para que la comunidad experimente con ella y la utilice como base, y seguiremos presentando más información a medida que realicemos nuevos descubrimientos con ella.
StarCoder
La IA generativa puede aplicarse para producir imágenes, audio, texto, código fuente de programas o cualquier otra forma de contenido multimedia. Sin embargo, en los distintos medios, las aplicaciones con mayor éxito suelen ser aquellas en las que el resultado se evalúa de forma subjetiva. Por ejemplo, una imagen tiene éxito cuando resulta atractiva para un espectador humano. Ciertos errores en la imagen, como rasgos extraños en los bordes o incluso un dedo de más en una mano, pueden pasar desapercibidos si la imagen en su conjunto resulta atractiva. Del mismo modo, un poema o un relato corto puede contener errores gramaticales o algunas incongruencias lógicas, pero si la idea central es convincente, tendemos a perdonarlos.
Otra forma de considerar los criterios subjetivos es que el espacio de resultados es continuo. Un resultado puede ser mejor que otro, pero no hay un umbral específico en el que el resultado sea completamente aceptable o inaceptable. En otros ámbitos y formas de medios, el resultado se juzga objetivamente. Por ejemplo, el código fuente producido por un asistente de programación de IA generativa es correcto o no lo es. Si el código no supera una prueba, falla, incluso si es similar al código de una solución válida. Este es un espacio de resultados discreto. Es más difícil tener éxito en un espacio discreto tanto porque los criterios son más estrictos como porque no se puede avanzar progresivamente hacia una buena solución: el código no funciona hasta que, de repente, empieza a funcionar.
Los LLM utilizados para la generación de texto funcionan bien en aplicaciones subjetivas y continuas, como los chatbots. También parecen funcionar bien para la generación de prosa en muchos idiomas humanos, como el inglés y el francés. Sin embargo, los LLM existentes no parecen funcionar tan bien con los lenguajes de programación como lo hacen con esos idiomas humanos. El código es una forma de matemáticas que constituye una manera muy diferente y objetiva de expresar significado, distinta del lenguaje natural. Se trata de un espacio de resultados discreto, en lugar de un espacio de resultados continuo. Para lograr la máxima calidad en la generación de código de lenguajes de programación para los creadores de Roblox, necesitamos métodos de aplicación de los LLM que funcionen bien en este espacio discreto y objetivo. También necesitamos métodos robustos para expresar la funcionalidad del código independientemente de la sintaxis de un lenguaje concreto, como Lua, JavaScript o Python.
StarCoder, un nuevo LLM de código abierto de última generación para la generación de código, supone un gran avance frente a este reto técnico y es un LLM verdaderamente abierto para todos. StarCoder es uno de los resultados del consorcio de investigación BigCode, en el que participan más de 600 miembros de laboratorios de investigación académicos e industriales. El investigador de Roblox y profesor de la Northeastern University, Arjun Guha, ayudó a dirigir este equipo para desarrollar StarCoder. Estos primeros resultados publicados se centran exclusivamente en el aspecto del código, que es el área en la que el campo más necesita un nuevo impulso, dado el relativo éxito de los métodos subjetivos.
Para ofrecer IA generativa a través de LLM que respalden el ecosistema de IA en general y la comunidad de Roblox, necesitamos modelos que se hayan entrenado exclusivamente con conjuntos de datos recopilados de forma responsable y con las licencias adecuadas. Estos también deben contar con licencias sin restricciones para que cualquiera pueda utilizarlos, desarrollar a partir de ellos y contribuir a su vez al ecosistema. Hoy en día, los LLM más potentes son de propiedad privada o tienen licencias para formas limitadas de uso comercial, lo que prohíbe o limita la capacidad de los investigadores para experimentar con el propio modelo. Por el contrario, StarCoder es un modelo verdaderamente abierto, creado a través de una coalición de investigadores de la industria y el mundo académico y con una licencia sin restricciones para su aplicación comercial a cualquier escala. StarCoder se entrena exclusivamente con contenido recopilado de forma responsable y con las licencias adecuadas. El modelo se entrenó inicialmente con código público y existe un proceso de exclusión voluntaria para aquellos que prefieran que su código no se utilice para el entrenamiento.
En la actualidad, StarCoder funciona con 86 lenguajes de programación diferentes, entre los que se incluyen Python, C++ y Java. En el momento de la publicación del artículo, superaba en rendimiento a todos los LLM de código abierto que admiten múltiples lenguajes e incluso era competitivo con muchos de los modelos cerrados y propietarios.
El LLM StarCoder es una contribución al ecosistema, pero nuestro objetivo de investigación va mucho más allá. El mayor impacto de esta investigación es el avance en el modelado semántico de modelos multimodales tanto objetivos como subjetivos, incluyendo código, texto, imágenes, voz y vídeo, así como el aumento de la eficiencia del entrenamiento mediante técnicas de transferencia de dominios. También esperamos obtener una comprensión profunda de la mantenibilidad y controlabilidad de la IA generativa para tareas objetivas, como la generación de código fuente. Existe una gran diferencia entre una demostración intrigante de tecnología emergente y un producto seguro, fiable y eficiente que aporte valor a su comunidad de usuarios. Para nuestros modelos de aprendizaje automático, optimizamos el rendimiento en cuanto a huella de memoria, ahorro de energía y tiempo de ejecución. También hemos desarrollado una infraestructura robusta, hemos rodeado el núcleo de IA con software para conectarlo al resto del sistema y hemos desarrollado un sistema fluido para actualizaciones frecuentes a medida que se añaden nuevas funciones.
Reunir a los científicos e ingenieros de Roblox con algunas de las mentes más brillantes de la comunidad científica es un componente clave en nuestra búsqueda de tecnología innovadora. Estamos orgullosos de compartir estos primeros resultados e invitamos a la comunidad investigadora a colaborar con nosotros y a aprovechar estos avances.


