Skip to content

Abbattere le barriere linguistiche con un modello di traduzione multilingue

Immagina di scoprire che il tuo nuovo amico di Roblox, una persona con cui hai parlato e scherzato in una nuova esperienza, si trova in realtà in Corea e ha scritto in coreano per tutto il tempo mentre tu scrivevi in italiano, senza che nessuno dei due se ne accorgesse. Grazie alle nostre nuove traduzioni con IA in tempo reale, abbiamo reso possibile su Roblox qualcosa che non è possibile nemmeno nel mondo reale: consentire a persone che parlano lingue diverse di comunicare senza problemi tra loro nelle nostre esperienze immersive in 3D. Ciò è possibile grazie al nostro modello multilingue personalizzato, che ora offre una traduzione diretta tra qualsiasi combinazione delle 16 lingue attualmente supportate (queste 15 lingue e la lingua inglese).

In qualsiasi esperienza in cui sia attivo il servizio di chat testuale in esperienza, persone provenienti da paesi diversi possono ora essere comprese da chi non parla la loro lingua. La finestra della chat mostrerà automaticamente il coreano tradotto in inglese o il turco tradotto in tedesco e viceversa, in modo che ciascuno veda la conversazione nella propria lingua. Queste traduzioni sono mostrate in tempo reale, con una latenza di circa 100 millisecondi, quindi la traduzione che avviene in background è quasi invisibile. L'uso dell'IA per automatizzare le traduzioni in tempo reale nelle chat testuali elimina le barriere linguistiche e avvicina un numero maggiore di persone, ovunque si trovino nel mondo.

Costruzione di un modello di traduzione unificato

