O conteúdo deste site foi traduzido usando inteligência artificial (IA) ou tecnologia de tradução automática e pode conter erros.

Skip to content

ControlNet e StarCoder: avanços na pesquisa da Roblox para IA generativa

Estamos profundamente comprometidos com a realização de pesquisas responsáveis e engajadas com a comunidade em todas as áreas, incluindo inteligência artificial (IA). Alcançamos isso por meio da transparência, da validação externa e do apoio a instituições acadêmicas por meio de colaboração e patrocínio. Essa abordagem nos permite acelerar a obtenção dos maiores avanços em nossas três áreas de foco: IA generativa, escalabilidade de data centers e segurança online. Hoje, estamos compartilhando insights e resultados de dois de nossos projetos de pesquisa em IA generativa. O ControlNet é uma rede neural de código aberto que adiciona controle condicional a modelos de geração de imagens para resultados mais precisos. O StarCoder é um modelo de linguagem de grande porte (LLM) de código aberto de última geração para geração de código. 

Ambos os projetos são colaborações entre o meio acadêmico e a indústria. Ambos também estão focados em ferramentas radicalmente mais poderosas para nossos criadores: artistas 3D e programadores. Mais importante ainda, e alinhados com nossa missão de investir no longo prazo por meio de pesquisas transformadoras, esses projetos mostram sinais de avanços na compreensão científica fundamental e no controle da IA para muitas aplicações. Acreditamos que esse trabalho pode ter um impacto significativo no futuro da Roblox e do campo como um todo, e temos orgulho de compartilhá-lo abertamente.

ControlNet

Avanços recentes em IA — especificamente métodos de aprendizado de máquina (ML) baseados em dados que utilizam redes neurais profundas — impulsionaram novos avanços em ferramentas de criação. Esses avanços incluem nossos recursos Code Assist e Material Generator, disponíveis publicamente em nossa ferramenta gratuita, o Roblox Studio. Os sistemas modernos de IA generativa contêm estruturas de dados chamadas modelos, que são refinadas por meio de bilhões de operações de treinamento. Os modelos mais poderosos atualmente são multimodais, o que significa que são treinados em uma mistura de mídias, como texto, imagens e áudio. Isso permite que eles identifiquem os significados subjacentes comuns entre as mídias, em vez de se ajustarem excessivamente a elementos específicos de um conjunto de dados, como paletas de cores ou ortografia. 

Esses novos sistemas de IA têm um poder expressivo significativo, mas esse poder é direcionado em grande parte por meio da “engenharia de prompts”. Fazer isso significa simplesmente alterar o texto de entrada, semelhante a refinar uma consulta em um mecanismo de busca caso ela não tenha retornado o que você esperava. Embora essa possa ser uma maneira envolvente de brincar com uma nova tecnologia, como um chatbot não direcionado, não é uma maneira eficiente ou eficaz de criar conteúdo. Em vez disso, os criadores precisam de ferramentas poderosas que possam ser aproveitadas de forma eficaz por meio de controle ativo, em vez de suposições.

O projeto ControlNet é um passo para resolver alguns desses desafios. Ele oferece uma maneira eficiente de aproveitar o poder de grandes modelos de IA pré-treinados, como o Stable Diffusion, sem depender da engenharia de prompts. O ControlNet aumenta o controle ao permitir que o artista forneça condições de entrada adicionais além de simples prompts de texto. O pesquisador da Roblox e professor da Universidade de Stanford, Maneesh Agrawala, e o pesquisador de Stanford, Lvmin Zhang, definem os objetivos do nosso projeto conjunto ControlNet da seguinte forma:

  1. Desenvolver uma interface de usuário melhor para ferramentas de IA generativa. Ir além da manipulação obscura de prompts e construir em torno de formas mais naturais de comunicar uma ideia ou conceito criativo.
  2. Fornecer um controle espacial mais preciso, indo além de criar “uma imagem como” ou “uma imagem no estilo de…” para permitir a realização exata da imagem que o criador tem em mente.
  3. Transformar o treinamento de IA generativa em um processo mais eficiente em termos de computação, que seja executado mais rapidamente, exija menos memória e consuma menos energia elétrica.
  4. Ampliar a IA geradora de imagens para um bloco de construção reutilizável. Assim, ela poderá ser integrada a pipelines padronizados de processamento de imagens e renderização 3D. 

Ao permitir que os criadores forneçam uma imagem adicional para controle espacial, o ControlNet oferece maior controle sobre a imagem final gerada. Por exemplo, um prompt como “veado macho com chifres” em um gerador de texto para imagem existente produziu uma ampla variedade de imagens, conforme mostrado abaixo:

