BlazingText algoritmo - 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.

BlazingText algoritmo

El SageMaker BlazingText algoritmo de Amazon proporciona implementaciones altamente optimizadas de los algoritmos Word2vec y de clasificación de texto. El algoritmo Word2vec es útil para muchas tareas de procesamiento de lenguaje natural (NLP) posteriores, como por ejemplo, análisis del sentimiento de reconocimiento de entidad nombrada, traducción automática, etc. La clasificación de texto es una tarea importante para las aplicaciones que realizan búsquedas web, recuperación de información, funciones de clasificación y clasificación de documentos.

El algoritmo Word2vec asigna palabras a vectores distribuidos de alta calidad. La representación vectorial resultante de una palabra se denomina una incrustación de palabra. Las palabras similares desde el punto de vista semántico corresponden a vectores que se acercan entre sí. De esta forma, las incrustaciones de palabras capturan relaciones semánticas entre palabras.

Muchas aplicaciones de procesamiento de lenguaje natural (NLP) aprenden incrustaciones de palabras mediante la capacitación con grandes colecciones de documentos. Estas representaciones vectoriales con capacitación previa proporcionan información sobre semántica y distribuciones de palabras que normalmente mejora la capacidad de generalización de otros modelos que se capacitan posteriormente en una cantidad de datos más limitada. La mayoría de las implementaciones del algoritmo Word2vec está optimizada para arquitecturas de CPU de varios núcleos. Esto dificulta el escalado de conjuntos de datos de gran tamaño.

Con el BlazingText algoritmo, puede escalar fácilmente grandes conjuntos de datos. Al igual que Word2vec, proporciona las arquitecturas de formación continua bag-of-words (CBOW) y Skip-gram. BlazingTextLa implementación del algoritmo de clasificación de texto supervisado de varias clases y etiquetas amplía el clasificador de texto FastText para utilizar la aceleración de la GPU con núcleos CUDA personalizados. Puede capacitar un modelo en más de mil millones de palabras en un par de minutos mediante una CPU de varios núcleos o una GPU. Además, se consigue un rendimiento similar al de los algoritmos de clasificación de texto de aprendizaje profundo state-of-the-art .

El BlazingText algoritmo no es paralelizable. Para obtener más información sobre los parámetros relacionados con el entrenamiento, consulte Rutas de registro de Docker para algoritmos integrados. SageMaker

Los SageMaker BlazingText algoritmos ofrecen las siguientes funciones:

  • Capacitación acelerada del clasificador de texto fastText en CPU de varios núcleos o una GPU y Word2Vec en GPU que usan kernels CUDA de alto nivel de optimización. Para obtener más información, consulte BlazingText: Escalar y acelerar Word2Vec con varias GPU.

  • Enriched Word Vectors with Subword Information mediante el aprendizaje de las representaciones vectoriales para n-gramas de caracteres. Este enfoque permite generar vectores significativos para palabras out-of-vocabulary (OOV) BlazingText al representar sus vectores como la suma de los vectores de n-gramas (subpalabras) de caracteres.

  • Un mode batch_skipgram para el algoritmo Word2Vec que permite una computación distribuida y una capacitación más rápidas en varios nodos de CPU. El mode (modo) batch_skipgram crea minilotes mediante la estrategia de uso compartido de muestra negativa para convertir operaciones BLAS de nivel 1 en operaciones BLAS de nivel 3. Esto utiliza de manera eficiente las instrucciones de multiplicación-adición de las arquitecturas modernas. Para obtener más información, consulte Paralelización de Word2Vec en la memoria compartida y distribuida.

En resumen, los siguientes modos son compatibles con distintos tipos de instancias BlazingText :

Modos

Word2Vec

(Aprendizaje no supervisado)

Clasificación de textos

(Aprendizaje supervisado)

Instancia de CPU individual

cbow

Skip-gram

Batch Skip-gram

supervised

Instancia de GPU individual (con 1 o más GPU)

cbow

Skip-gram

supervised con una GPU

Varias instancias de CPU

Batch Skip-gram Ninguna

Para obtener más información sobre las matemáticas subyacentes BlazingText, consulte BlazingText: Escalar y acelerar Word2Vec con varias GPU.

Interfaz de entrada/salida para el algoritmo BlazingText

El BlazingText algoritmo espera un único archivo de texto preprocesado con fichas separadas por espacios. Cada línea del archivo debe contener una sola frase. Si necesita capacitar en varios archivos de texto, concaténelos en un archivo y cargue el archivo en el canal correspondiente.