La traduzione tramite IA non è nulla di nuovo: la maggior parte dei nostri contenuti in esperienza viene già tradotta automaticamente. Volevamo spingerci oltre la traduzione di contenuti statici nelle esperienze. Il nostro obiettivo era tradurre automaticamente le interazioni, e volevamo farlo per tutte le 16 lingue disponibili sulla piattaforma. Si trattava di un obiettivo audace per due motivi: Innanzitutto, non si trattava solo di tradurre da una lingua principale (ovvero l'inglese) a un'altra: volevamo creare un sistema che traducesse tra qualsiasi combinazione delle 16 lingue che supportiamo. In secondo luogo, tale sistema doveva essere veloce. Abbastanza veloce da supportare conversazioni via chat in tempo reale, il che significava dover ridurre la latenza a circa 100 millisecondi.

Ogni giorno, Roblox ha più di 70 milioni di utenti attivi da tutto il mondo e i numeri continuano a crescere. Le persone comunicano e creano sulla nostra piattaforma, ognuna nella propria lingua madre, 24 ore su 24. Tradurre manualmente ogni conversazione in più di 15 milioni di esperienze attive, il tutto in tempo reale, non è ovviamente possibile. Portare queste traduzioni dal vivo a milioni di persone, tutte impegnate contemporaneamente in conversazioni diverse in esperienze diverse, richiede un LLM estremamente veloce e preciso. È necessario un modello in grado di riconoscere il contesto e il linguaggio specifico di Roblox, compresi lo slang e le abbreviazioni (ad esempio obby, afk o lol). Inoltre, il nostro modello deve supportare qualsiasi combinazione delle 16 lingue attualmente supportate da Roblox.

A tale scopo, avremmo potuto costruire un modello unico per ogni coppia di lingue (ad esempio giapponese e spagnolo), ma ciò avrebbe richiesto 16x16, ovvero 256 modelli diversi. Invece abbiamo costruito un LLM di traduzione unificato a trasformatori per gestire tutte le coppie di lingue in un unico modello. È come avere più app di traduzione, ognuna specializzata in un gruppo di lingue simili, tutte disponibili in un'unica interfaccia. Date una frase di partenza e una lingua di arrivo, possiamo attivare il giusto "esperto" per generare le traduzioni.

Questa struttura garantisce un utilizzo migliore delle risorse, dato che ogni esperto ha una diversa specializzazione, il che comporta un apprendimento e un'inferenza più efficienti senza sacrificare la qualità della traduzione.

Spiegazione del processo di inferenza I messaggi originali, insieme alle lingue di partenza e di arrivo, passano attraverso un RCC. Prima di raggiungere il back-end, controlliamo la cache per vedere se esistono già traduzioni per questa richiesta. Nel caso non ve ne siano, la richiesta passa al back-end e al server del modello con batching dinamico. Abbiamo aggiunto un livello di cache incorporata tra i codificatori e i decodificatori per migliorare ulteriormente l'efficienza della traduzione in più lingue di destinazione.

Questa struttura rende più efficiente addestrare e mantenere il nostro modello per diversi motivi. Per prima cosa, il nostro modello è in grado di sfruttare le somiglianze linguistiche tra le lingue. Quando tutte le lingue vengono addestrate insieme, le lingue simili, come lo spagnolo e il portoghese, traggono vantaggio dai reciproci input durante l'addestramento, il che contribuisce a migliorare la qualità della traduzione per entrambe. Inoltre, possiamo testare e integrare molto più facilmente nel nostro sistema le nuove ricerche e i progressi nel campo degli LLM man mano che vengono rilasciati, per beneficiare delle tecnologie più recenti e più avanzate disponibili. Un altro vantaggio di questo modello unificato riguarda i casi in cui la lingua di partenza non è impostata o è impostata in modo errato e il modello è abbastanza preciso da riuscire a rilevare la lingua di partenza corretta e a tradurre in quella di arrivo. Infatti, anche se l'input contiene più lingue, il sistema è in grado di rilevare e tradurre nella lingua di arrivo. In questi casi, l'accuratezza potrebbe non essere altrettanto elevata, ma il messaggio finale sarà sufficientemente comprensibile.

Per addestrare questo modello unificato, abbiamo iniziato con un preaddestramento sui dati open source disponibili, nonché sui nostri dati di traduzione in esperienza, su risultati della traduzione di chat etichettati manualmente e su frasi e termini comuni delle chat. Abbiamo anche creato la nostra metrica e il nostro modello di valutazione della traduzione per misurare la qualità delle traduzioni. La maggior parte delle metriche standard per la qualità della traduzione confrontano il risultato della traduzione IA con una traduzione di base o di riferimento e si focalizzano principalmente sulla comprensibilità della traduzione. Noi volevamo valutare la qualità della traduzione senza una traduzione di base.

La valutazione avviene sotto molteplici aspetti, tra cui l'accuratezza (se ci sono aggiunte, omissioni o traduzioni errate), la scorrevolezza (punteggiatura, ortografia e grammatica) e i riferimenti errati (discrepanze con il resto del testo). Questi errori vengono classificati in livelli di gravità: Si tratta di un errore critico, grave o lieve? Per valutare la qualità, abbiamo costruito un modello ML e lo abbiamo addestrato su tipi di errori e punteggi etichettati manualmente. Dopodiché abbiamo perfezionato un modello linguistico multilingue per prevedere i tipi e gli errori a livello di parola e per calcolare un punteggio in base ai nostri criteri multidimensionali. Questo ci permette di avere una visione completa della qualità e dei tipi di errori che si verificano. In questo modo possiamo stimare la qualità della traduzione e identificare gli errori attraverso il testo di partenza e le traduzioni automatiche, senza bisogno di una traduzione di base. Grazie ai risultati di questa prova di qualità, possiamo migliorare ulteriormente la qualità del nostro modello di traduzione.

Con il testo di partenza e il risultato della traduzione automatica, possiamo stimare la qualità della traduzione automatica senza una traduzione di riferimento, utilizzando il nostro apposito modello interno. Questo modello offre una stima della qualità sotto diversi aspetti e classifica gli errori in critici, gravi o lievi.

Le combinazioni di traduzione meno comuni (ad esempio, dal francese al tailandese) sono più complesse per la mancanza di dati di alta qualità. Per colmare questa lacuna, abbiamo applicato la retro-traduzione, attraverso cui il contenuto viene ritradotto nella lingua originale e poi confrontato con il testo di partenza per verificarne l'accuratezza. Durante il processo di addestramento, abbiamo usato la retro-traduzione iterativa, che consiste nell'utilizzare un mix strategico di questi dati retro-tradotti e di dati supervisionati (etichettati) per espandere la quantità di dati di traduzione su cui il modello può apprendere.

Spiegazione del metodo di addestramento del modello. Durante l'addestramento del modello vengono utilizzati sia dati paralleli che dati di retro-traduzione. Una volta addestrato il modello docente, si applicano la distillazione e altre tecniche di ottimizzazione per ridurre le dimensioni del modello e migliorare l'efficienza del servizio.

Per aiutare il modello a comprendere lo slang moderno, è stato chiesto a valutatori umani di tradurre termini popolari e di tendenza per ciascuna lingua e le traduzioni sono state incluse nei dati di addestramento. Continueremo a ripetere questo processo regolarmente per mantenere il sistema aggiornato sui nuovi slang.

Il risultato è un modello di traduzione della chat con circa 1 miliardo di parametri. Tradurre con un modello di queste dimensioni comporta un impiego proibitivo di risorse e richiederebbe troppo tempo per una conversazione in tempo reale, dove è fondamentale una bassa latenza per supportare più di 5.000 chat al secondo. Pertanto, abbiamo utilizzato questo ampio modello di traduzione in un approccio studente-docente per costruire un modello più piccolo e leggero. Abbiamo applicato distillazione, quantizzazione, compilazione del modello e altre ottimizzazioni per ridurre le dimensioni del modello a meno di 650 milioni di parametri e migliorare l'efficienza del servizio. Abbiamo inoltre modificato l'API alla base della chat testuale in esperienza, in modo da inviare al dispositivo della persona sia i messaggi originali che quelli tradotti. In questo modo il destinatario può vedere il messaggio nella sua lingua madre o visualizzare subito il messaggio originale del mittente non tradotto.

Una volta ultimato l'LLM finale, abbiamo implementato un back-end per la connessione ai server del modello. Nel back-end applichiamo una logica aggiuntiva di traduzione della chat e integriamo nel sistema i nostri consueti meccanismi di affidabilità e sicurezza. Ciò fa sì che il testo tradotto riceva lo stesso grado di controllo degli altri testi, in modo da individuare e bloccare le parole o le frasi che violano le nostre politiche. La sicurezza e la civiltà sono alla base di tutto ciò che facciamo su Roblox, quindi questo era un pezzo del puzzle molto importante.

Un miglioramento continuo dell'accuratezza

Durante i test, abbiamo notato che questo nuovo sistema di traduzione aumenta il coinvolgimento e la qualità delle sessioni per gli utenti della nostra piattaforma. In base alle nostre metriche, il nostro modello è superiore alle API di traduzione commerciali sui contenuti di Roblox, il che indica che siamo riusciti a ottimizzare la comunicazione su Roblox. Siamo entusiasti di vedere quanto questo migliorerà l'esperienza degli utenti sulla piattaforma, permettendo di giocare, fare acquisti, collaborare o semplicemente ritrovarsi con amici che parlano una lingua diversa.

Consentire alle persone di sostenere conversazioni in modo naturale e senza intoppi ci avvicina al nostro obiettivo di connettere un miliardo di persone tramite l'ottimismo e la civiltà.

Per migliorare ulteriormente l'accuratezza delle nostre traduzioni e fornire al nostro modello dati di addestramento migliori, vogliamo rilasciare uno strumento che consenta agli utenti di fornire un feedback sulle traduzioni e aiutare il sistema a migliorare ancor più rapidamente. Questo permetterebbe di segnalare una traduzione errata e perfino di suggerire una traduzione migliore da aggiungere ai dati di addestramento per migliorare ulteriormente il modello.

Oggi queste traduzioni sono disponibili per tutte le 16 lingue supportate, ma non è finita qui. Continueremo ad aggiornare i nostri modelli con gli ultimi esempi di traduzione tratti dalle nostre esperienze, oltre che con le frasi delle chat più popolari e le più recenti frasi di slang in tutte le lingue supportate. Inoltre, questa struttura consentirà di addestrare il modello su nuove lingue con relativamente poco sforzo, man mano che saranno disponibili dati di addestramento sufficienti per quelle lingue. Per il futuro, stiamo esplorando modi per tradurre automaticamente ogni cosa in più dimensioni: testo su immagini, texture, modelli 3D, ecc.

Stiamo anche esplorando nuove frontiere, tra cui la traduzione automatica della chat vocale. Immaginiamo che un francofono su Roblox possa chattare vocalmente con qualcuno che parla solo russo. Entrambi potrebbero parlare e capirsi l'un l'altro, perfino nel tono, nel ritmo e nelle emozioni della loro voce, nella loro lingua e con una latenza bassa. Oggi può sembrare fantascienza e ci vorrà del tempo per raggiungere questo obiettivo, ma continueremo a fare passi avanti nella traduzione. In un futuro non troppo lontano, Roblox sarà un luogo in cui persone da tutto il mondo potranno comunicare facilmente e senza sforzo non solo tramite la chat testuale, ma in ogni modalità disponibile!