Essas imagens geradas com soluções de IA anteriores são atraentes, mas, infelizmente, são resultados essencialmente arbitrários — não há controle. Não há como, nesses sistemas anteriores de geração de imagens, direcionar o resultado, exceto revisando o prompt de texto.

Com o ControlNet, o criador agora tem muito mais poder. Uma maneira de usar o ControlNet é fornecer tanto um prompt quanto uma imagem de referência para determinar a forma geral a ser seguida. Nesse caso, as imagens resultantes ainda oferecem variedade, mas, o que é crucial, mantêm a forma especificada:

O criador também poderia ter especificado um conjunto de arestas, uma imagem sem qualquer prompt ou muitas outras formas de fornecer entradas expressivas ao sistema.

Para criar uma ControlNet, clonamos os pesos dentro da rede de um grande modelo de difusão em duas versões. Uma é a rede treinável (esta fornece o controle; é “a ControlNet”) e a outra é a rede bloqueada. A rede bloqueada preserva a capacidade aprendida a partir de bilhões de imagens e poderia ser qualquer gerador de imagens anterior. Em seguida, treinamos a rede treinável em conjuntos de dados específicos da tarefa para aprender o controle condicional a partir da imagem adicional. As cópias treináveis e bloqueadas são conectadas por um tipo único de camada de convolução que chamamos de convolução zero, na qual os pesos de convolução crescem progressivamente de zeros para parâmetros otimizados de maneira aprendida, o que significa que inicialmente eles não têm influência e o sistema deriva o nível ideal de controle a ser exercido sobre a rede bloqueada.

Como os pesos originais são preservados por meio da rede bloqueada, o modelo funciona bem com conjuntos de dados de treinamento de vários tamanhos. E a camada de convolução zero torna o processo muito mais rápido — mais próximo do ajuste fino de um modelo de difusão do que do treinamento de novas camadas a partir do zero. 

Realizamos uma validação extensiva dessa técnica para geração de imagens. O ControlNet não apenas melhora a qualidade da imagem de saída. Ele também torna o treinamento de uma rede para uma tarefa específica mais eficiente e, portanto, prático para ser implantado em escala para nossos milhões de criadores. Em experimentos, o ControlNet proporciona um ganho de eficiência de até 10 vezes em comparação com cenários alternativos que exigem que um modelo seja totalmente retreinado. Essa eficiência é fundamental, pois o processo de criação de novos modelos é demorado e consome muitos recursos em comparação com o desenvolvimento de software tradicional. Tornar o treinamento mais eficiente economiza eletricidade, reduz custos e aumenta a velocidade com que novas funcionalidades podem ser adicionadas.

A estrutura única do ControlNet significa que ele funciona bem com conjuntos de dados de treinamento de vários tamanhos e em muitos tipos diferentes de mídia. O ControlNet demonstrou funcionar com muitos tipos diferentes de modalidades de controle, incluindo fotos, rabiscos desenhados à mão e detecção de poses em posições abertas. Acreditamos que o ControlNet pode ser aplicado a muitos tipos diferentes de mídia para conteúdo de IA generativa. Esta pesquisa é aberta e está disponível publicamente para que a comunidade possa experimentá-la e desenvolvê-la, e continuaremos apresentando mais informações à medida que fizermos novas descobertas com ela.

StarCoder

A IA generativa pode ser aplicada para produzir imagens, áudio, texto, código-fonte de programas ou qualquer outra forma de mídia rica. Em diferentes mídias, no entanto, as aplicações com maior sucesso tendem a ser aquelas cujo resultado é avaliado subjetivamente. Por exemplo, uma imagem é bem-sucedida quando agrada a um observador humano. Certos erros na imagem, como características estranhas nas bordas ou até mesmo um dedo a mais em uma mão, podem passar despercebidos se a imagem como um todo for cativante. Da mesma forma, um poema ou conto pode conter erros gramaticais ou algumas falhas lógicas, mas se a essência for cativante, tendemos a perdoá-los. 

Outra maneira de considerar critérios subjetivos é que o espaço de resultados é contínuo. Um resultado pode ser melhor do que outro, mas não há um limite específico a partir do qual o resultado seja completamente aceitável ou inaceitável. Em outros domínios e formas de mídia, o resultado é avaliado objetivamente. Por exemplo, o código-fonte produzido por um assistente de programação de IA generativa está correto ou não. Se o código não passar em um teste, ele falha, mesmo que seja semelhante ao código de uma solução válida. Esse é um espaço de resultados discreto. É mais difícil ter sucesso em um espaço discreto tanto porque os critérios são mais rígidos quanto porque não é possível se aproximar progressivamente de uma boa solução — o código está errado até que, de repente, funcione.

