Quebrar barreiras de idioma com um modelo de tradução multilíngue
Imagine descobrir que seu novo amigo na Roblox, uma pessoa com quem você anda conversando e fazendo graça em uma nova experiência está, na verdade, na Coreia... e digitou em coreano esse tempo todo, enquanto você digitava em português, sem nenhum dos dois se dar conta. Graças às nossas novas traduções do chat em tempo real, possibilitamos na Roblox algo que não é nem possível no mundo físico: permitir que pessoas de idiomas diferentes se comuniquem tranquilamente em experiências 3D imersivas. Isso é possível graças ao nosso modelo multilinguístico personalizado, que agora habilita tradução direta entre qualquer combinação dos 16 idiomas suportados no momento (estes 15 idiomas, mais inglês).
Em qualquer experiência com nosso chat de texto de experiência habilitado, gente de países diferentes agora poderá se entender mutuamente, mesmo sem falar o idioma um do outro. A janela do chat traduzirá automaticamente coreano para inglês, ou turco para alemão, e vice-versa, de modo que cada pessoa veja o diálogo no próprio idioma. Estas traduções aparecem em tempo real, com latência de cerca de 100 milissegundos, de modo que a tradução ocorrendo nos bastidores seja quase invisível. Usar IA para automatizar a tradução em tempo real em chat de texto remove barreiras de linguagem e une melhor as pessoas, seja onde elas estiverem no mundo.
Construção de um modelo unificado de tradução
Tradução por IA não é novidade: a maioria do nosso conteúdo em experiências já é traduzida automaticamente. Queremos ir além de meramente traduzir conteúdo estático, porém. Nossa meta era traduzir interações automaticamente, e isso para todos os 16 idiomas implementados na plataforma. Era um objetivo ousado, por dois motivos: Primeiro, não seria só questão de traduzir de um idioma principal (inglês, por exemplo) para outro; queríamos um sistema capaz de traduzir entre qualquer combinação dos 16 idiomas implementados. Segundo, tinha que ser rápido. Rápido o suficiente para ter suporte a conversas via chat em tempo real, ou seja: reduzir a latência para cerca de 100 milissegundos.
Roblox é lar de mais de 70 milhões de usuários diários ativos por todo o mundo e crescendo. Tem gente se comunicando e criando na nossa plataforma, cada uma em seu idioma natal, 24 horas por dia. Traduzir mutuamente cada conversa ocorrendo por cerca de 15 milhões de experiências ativas, tudo em tempo real, é claramente algo quase impossível. Disponibilizar essas traduções ao vivo para milhões de pessoas, todas tendo conversas diferentes em experiências diferentes, tudo ao mesmo tempo, requer uma LLM com tremenda velocidade e precisão. Precisamos de um modelo que esteja atento ao contexto e reconheça o jargão específico da Roblox, incluindo gírias e abreviações (como obby, afk, lol...). Além disso tudo, nosso modelo precisa dar suporte a qualquer combinação das 16 línguas implementadas na Roblox.
Para isso, poderíamos ter construído um modelo único para cada par de idiomas (por exemplo, japonês e espanhol), mas aí precisaríamos de 16x16 modelos; ou seja, 256. Em vez disso, construímos uma LLM de tradução unificada, com base em transformadores, para cuidar de todos os pares de idiomas em um único modelo. É como ter vários aplicativos de tradução, cada qual especializado em um grupo de idiomas similares, todos disponíveis com uma única interface. Considerando uma frase de origem e um idioma-alvo, podemos ativar o "especialista" relevante para gerar as traduções.
Tal arquitetura permite melhor utilização de recursos, já que cada especialista tem uma especialidade diferente, levando a um treinamento e uma inferência mais eficientes, sem sacrificar a qualidade da tradução.
Esta arquitetura torna bem mais eficiente treinar e manter nosso modelo, por alguns motivos. Primeiro, nosso modelo é capaz de aproveitar similaridades linguísticas entre idiomas. Quanto todos os idiomas são treinados juntos, idiomas similares, como espanhol e português, se beneficiam da entrada um do outro durante o treinamento, o que ajuda a melhorar a qualidade da tradução para ambos os idiomas. Também podemos testar e integrar com muito mais facilidade novas pesquisas e avanços de LLMs no nosso sistema conforme isso sai, beneficiando-nos das técnicas mais recentes e avançadas disponíveis. Outro benefício do modelo unificado é o caso em que o idioma de origem não está definido ou foi definido errado, mas o modelo é preciso o suficiente para detectar o idioma correto e traduzir no idioma-alvo. Inclusive, mesmo se o texto de entrada contiver um misto de idiomas, o sistema ainda é capaz de detectar e traduzir no idioma-alvo. Nesses casos, a precisão pode não ser tão alta, mas a mensagem final deve ser razoavelmente compreensível.
Para treinar este modelo unificado, começamos um pré-treinamento em dados open source, além dos nossos próprios dados de tradução em experiência, resultados de tradução de chat rotulados por humanos e frases comuns em chat. Também construímos nosso modelo e métricas de avaliação de tradução para medir a qualidade da tradução A maioria das métricas de qualidade de tradução prontas comparam o resultado da tradução via IA com alguma tradução provada ou de referência, focando em primeiro lugar em averiguar se o resultado é compreensível. Queríamos avaliar a qualidade da tradução, sem um resultado de referência..
Contemplamos a questão de vários aspectos, incluindo precisão (se ocorreram adições, omissões ou erros), fluência (pontuação, ortografia e gramática) e referências incorretas (discrepâncias com o resto do texto). Classificamos esses erros em três níveis de severidade: Tem algum erro crítico, considerável ou mais leve? Para medir a qualidade, construímos um modelo de tradução de máquina e o treinamos em tipos de erro e pontuação rotulados por humanos. Aí refinamos um modelo multilinguístico para prever erros a nível de palavra e calcular uma pontuação com nossos critérios multifacetados. Assim, temos uma compreensão abrangente da qualidade e dos tipos de erros que ocorrem. E podemos estimar a qualidade de uma tradução e detectar erros com o uso de texto de origem e tradução de máquina, sem exigir uma tradução de referência. A partir dos resultados dessa medida de qualidade, podemos melhorar ainda mais a qualidade do nosso modelo de tradução.
Pares de tradução menos comuns (por exemplo, francês para tailandês) são desafiadores, graças à falta de dados de qualidade. Para cobrir essa brecha, aplicamos tradução reversa, onde o conteúdo é retraduzido de volta ao idioma de origem e aí comparado ao texto original para averiguar a precisão. Durante o processo de treinamento, usamos tradução reversa iterativa, em que aplicamos um misto desses dados retraduzidos e supervisionados (rotulados) para ampliar a quantidade de dados de tradução para o modelo usar no aprendizado.
Para ajudar o modelo a entender jargão moderno, pedimos que avaliadores humanos traduzam termos populares para cada idioma e incluímos os dados no treinamento. Vamos continuar a repetir o processo regularmente para manter o sistema atualizado com as gírias atuais.
O modelo de tradução de chat final tem cerca de 1 bilhão de parâmetros. Passar uma tradução por um modelo grande assim é proibitivo em questão de recursos para usar em grande escala e demoraria demais para uma conversa em tempo real, onde latência baixa é essencial para comportar mais de 5.000 chats por segundo. Então, usamos esse modelo de tradução grande em uma abordagem aluno-professor para criar um modelo mais leve, menor. Aplicamos destilação, quantização, compilação de modelo e outras otimizações de serviço para reduzir o tamanho do modelo a menos de 650 milhões de parâmetros e melhorar a eficiência. Além disso, modificamos a API nos bastidores do chat de texto da experiência para mandar tanto a mensagem original quanto a traduzida ao dispositivo da pessoa. Assim, o recipiente pode ver a mensagem tanto no idioma nativo quanto trocar rapidamente para ver a mensagem original, não traduzida, do remetente.
Quando a LLM estava pronta, implementamos um backend para conectar com os servidores do modelo. No backend, aplicamos lógica de tradução de chat adicional e integramos o sistema com os nossos sistemas costumeiros de confiança e segurança. Assim, o texto traduzido recebe o mesmo nível de escrutínio dos demais, de modo a detectar e bloquear palavras ou frases que violem nossas políticas. Segurança e civilidade são fundamentais para tudo o que fazemos na Roblox, então isso era bem importante para dar certo.
Melhorias constantes na precisão
Nos testes, vimos que o novo sistema de tradução gera mais engajamento e maior qualidade da sessão para as pessoas na plataforma. Com base na nossa métrica, o modelo supera APIs comerciais de tradução para o conteúdo da Roblox, indicamos que conseguimos otimizá-lo para como as pessoas se comunicam na Roblox. Estamos animados para conferir como isso melhora a experiência das pessoas na plataforma, possibilitando jogar, comprar, colaborar e botar o assunto em dia com os amigos que falam outro idioma.
Permitir que as pessoas tenham conversas naturais e descomplicadas em seus idiomas nativos nos aproxima do nosso objetivo de conectar um bilhão de pessoas com otimismo e civilidade.
Para melhorar ainda mais a precisão das nossas traduções e proporcionar melhores dados de treinamento ao modelo, pretendemos implementar uma ferramenta que permita às pessoas na plataforma fornecerem feedback das traduções, ajudando a melhorar o sistema ainda mais rápido. Assim, alguém pode nos avisar se vir algo que foi traduzido errado ou até sugerir uma tradução melhor para acrescentarmos aos dados de treinamento e melhorar ainda mais o modelo.
Essas traduções estão disponíveis hoje para todos os 16 idiomas implementados. Mas ainda temos muito pela frente. Planejamos continuar a atualizar nossos modelos com os últimos exemplos de tradução das nossas experiências, além de frases e gírias populares do chat em cada idioma implementado. Além disso, essa arquitetura vai possibilitar treinar o modelo em novos idiomas com relativamente pouco esforço, conforme dados de treinamento suficientes forem disponibilizados nos tais idiomas. Além disso, estamos explorando novos meios de traduzir tudo em várias dimensões automaticamente: texto em imagens, texturas, modelos 3D etc.
E já estamos explorando novas fronteiras, incluindo traduções automáticas para o chat de voz. Imagine um falante de francês no Roblox podendo se comunicar via chat de voz com alguém que só fala russo. Ambos poderiam se entender mutuamente na conversa, inclusive em questão de tom, ritmo e emoção da voz, na língua-natal, com baixa latência. Pode até parecer ficção científica hoje em dia, e vai demorar um pouco para conseguirmos, mas vamos continuar esses investimentos em tradução. Em um futuro até próximo, a Roblox será um local onde gente do mundo todo poderá se comunicar sem dificuldade nem esforço, não só por chat de texto, mas em todas as modalidades possíveis!