Entrenamiento y validación del formato de datos

Entrenamiento y validación del formato de datos para el algoritmo Word2Vec

Para la capacitación de Word2Vec, cargue el archivo bajo el canal train (capacitar). No se admite ningún otro canal. El archivo debe contener una frase de capacitación en cada línea.

Entrenamiento y validación del formato de datos para el algoritmo de clasificación de textos

Para el modo supervisado puede capacitar con el modo de archivo o con el formato de texto de manifiesto aumentado.

Capacitación con modo de archivo

Para el modo supervised, el archivo de capacitación/validación debe contener una frase de capacitación por línea junto con las etiquetas. Las etiquetas son palabras que contienen el prefijo de la cadena __label__. A continuación se muestra un ejemplo de archivo de capacitación/validación:

__label__4 linux ready for prime time , intel says , despite all the linux hype , the open-source movement has yet to make a huge splash in the desktop market . that may be about to change , thanks to chipmaking giant intel corp . __label__2 bowled by the slower one again , kolkata , november 14 the past caught up with sourav ganguly as the indian skippers return to international cricket was short lived .
nota

El orden de las etiquetas dentro de la frase no importa.

Cargue el archivo de capacitación bajo el canal de capacitación y, de forma opcional, cargue el archivo de validación bajo el canal de validación.

Capacitación con formato de texto de manifiesto aumentado

El modo supervisado para instancias de CPU también admite el formato de manifiesto aumentado, lo que le permite hacer el entrenamiento en modo de canalización sin necesidad de crear archivos RecordIO. Cuando utilice el formato, es necesario generar un archivo de manifiesto de S3 que contiene la lista de frases y sus etiquetas correspondientes. El formato del archivo de manifiesto debe tener el formato líneas de JSON en el que cada línea representa una muestra. Las frases se especifican utilizando la etiqueta source y la etiqueta se puede especificar con la etiqueta label. Deben proporcionarse ambas etiquetas, source y label, bajo el valor del parámetro AttributeNames tal y como se especifica en la solicitud.

{"source":"linux ready for prime time , intel says , despite all the linux hype", "label":1} {"source":"bowled by the slower one again , kolkata , november 14 the past caught up with sourav ganguly", "label":2}

El entrenamiento de etiquetas múltiples también se admite mediante la especificación de una matriz de JSON de etiquetas.

{"source":"linux ready for prime time , intel says , despite all the linux hype", "label": [1, 3]} {"source":"bowled by the slower one again , kolkata , november 14 the past caught up with sourav ganguly", "label": [2, 4, 5]}

Para obtener más información sobre archivos de manifiesto aumentado, consulte Archivos de manifiesto aumentados para trabajos de formación.

Inferencia y artefactos de modelo

Artefactos de modelo para el algoritmo Word2Vec

Para el aprendizaje de Word2Vec, los artefactos del modelo consisten en vectors.txt, que contiene el words-to-vectors mapeo, y vectors.bin, un binario que se utiliza BlazingText para el alojamiento, la inferencia o ambos. vectors.txt almacena los vectores en un formato compatible con otras herramientas, como Gensim y Spacy. Por ejemplo, un usuario de Gensim puede ejecutar los siguientes comandos para cargar el archivo vectors.txt:

from gensim.models import KeyedVectors word_vectors = KeyedVectors.load_word2vec_format('vectors.txt', binary=False) word_vectors.most_similar(positive=['woman', 'king'], negative=['man']) word_vectors.doesnt_match("breakfast cereal dinner lunch".split())

Si el parámetro de evaluación se establece como True, se crea un archivo adicional, eval.json. Este archivo contiene los resultados de evaluación de similitud (mediante coeficientes de correlación de clasificación de Spearman) en el conjunto de datos de WS-353. El número de palabras del conjunto de datos WS-353 que no están en el cuerpo de capacitación se notifican.

Para solicitudes de inferencia, el modelo acepta un archivo JSON que contiene una lista de cadenas y devuelve una lista de vectores. Si la palabra no se encuentra en vocabulario, la inferencia devuelve un vector de ceros. Si las subpalabras se configuran True durante el entrenamiento, el modelo puede generar vectores para palabras out-of-vocabulary (OOV).

Ejemplo de solicitud JSON

Tipo MIME: application/json

{ "instances": ["word1", "word2", "word3"] }

Artefactos de modelo para el algoritmo de clasificación de texto

