Design clássico · Pleno
Google Translate
Projeto de entrevista clássico. Pontos centrais: encoder-decoder, BPE/SentencePiece, BLEU e detecção de idioma.
Resposta curta
Projeto de entrevista clássico. Pontos centrais: encoder-decoder, BPE/SentencePiece, BLEU e detecção de idioma. A tradução automática baseada em frases (PBMT) quebra a frase de entrada em palavras e trechos que são traduzidos em grande parte de forma independente. A tradução neural (NMT) trata a frase de entrada inteira como uma unidade de tradução.
01 · CONTEXTO
Da tradução por frases à tradução neural
A tradução automática baseada em frases (PBMT) quebra a frase de entrada em palavras e trechos que são traduzidos em grande parte de forma independente. A tradução neural (NMT) trata a frase de entrada inteira como uma unidade de tradução.
O NMT enfrentava obstáculos para produção: segundo o blog de pesquisa do Google, ele não era rápido nem preciso o bastante para um serviço como o Google Translate. O relatório técnico lista três fraquezas inerentes. Uma é o treino e a inferência mais lentos; outra é a baixa robustez com palavras raras; a terceira é, às vezes, não traduzir todas as palavras da frase de origem.
Em produção, os apps web e móvel do Google Translate passaram a usar o GNMT em todas as traduções automáticas do chinês para o inglês, cerca de 18 milhões por dia. Esse par era um entre mais de 10.000 pares de idiomas do serviço. O blog atribui a viabilidade ao TensorFlow e às TPUs, que deram poder de cálculo suficiente dentro dos requisitos rígidos de latência do produto. O relatório técnico afirma ainda que a implementação não exige ajustes específicos por idioma.
Tratar a tradução como um problema de sistema de aprendizado de máquina é olhar juntos o modelo, a avaliação e o serviço que responde rápido.
| Fraqueza do NMT | Resposta do GNMT |
|---|---|
| Treino e inferência lentos | Inferência em aritmética de baixa precisão, acelerada por hardware especial |
| Palavras raras | Quebrar as palavras em wordpieces |
| Palavras da origem sem tradução | Penalidade de cobertura na busca em feixe |
02 · O MODELO
Codificador, atenção e decodificador
O GNMT tem três componentes: uma rede codificadora, uma decodificadora e uma rede de atenção. O modelo é uma rede LSTM profunda com 8 camadas de codificador e 8 de decodificador, usando conexões residuais e conexões de atenção do decodificador para o codificador. A atenção liga a camada de baixo do decodificador à camada de cima do codificador, para melhorar o paralelismo e reduzir o tempo de treino.
Tradução é um problema de vocabulário aberto, com nomes, números e datas. Para tratar isso, o GNMT quebra cada palavra em wordpieces por meio de um modelo treinado e, na saída, converte a sequência de wordpieces de volta em palavras. Os wordpieces equilibram a flexibilidade de caracteres e a eficiência de palavras, e um vocabulário de 8 mil a 32 mil wordpieces deu boa acurácia em BLEU e decodificação rápida.
Usa-se um único modelo de wordpieces para o idioma de origem e o de destino. Assim, a mesma cadeia é segmentada do mesmo jeito nos dois lados, tornando o aprendizado da cópia mais fácil.
Antes de entrar na rede, o texto de origem é quebrado em wordpieces por um modelo treinado.
O codificador transforma a frase de origem em uma lista de vetores, um por símbolo de entrada.
A atenção liga codificador e decodificador e deixa o decodificador focar em regiões diferentes da origem a cada palavra gerada.
O decodificador produz a saída um símbolo por vez, até gerar o símbolo de fim de frase.
A busca em feixe procura a sequência de maior pontuação e a penalidade de cobertura favorece traduções que cobrem toda a origem.
A sequência de wordpieces gerada é então convertida de volta em palavras.
03 · DECODIFICAÇÃO
Escolher a melhor saída
A busca em feixe procura a sequência que maximiza uma função de pontuação. Sem normalização de comprimento, ela tende a favorecer resultados mais curtos em média. A penalidade de cobertura favorece traduções que cobrem toda a frase de origem, segundo o módulo de atenção.
Para melhorar a vazão, dá para agrupar muitas frases de comprimento parecido num mesmo lote e decodificá-las em paralelo, aproveitando hardware otimizado para paralelismo.
04 · PRODUÇÃO
Treinar e servir dentro do orçamento de latência
No treino, o sistema segue o paradigma clássico de paralelismo de dados, com 12 réplicas rodando em paralelo em máquinas separadas. Cada réplica do modelo é particionada em 8 partes, colocadas em 8 GPUs que costumam ficar numa mesma máquina.
Na inferência, usar aritmética de precisão reduzida pode diminuir bastante o custo, e no GNMT as multiplicações de matrizes rodam em inteiros de 8 bits. Nas medições do artigo, decodificar na TPU teve perda mínima em log-perplexidade e nenhuma em BLEU, e foi 3,4 vezes mais rápido que na CPU.
A CPU, por sua vez, foi 2,3 vezes mais rápida que a GPU. Os autores citam, entre os motivos, que a busca em feixe força uma transferência de dados não trivial entre o host e a GPU a cada passo de decodificação.
O diagrama começa pelo aplicativo ou site e pelo balanceador de carga na entrada do serviço.
Atrás do balanceador aparecem o serviço de tradução, o host de decodificação e o acelerador TPU.
Na decodificação em TPU, a consulta de embeddings e o módulo de atenção ficam na CPU, e as demais operações quantizadas são enviadas à TPU.
As multiplicações de matrizes, que são as operações caras, rodam em inteiros de 8 bits.
Nas medições do artigo, a TPU decodificou 3,4 vezes mais rápido que a CPU, com perda mínima de qualidade.
Os autores usam TPUs para servir o tráfego de produção e CPUs para avaliar o modelo durante o treino.
05 · QUALIDADE E LIMITES
Medir tradução e reconhecer o que falha
O BLEU não captura toda a qualidade de uma tradução, e por isso os autores também usam avaliação lado a lado com pessoas. Avaliadores fluentes nos dois idiomas costumam captar a qualidade melhor que o BLEU. No blog, as notas lado a lado vão de 0 a 6.
| Forma de avaliar | O que dizem as fontes |
|---|---|
| BLEU | Não captura toda a qualidade de uma tradução |
| Comparação lado a lado | Avaliadores fluentes nos dois idiomas costumam captar melhor a qualidade |
O refinamento por aprendizado por reforço melhorou o BLEU, mas quase não melhorou a impressão humana de qualidade.
O blog relata redução de erros de tradução de mais de 55% a 85% em vários pares de idiomas importantes, medida em frases amostradas da Wikipedia e de sites de notícias com avaliadores humanos bilíngues. Mesmo assim, o GNMT ainda comete erros que um tradutor humano não cometeria, como omitir palavras e errar nomes próprios ou termos raros, e traduz frases isoladas sem considerar o contexto do parágrafo ou da página.
Perguntas frequentes
O que é Google Translate?
Projeto de entrevista clássico. Pontos centrais: encoder-decoder, BPE/SentencePiece, BLEU e detecção de idioma.
O que o design de Google Translate cobre?
Ele está organizado nestas seções: Da tradução por frases à tradução neural, Codificador, atenção e decodificador, Escolher a melhor saída, Treinar e servir dentro do orçamento de latência e Medir tradução e reconhecer o que falha.
Quanto tempo leva Google Translate e qual é o nível?
Leva cerca de 14 minutos para ler e tem nível Pleno.
Agora projete você mesmo
Rode este caso como uma entrevista na escola de System Design: você toma as decisões, o tutor as questiona e você vê a nota do seu desenho.