Algoritmo Sequence-to-Sequence - SageMaker IA da Amazon

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Algoritmo Sequence-to-Sequence

O algoritmo de sequência para sequência (seq2seq) do Amazon SageMaker AI é um algoritmo de aprendizado supervisionado em que a entrada é uma sequência de tokens (por exemplo, texto e áudio) e a saída gerada é outra sequência de tokens. As aplicações de exemplo incluem: tradução de máquina (entrada de uma frase em um idioma e previsão de como ela seria em outro idioma), resumo de texto (entrada de uma string de palavras longa e previsão de um string mais curta, como resumo), fala para texto (clipes de áudio convertidos em frases, em tokens). Recentemente, problemas nesse domínio foram modelados com êxito com redes neurais profundas, que mostram um aumento significativo do desempenho sobre as metodologias anteriores. O seq2seq do Amazon SageMaker AI usa modelos de redes neurais recorrentes (RNNs) e rede neural convolucional (CNN) cujas arquiteturas de codificador e decodificador são de mecanismo de atenção.

Interface de entrada/saída para o algoritmo seq2seq

Treinamento

O seq2seq do SageMaker AI espera dados no formato RecordIO-Protobuf. No entanto, os tokens são esperados como números inteiros, e não como pontos flutuantes, como é geralmente o caso.

Um script para converter dados de arquivos de texto indexados para o formato protobuf acompanha o caderno de exemplo do seq2seq. Em geral, ele empacota os dados em tensores de inteiros de 32 bits e gera os arquivos de vocabulário necessários para cálculo de métrica e inferência.

Após o pré-processamento, o algoritmo pode ser invocado para treinamento. O algoritmo espera três canais:

  • train: deve conter os dados de treinamento (por exemplo, o arquivo train.rec gerado pelo script de pré-processamento).

  • validation: deve conter os dados de validação (por exemplo, o arquivo val.rec gerado pelo script de pré-processamento).

  • vocab: deve conter os dois arquivos de vocabulário (vocab.src.json e vocab.trg.json)

Se o algoritmo não encontrar dados em nenhum desses três canais, o treinamento resultará em um erro.

Inferência

Para endpoints hospedados, a inferência oferece apoio para dois formatos de dados. Para executar inferência usando tokens de texto separados por espaço, use o formato application/json. Caso contrário, use o formato recordio-protobuf para trabalhar com os dados codificados por inteiros. Os dois modos são oferecem apoio ao agrupamento de dados de entrada em lotes. O formato application/json também permite que você visualize a matriz de atenção.

  • application/json: espera a entrada no formato JSON e retorna a saída no mesmo formato. Os dois cabeçalhos Accept e Content-Type devem ser application/json. Cada sequência deve ser uma string com tokens separados por espaço em branco. Esse formato é recomendado quando o número de sequências de origem no lote é pequeno. Também é compatível com as seguintes opções de configuração adicionais:

    configuration: {attention_matrix: true}: retorna a matriz de atenção para a sequência de entrada específica.

  • application/x-recordio-protobuf: espera a entrada no formato recordio-protobuf e retorna a saída no formato recordio-protobuf format. Os dois cabeçalhos Accept e Content-Type devem ser applications/x-recordio-protobuf. Para esse formato, as sequências de origem devem ser convertidas em uma lista de inteiros para codificação protobuf subsequente. Esse formato é recomendado para inferência em massa.

Para transformação em lote, a inferência oferece apoio para o formato de linhas JSON. A transformação em lote espera a entrada no formato JSON Lines e retorna a saída no formato de linhas JSON. Os dois cabeçalhos Accept e Content-Type devem ser application/jsonlines. O formato da entrada é o seguinte:

content-type: application/jsonlines {"source": "source_sequence_0"} {"source": "source_sequence_1"}

O formato da resposta é o seguinte:

accept: application/jsonlines {"target": "predicted_sequence_0"} {"target": "predicted_sequence_1"}

Para obter detalhes adicionais sobre como serializar e desserializar as entradas e as saídas para formatos específicos de inferência, consulte os Cadernos de exemplo Sequence-to-Sequence.

Recomendações de instâncias do EC2 para o algoritmo Sequence-to-Sequence

O algoritmo seq2seq do Amazon SageMaker AI só permite tipos de instância de GPU e só pode ser treinado em uma única máquina. No entanto, você pode utilizar instâncias com várias GPUs. O algoritmo seq2seq oferece apoio para famílias de instâncias de GPU P2, P3, G4dn e G5.

Cadernos de exemplo Sequence-to-Sequence

Para ver um exemplo de caderno que mostra como usar o algoritmo de sequência para sequência do SageMaker AI para treinar um modelo de tradução do inglês para o alemão, consulte Machine Translation English-German Example Using SageMaker AI Seq2Seq. Para obter instruções sobre como criar e acessar instâncias do caderno Jupyter que você pode utilizar para executar o exemplo no SageMaker AI, consulte Instâncias de SageMaker notebook da Amazon. Depois de criar uma instância de caderno e abri-la, selecione a guia Exemplos do SageMaker AI para ver uma lista de todas os exemplos do SageMaker AI. Os cadernos de exemplo de modelagem de tópicos que usam os algoritmos NTM estão localizados na seção Introdução a algoritmos da Amazon. Para abrir um caderno, clique em sua guia Uso e selecione Criar cópia.