El entrenamiento con resultados supervisados crea un archivo model.bin que el alojamiento puede consumir. BlazingText A modo de inferencia, el BlazingText modelo acepta un archivo JSON que contiene una lista de oraciones y devuelve una lista de las etiquetas pronosticadas y las puntuaciones de probabilidad correspondientes. Se espera que cada frase sea una cadena con tokens separados por espacios, palabras o ambos.

Ejemplo de solicitud JSON

Tipo MIME: application/json

{ "instances": ["the movie was excellent", "i did not like the plot ."] }

De forma predeterminada, el servidor devuelve solo una predicción, la que tiene mayor probabilidad. Para recuperar las principales predicciones k, puede establecer k en la configuración, tal y como se indica a continuación:

{ "instances": ["the movie was excellent", "i did not like the plot ."], "configuration": {"k": 2} }

Para BlazingText, los accept parámetros content-type y deben ser iguales. Para transformar por lotes, es necesario que ambos sean application/jsonlines. Si son diferentes, el campo Accept no se tiene en cuenta. Se muestra a continuación el formato para la entrada:

content-type: application/jsonlines {"source": "source_0"} {"source": "source_1"} if you need to pass the value of k for top-k, then you can do it in the following way: {"source": "source_0", "k": 2} {"source": "source_1", "k": 3}

Se muestra a continuación el formato para la salida:

accept: application/jsonlines {"prob": [prob_1], "label": ["__label__1"]} {"prob": [prob_1], "label": ["__label__1"]} If you have passed the value of k to be more than 1, then response will be in this format: {"prob": [prob_1, prob_2], "label": ["__label__1", "__label__2"]} {"prob": [prob_1, prob_2], "label": ["__label__1", "__label__2"]}

Tanto para el modo supervisado (clasificación de texto) como para el no supervisado (Word2Vec), FastText puede BlazingText consumir de forma cruzada los binarios (*.bin) generados por FastText y viceversa. Puede utilizar binarios generados BlazingText por FastText. Del mismo modo, puede alojar los binarios del modelo creados con BlazingText FastText utilizando.

A continuación, se muestra un ejemplo de cómo utilizar un modelo generado BlazingText con FastText:

#Download the model artifact from S3 aws s3 cp s3://<YOUR_S3_BUCKET>/<PREFIX>/model.tar.gz model.tar.gz #Unzip the model archive tar -xzf model.tar.gz #Use the model archive with fastText fasttext predict ./model.bin test.txt

Sin embargo, los binarios solo se admiten cuando se capacita en CPU y GPU única; la capacitación en Multi-GPU no producirá binarios.

Recomendación de instancia EC2 para el algoritmo BlazingText

Para los skipgram modos cbow y, BlazingText admite instancias de una sola CPU y una sola GPU. Ambos modos son compatibles con el aprendizaje de incrustaciones de subwords. Para conseguir la máxima velocidad sin comprometer la precisión, recomendamos que utilice una instancia ml.p3.2xlarge.

Para batch_skipgram el modo, BlazingText admite instancias de CPU únicas o múltiples. Cuando entrenes en varias instancias, establece el valor del S3DataDistributionType campo del S3DataSourceobjeto CreateTrainingJobal que pasesFullyReplicated. BlazingTextse encarga de distribuir los datos entre las máquinas.

Para el modo de clasificación de texto supervisado, se recomienda una instancia C5 si el conjunto de datos de capacitación es inferior a 2 GB. Para conjuntos de datos más grandes, usa una instancia con una sola GPU. BlazingText admite instancias P2, P3, G4dn y G5 para el entrenamiento y la inferencia.

BlazingText Ejemplos de cuadernos

Para ver un ejemplo de cuaderno que entrena y despliega el SageMaker BlazingText algoritmo para generar vectores de palabras, consulte Aprender las representaciones de palabras de Word2Vec mediante. BlazingText Para obtener instrucciones sobre cómo crear instancias de Jupyter Notebook y acceder a ellas, que puede utilizar para ejecutar el ejemplo, consulte. SageMaker Instancias de Amazon SageMaker Notebook Tras crear y abrir una instancia de bloc de notas, selecciona la pestaña SageMaker Ejemplos para ver una lista de todos los SageMaker ejemplos. Los blocs de notas de muestra de modelado de temas que utilizan Blazing Text se encuentran situados en la sección de Introduction a algoritmos de Amazon . Para abrir un bloc de notas, elija su pestaña Usar y, a continuación, elija Crear copia.