Os LLMs usados para geração de texto funcionam bem em aplicações subjetivas e contínuas, como chatbots. Eles também parecem funcionar bem na geração de prosa em muitas línguas humanas, como inglês e francês. No entanto, os LLMs existentes não parecem funcionar tão bem com linguagens de programação quanto funcionam com essas línguas humanas. O código é uma forma de matemática que representa uma maneira muito diferente e objetiva de expressar significado em comparação com a linguagem natural. Trata-se de um espaço de resultados discreto, em vez de um espaço de resultados contínuo. Para alcançar a mais alta qualidade na geração de código de linguagem de programação para os criadores do Roblox, precisamos de métodos para aplicar LLMs que funcionem bem nesse espaço discreto e objetivo. Também precisamos de métodos robustos para expressar a funcionalidade do código independentemente da sintaxe de uma linguagem específica, como Lua, JavaScript ou Python. 

O StarCoder, um novo LLM de código aberto de última geração para geração de código, é um grande avanço para esse desafio técnico e um LLM verdadeiramente aberto para todos. O StarCoder é um dos resultados do consórcio de pesquisa BigCode, que envolve mais de 600 membros em laboratórios de pesquisa acadêmicos e industriais. O pesquisador da Roblox e professor da Northeastern University, Arjun Guha, ajudou a liderar essa equipe no desenvolvimento do StarCoder. Esses primeiros resultados publicados se concentram exclusivamente no aspecto do código, que é a área em que o campo mais precisa de novos avanços, dado o relativo sucesso dos métodos subjetivos. 

Para oferecer IA generativa por meio de LLMs que apoiem o ecossistema de IA mais amplo e a comunidade Roblox, precisamos de modelos que tenham sido treinados exclusivamente em conjuntos de dados devidamente licenciados e coletados de forma responsável. Esses modelos também devem ter licenças sem restrições, para que qualquer pessoa possa usá-los, desenvolver a partir deles e contribuir de volta para o ecossistema. Hoje, os LLMs mais poderosos são proprietários ou licenciados para formas limitadas de uso comercial, o que proíbe ou limita a capacidade dos pesquisadores de experimentar o próprio modelo. Em contrapartida, o StarCoder é um modelo verdadeiramente aberto, criado por meio de uma coalizão de pesquisadores da indústria e da academia e licenciado sem restrições para aplicação comercial em qualquer escala. O StarCoder é treinado exclusivamente com conteúdo coletado de forma responsável e devidamente licenciado. O modelo foi inicialmente treinado com código público, e um processo de exclusão está disponível para aqueles que preferem que seu código não seja usado para treinamento.

Hoje, o StarCoder funciona em 86 linguagens de programação diferentes, incluindo Python, C++ e Java. Na data de publicação do artigo, ele apresentava desempenho superior a todos os LLMs de código aberto que suportam múltiplas linguagens e era até mesmo competitivo com muitos dos modelos fechados e proprietários. 

O LLM StarCoder é uma contribuição para o ecossistema, mas nosso objetivo de pesquisa vai muito além. O maior impacto desta pesquisa é o avanço na modelagem semântica de modelos multimodais tanto objetivos quanto subjetivos, incluindo código, texto, imagens, fala e vídeo, e o aumento da eficiência do treinamento por meio de técnicas de transferência de domínio. Também esperamos obter insights profundos sobre a sustentabilidade e a controlabilidade da IA generativa para tarefas objetivas, como a geração de código-fonte. Há uma grande diferença entre uma demonstração intrigante de tecnologia emergente e um produto seguro, confiável e eficiente que agrega valor à sua comunidade de usuários. Para nossos modelos de ML, otimizamos o desempenho em termos de consumo de memória, economia de energia e tempo de execução. Também desenvolvemos uma infraestrutura robusta, envolvemos o núcleo de IA com software para conectá-lo ao resto do sistema e desenvolvemos um sistema integrado para atualizações frequentes à medida que novos recursos são adicionados. 

Reunir os cientistas e engenheiros da Roblox com algumas das mentes mais brilhantes da comunidade científica é um componente essencial em nossa busca por tecnologia inovadora. Temos orgulho de compartilhar esses resultados iniciais e convidamos a comunidade de pesquisa a se envolver conosco e a desenvolver esses avanços.