Algoritmo de secuencia a secuencia - Amazon SageMaker

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Algoritmo de secuencia a secuencia

Amazon SageMaker Sequence to Sequence es un algoritmo de aprendizaje supervisado en el que la entrada es una secuencia de tokens (por ejemplo, texto, audio) y la salida generada es otra secuencia de tokens. Entre los ejemplos de aplicaciones se incluyen los siguientes: traducción automática (entrada de una frase de un idioma y predicción de cómo sería esa frase en otro idioma), resúmenes de textos (entrada de una cadena más grande de palabras y predicción de una cadena más corta de las palabras que son un resumen), de voz a texto (clips de audio convertidos en frases de salida en tokens). Recientemente, se han diseñado correctamente problemas en este dominio con redes neuronales profundas que muestran un importante aumento del rendimiento a través de las metodologías anteriores. Amazon SageMaker seq2seq usa los modelos Recurrent Neural Networks (RNN) y Convolutional Neural Network (CNN) como arquitecturas codificador-decodificador.

Interfaz de entrada/salida para el algoritmo de secuencia a secuencia

Capacitación

SageMaker seq2seq espera los datos en formato RecordIO-Protobuf. Sin embargo, los tokens se esperan como enteros, no como puntos flotantes, como suele ser el caso.

Se incluye un script para convertir datos desde archivos de texto tokenizados al formato protobuf en el bloc de notas de muestra de seq2seq. Por lo general, empaqueta los datos en tensores de números enteros de 32 bits y genera los archivos de vocabulario necesarios que se precisan para la inferencia y el cálculo de métricas.

Una vez realizado el procesamiento previo, se puede invocar el algoritmo para la capacitación. El algoritmo espera tres canales:

  • train: debe contener los datos de capacitación (por ejemplo, el archivo train.rec generado por el script de preprocesamiento).

  • validation: debe contener los datos de validación (por ejemplo, el archivo val.rec generado por el script de preprocesamiento).

  • vocab: debe contener dos archivos de vocabulario (vocab.src.json y vocab.trg.json).

Si el algoritmo no encuentra datos en alguno de estos tres canales, se producirá un error en los resultados de capacitación.

Inferencia

Para los puntos de enlace alojados, la inferencia admite dos formatos de datos. Para realizar la inferencia mediante tokens de texto separados por espacios, utilice el formato application/json. De lo contrario, utilice el formato recordio-protobuf para trabajar con los datos codificados de números enteros. Ambos modos admiten la creación de lotes de datos de entrada. El formato application/json también le permite visualizar la matriz de atención.

  • application/json: espera la entrada en formato JSON y devuelve la salida en formato JSON. Ambos tipos de aceptación y contenido deben ser application/json. Se espera que las secuencias sean una cadena con tokens separados por espacios en blanco. Se recomienda este formato cuando el número de secuencias de origen en el lote es pequeño. También admite las siguientes opciones de configuración adicionales:

    configuration: {attention_matrix: true}: devuelve la matriz de atención para una secuencia de entrada determinada.

  • application/x-recordio-protobuf: espera la entrada en formato recordio-protobuf y devuelve la salida en recordio-protobuf format. Ambos tipos de aceptación y contenido deben ser applications/x-recordio-protobuf. Para este formato, las secuencias de origen deben convertirse en una lista de números enteros para la codificación protobuf posterior. Este formato es el recomendado para la inferencia masiva.

Para la transformación por lotes, la interfaz admite el formato de líneas JSON. La transformación por lotes espera la entrada en formato de líneas JSON y devuelve la salida en formato de líneas JSON. Ambos tipos de aceptación y contenido deben ser application/jsonlines. El formato para la entrada es el siguiente:

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

El formato para la respuesta es el siguiente:

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

Para obtener detalles adicionales sobre cómo serializar y deserializar las entradas y salidas en formatos específicos para la referencia, consulte Cuadernos de ejemplo de secuencia a secuencia.

Recomendación de la instancia EC2 para el algoritmo de secuencia a secuencia

El algoritmo Amazon SageMaker seq2seq solo es compatible con los tipos de instancias de GPU y solo se puede entrenar en una sola máquina. Sin embargo, puede usar instancias con varias GPU. El algoritmo seq2seq es compatible con las familias de instancias de GPU P2, P3, G4dn y G5.

Cuadernos de ejemplo de secuencia a secuencia

Si desea ver un cuaderno de muestra en el que se vea cómo usar el algoritmo SageMaker Sequence to Sequence para entrenar un modelo de traducción inglés-alemán, consulte Machine Translation English-German Example Using SageMaker Seq2Seq. Para obtener instrucciones sobre cómo crear instancias de cuadernos de Jupyter que pueda utilizar para ejecutar el ejemplo en SageMaker, consulte Instancias de Amazon SageMaker Notebook. Una vez que haya creado una instancia de cuaderno y la haya abierto, seleccione la pestaña Ejemplos de SageMaker para ver una lista de todas las muestras de SageMaker. Los blocs de notas de modelado de ejemplos que utilizan los algoritmos NTM se encuentran en la sección de introducción a algoritmos de Amazon. Para abrir un bloc de notas, haga clic en la pestaña Use (Usar) y seleccione Create copy (Crear copia).