ControlNet e StarCoder: progressi nella ricerca su Roblox per l'IA generativa

Siamo profondamente impegnati a perseguire una ricerca responsabile e coinvolta nella comunità in tutti i settori, compresa l'intelligenza artificiale (IA). Raggiungiamo questo obiettivo attraverso la trasparenza, la convalida esterna e il sostegno alle istituzioni accademiche tramite collaborazione e sponsorizzazioni. Questo approccio ci consente di accelerare il raggiungimento dei maggiori progressi nelle nostre tre aree di interesse: IA generativa, scalabilità dei data center e sicurezza online. Oggi condividiamo approfondimenti e risultati di due dei nostri progetti di ricerca sull'IA generativa. ControlNet è una rete neurale open source che aggiunge un controllo condizionale ai modelli di generazione di immagini per ottenere output più precisi. StarCoder è un modello linguistico di grandi dimensioni (LLM) open source all'avanguardia per la generazione di codice.
Entrambi i progetti sono frutto di collaborazioni tra il mondo accademico e l'industria. Entrambi sono inoltre incentrati su strumenti radicalmente più potenti per i nostri creatori: artisti 3D e programmatori. Cosa ancora più importante, e in linea con la nostra missione di investire in una prospettiva a lungo termine attraverso la ricerca trasformativa, questi progetti mostrano segni di progressi nella comprensione scientifica fondamentale e nel controllo dell'IA per molte applicazioni. Crediamo che questo lavoro possa avere un impatto significativo sul futuro di Roblox e del settore nel suo complesso e siamo orgogliosi di condividerlo apertamente.
ControlNet
I recenti progressi nell'IA — in particolare i metodi di machine learning (ML) basati sui dati che utilizzano reti neurali profonde — hanno portato a nuovi progressi negli strumenti di creazione. Questi progressi includono le nostre funzionalità Code Assist e Material Generator, disponibili al pubblico nel nostro strumento gratuito, Roblox Studio. I moderni sistemi di IA generativa contengono strutture di dati chiamate modelli che vengono perfezionati attraverso miliardi di operazioni di addestramento. I modelli più potenti oggi sono multimodali, il che significa che vengono addestrati su una combinazione di media quali testo, immagini e audio. Ciò consente loro di individuare i significati comuni sottostanti tra i vari media, anziché adattarsi eccessivamente a elementi specifici di un set di dati, come le tavolozze di colori o l’ortografia.
Questi nuovi sistemi di IA hanno un notevole potere espressivo, ma tale potere è diretto in gran parte attraverso il "prompt engineering". Ciò significa semplicemente modificare il testo di input, in modo simile a come si perfeziona una query su un motore di ricerca se non restituisce i risultati attesi. Sebbene questo possa essere un modo coinvolgente per sperimentare una nuova tecnologia come un chatbot non guidato, non è un modo efficiente o efficace per creare contenuti. I creatori hanno invece bisogno di strumenti potenti che possano sfruttare in modo efficace attraverso un controllo attivo piuttosto che tramite supposizioni.
Il progetto ControlNet è un passo avanti verso la risoluzione di alcune di queste sfide. Offre un modo efficiente per sfruttare la potenza di grandi modelli di IA pre-addestrati come Stable Diffusion, senza fare affidamento sul prompt engineering. ControlNet aumenta il controllo consentendo all'artista di fornire condizioni di input aggiuntive oltre ai semplici prompt di testo. Il ricercatore di Roblox e professore dell'Università di Stanford Maneesh Agrawala e il ricercatore di Stanford Lvmin Zhang definiscono gli obiettivi del nostro progetto congiunto ControlNet come:
- Sviluppare un'interfaccia utente migliore per gli strumenti di IA generativa. Andare oltre l'oscura manipolazione dei prompt e costruire intorno a modi più naturali di comunicare un'idea o un concetto creativo.
- Fornire un controllo spaziale più preciso, per andare oltre la creazione di "un'immagine simile a" o "un'immagine nello stile di..." e consentire di realizzare esattamente l'immagine che il creatore ha in mente.
- Trasformare l'addestramento dell'IA generativa in un processo più efficiente dal punto di vista computazionale, che si esegua più rapidamente, richieda meno memoria e consumi meno energia elettrica.
- Estendere l'IA generativa di immagini in un elemento costitutivo riutilizzabile. In questo modo potrà essere integrata con pipeline standardizzate di elaborazione delle immagini e rendering 3D.
Consentendo ai creatori di fornire un'immagine aggiuntiva per il controllo spaziale, ControlNet garantisce un maggiore controllo sull'immagine finale generata. Ad esempio, un prompt del tipo "cervo maschio con corna" su un generatore di testo-immagine esistente ha prodotto un'ampia varietà di immagini, come mostrato di seguito:

Queste immagini generate con le precedenti soluzioni di IA sono accattivanti, ma purtroppo sono risultati essenzialmente arbitrari: non c'è alcun controllo. In quei precedenti sistemi di generazione di immagini non c'è modo di orientare l'output, se non modificando il prompt di testo.
Con ControlNet, il creatore ha ora molto più potere. Un modo per utilizzare ControlNet è quello di fornire sia un prompt che un'immagine di riferimento per determinare la forma generale da seguire. In questo caso, le immagini risultanti offrirebbero comunque varietà ma, cosa fondamentale, manterrebbero la forma specificata:

Il creatore avrebbe potuto anche specificare un insieme di bordi, un'immagine senza alcun prompt, o molti altri modi per fornire input espressivi al sistema.
Per creare un ControlNet, cloniamo i pesi all'interno della rete di un grande modello di diffusione in due versioni. Una è la rete addestrabile (che fornisce il controllo; è "il ControlNet") e l'altra è la rete bloccata. La rete bloccata conserva la capacità appresa da miliardi di immagini e potrebbe essere qualsiasi generatore di immagini precedente. Quindi addestriamo la rete addestrabile su set di dati specifici per il compito per apprendere il controllo condizionale dall'immagine aggiuntiva. Le copie addestrabili e bloccate sono collegate con un tipo unico di strato di convoluzione che chiamiamo convoluzione zero, in cui i pesi di convoluzione crescono progressivamente da zero a parametri ottimizzati in modo appreso, il che significa che inizialmente non hanno alcuna influenza e il sistema ricava il livello ottimale di controllo da esercitare sulla rete bloccata.
Poiché i pesi originali vengono preservati tramite la rete bloccata, il modello funziona bene con set di dati di addestramento di varie dimensioni. Inoltre, lo strato di convoluzione zero rende il processo molto più veloce — più simile alla messa a punto di un modello di diffusione che all'addestramento di nuovi strati da zero.
Abbiamo eseguito una validazione approfondita di questa tecnica per la generazione di immagini. ControlNet non si limita a migliorare la qualità dell'immagine in uscita. Rende anche più efficiente l'addestramento di una rete per un compito specifico e quindi pratico da implementare su larga scala per i nostri milioni di creatori. Negli esperimenti, ControlNet offre un guadagno in termini di efficienza fino a 10 volte superiore rispetto a scenari alternativi che richiedono il riaddestramento completo di un modello. Questa efficienza è fondamentale, poiché il processo di creazione di nuovi modelli richiede molto tempo e risorse rispetto allo sviluppo tradizionale di software. Rendere l'addestramento più efficiente consente di risparmiare energia elettrica, ridurre i costi e aumentare la velocità con cui è possibile aggiungere nuove funzionalità.
La struttura unica di ControlNet gli consente di funzionare bene con set di dati di addestramento di varie dimensioni e su molti tipi diversi di media. È stato dimostrato che ControlNet funziona con molti tipi diversi di modalità di controllo, tra cui foto, schizzi disegnati a mano e il rilevamento delle pose OpenPose. Riteniamo che ControlNet possa essere applicato a molti tipi diversi di media per la creazione di contenuti generativi basati sull'IA. Questa ricerca è aperta e disponibile al pubblico affinché la comunità possa sperimentarla e svilupparla ulteriormente, e continueremo a presentare ulteriori informazioni man mano che faremo nuove scoperte.
StarCoder
L'IA generativa può essere applicata per produrre immagini, audio, testo, codice sorgente di programmi o qualsiasi altra forma di media avanzato. Tra i diversi media, tuttavia, le applicazioni di maggior successo tendono ad essere quelle in cui l'output viene giudicato soggettivamente. Ad esempio, un'immagine ha successo quando piace a un osservatore umano. Alcuni errori nell'immagine, come caratteristiche strane sui bordi o persino un dito in più su una mano, potrebbero non essere notati se l'immagine nel suo complesso è avvincente. Allo stesso modo, una poesia o un racconto breve possono presentare errori grammaticali o alcuni salti logici, ma se il succo è avvincente, tendiamo a perdonarli.
Un altro modo di considerare i criteri soggettivi è che lo spazio dei risultati è continuo. Un risultato può essere migliore di un altro, ma non esiste una soglia specifica alla quale il risultato sia completamente accettabile o inaccettabile. Per altri ambiti e forme di media, l'output viene valutato oggettivamente. Ad esempio, il codice sorgente prodotto da un assistente di programmazione generativo basato sull'IA è corretto o non lo è. Se il codice non supera un test, fallisce, anche se è simile al codice di una soluzione valida. Si tratta di uno spazio dei risultati discreto. È più difficile avere successo in uno spazio discreto sia perché i criteri sono più rigidi, sia perché non è possibile avvicinarsi progressivamente a una buona soluzione: il codice è difettoso fino al momento in cui improvvisamente funziona.
Gli LLM utilizzati per l'output di testo funzionano bene per applicazioni soggettive e continue come i chatbot. Sembrano funzionare bene anche per la generazione di prosa in molte lingue umane, come l'inglese e il francese. Tuttavia, gli LLM esistenti non sembrano funzionare altrettanto bene per i linguaggi di programmazione quanto per le lingue umane. Il codice è una forma di matematica che rappresenta un modo molto diverso e oggettivo di esprimere il significato rispetto al linguaggio naturale. Si tratta di uno spazio di risultati discreto anziché continuo. Per ottenere la massima qualità nella generazione di codice in linguaggi di programmazione per i creatori di Roblox, abbiamo bisogno di metodi per applicare gli LLM che funzionino bene in questo spazio discreto e oggettivo. Abbiamo anche bisogno di metodi robusti per esprimere la funzionalità del codice indipendentemente dalla sintassi di un linguaggio particolare, come Lua, JavaScript o Python.
StarCoder, un nuovo LLM open source all'avanguardia per la generazione di codice, rappresenta un importante passo avanti verso questa sfida tecnica ed è un LLM veramente aperto a tutti. StarCoder è uno dei risultati del consorzio di ricerca BigCode, che coinvolge oltre 600 membri provenienti da laboratori di ricerca accademici e industriali. Il ricercatore di Roblox e professore della Northeastern University Arjun Guha ha contribuito a guidare questo team nello sviluppo di StarCoder. Questi primi risultati pubblicati si concentrano esclusivamente sull'aspetto del codice, che è l'area in cui il settore ha maggiormente bisogno di nuova crescita, dato il relativo successo dei metodi soggettivi.
Per fornire un'IA generativa attraverso LLM che supportino l'ecosistema più ampio dell'IA e la comunità di Roblox, abbiamo bisogno di modelli che siano stati addestrati esclusivamente su set di dati raccolti in modo responsabile e con licenze appropriate. Questi dovrebbero inoltre avere licenze senza restrizioni, in modo che chiunque possa usarli, svilupparli e contribuire a sua volta all'ecosistema. Oggi, gli LLM più potenti sono proprietari o concessi in licenza per forme limitate di uso commerciale, il che impedisce o limita la capacità dei ricercatori di sperimentare con il modello stesso. Al contrario, StarCoder è un modello veramente aperto, creato attraverso una coalizione di ricercatori del settore e del mondo accademico e concesso in licenza senza restrizioni per applicazioni commerciali su qualsiasi scala. StarCoder è addestrato esclusivamente su contenuti raccolti in modo responsabile e con licenze appropriate. Il modello è stato inizialmente addestrato su codice pubblico ed è disponibile una procedura di opt-out per coloro che preferiscono che il proprio codice non venga utilizzato per l'addestramento.
Oggi, StarCoder funziona su 86 diversi linguaggi di programmazione, tra cui Python, C++ e Java. Al momento della pubblicazione dell’articolo, stava superando ogni LLM a codice aperto che supporta più linguaggi ed era persino competitivo con molti dei modelli chiusi e proprietari.
L'LLM StarCoder è un contributo all'ecosistema, ma il nostro obiettivo di ricerca va ben oltre. L'impatto maggiore di questa ricerca è il progresso nella modellazione semantica di modelli multimodali sia oggettivi che soggettivi, inclusi codice, testo, immagini, voce e video, e l'aumento dell'efficienza dell'addestramento attraverso tecniche di trasferimento di dominio. Ci aspettiamo inoltre di acquisire approfondimenti sulla manutenibilità e controllabilità dell'IA generativa per compiti oggettivi come la generazione di codice sorgente. C'è una grande differenza tra un'affascinante dimostrazione di tecnologia emergente e un prodotto sicuro, affidabile ed efficiente che apporta valore alla sua comunità di utenti. Per i nostri modelli di ML, ottimizziamo le prestazioni in termini di ingombro di memoria, risparmio energetico e tempo di esecuzione. Abbiamo anche sviluppato un'infrastruttura robusta, circondato il nucleo dell'IA con software per collegarlo al resto del sistema e sviluppato un sistema senza soluzione di continuità per aggiornamenti frequenti man mano che vengono aggiunte nuove funzionalità.
Riunire gli scienziati e gli ingegneri di Roblox con alcune delle menti più brillanti della comunità scientifica è una componente fondamentale nella nostra ricerca di una tecnologia rivoluzionaria. Siamo orgogliosi di condividere questi primi risultati e invitiamo la comunità di ricerca a collaborare con noi e a sviluppare ulteriormente questi progressi.


