Algoritmo Sequence-to-Sequence - Amazon SageMaker

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 Amazon SageMaker Sequence to Sequence é um algoritmo de aprendizado supervisionado em que a entrada é uma sequência de tokens (por exemplo, texto, áudio) e a saída gerada é outra sequência de tokens. Exemplos de aplicativos incluem: tradução automática (insira uma frase de um idioma e preveja qual seria essa frase em outro idioma), resumo de texto (insira uma sequência de palavras mais longa e preveja uma sequência menor de palavras que seja um resumo) speech-to-text (clipes de áudio convertidos em frases de saída em tokens). Recentemente, problemas nesse domínio foram modelados com êxito com redes neurais profundas, que mostram um aumento significativo da performance sobre as metodologias anteriores. O Amazon SageMaker seq2seq usa modelos de redes neurais recorrentes (RNNs) e redes neurais convolucionais (CNN) com atenção como arquiteturas codificador-decodificadoras.

Interface de entrada/saída para o algoritmo seq2seq

Treinamento

SageMaker seq2seq 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 bloco de anotações 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 chamado 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 suporte 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 suporte 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 suporte 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 Bloco de anotações de amostra para o seq2seq.

Recomendação de instâncias do EC2 para o algoritmo seq2seq

O algoritmo Amazon SageMaker seq2seq só é compatível com 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 suporte para famílias de instâncias de GPU P2, P3, G4dn e G5.

Bloco de anotações de amostra para o seq2seq

Para ver um exemplo de caderno que mostra como usar o algoritmo SageMaker Sequence to Sequence para treinar um modelo de tradução inglês-alemão, consulte Exemplo de tradução automática em inglês-alemão usando Seq2Seq. SageMaker Para obter instruções sobre como criar e acessar instâncias do notebook Jupyter que você pode usar para executar o exemplo SageMaker, consulte. Instâncias do Amazon SageMaker Notebook Depois de criar uma instância do notebook e abri-la, selecione a guia SageMakerExemplos para ver uma lista de todas as SageMaker amostras. Os blocos de anotações 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 bloco de anotações, clique em sua guia Uso e selecione Criar cópia.