Algoritmo BlazingText
El algoritmo BlazingText de Amazon SageMaker AI proporciona implementaciones muy optimizadas de los algoritmos de clasificación de textos y Word2vec. 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 algoritmo BlazingText, puede escalar a conjuntos de datos de gran tamaño fácilmente. Al igual que en Word2vec, proporciona las arquitecturas capacitación del modelo de bolsa continua de palabras (CBOW, del inglés Continuous Bag-Of-Words) y el modelo Skip-gram. La implementación de BlazingText del algoritmo de clasificación de texto de etiquetas múltiples y de clases múltiples extiende el clasificador de texto fastText para usar la aceleración GPU con kernels CUDA
El algoritmo BlazingText no es paralelizable. Para obtener más información sobre los parámetros relacionados con el entrenamiento, consulte Docker Registry Paths for SageMaker Built-in Algorithms.
Los algoritmos BlazingText de SageMaker AI proporcionan las siguientes características:
-
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: Escalado y aceleración de Word2Vec mediante varias GPU
. -
Enriched Word Vectors with Subword Information
mediante el aprendizaje de las representaciones vectoriales para n-gramas de caracteres. Este enfoque permite que BlazingText genere vectores significativo para palabras no presentes en el vocabulario (OOV) representando sus vectores como la suma de vectores de n-gramas de caracteres (subunidades de palabra). -
Un
modebatch_skipgrampara el algoritmo Word2Vec que permite una computación distribuida y una capacitación más rápidas en varios nodos de CPU. Elmode(modo)batch_skipgramcrea 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.
Para resumir, los siguientes modos son compatibles con BlazingText en instancias de diferentes tipos:
| Modos |
Word2Vec (Aprendizaje no supervisado) |
Clasificación de textos (Aprendizaje supervisado) |
|---|---|---|
|
Instancia de CPU individual |
|
|
|
Instancia de GPU individual (con 1 o más GPU) |
|
|
|
Varias instancias de CPU |
Batch Skip-gram |
Ninguno |
Para obtener más información sobre las operaciones matemáticas que componen BlazingText, consulte BlazingText: Escalado y aceleración de Word2Vec mediante varias GPU
Temas
Interfaz de entrada/salida para el algoritmo BlazingText
El algoritmo BlazingText espera un único archivo de texto preprocesado con tokens separados 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 JSONsource 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 entrenamiento.
Inferencia y artefactos de modelo
Artefactos de modelo para el algoritmo Word2Vec
Para la capacitación de Word2Vec, los artefactos del modelo se componen de vectors.txt, que contiene el mapeo de palabra a vectores, y vectors.bin, un binario utilizado por BlazingText para alojar, inferencia o ambos. vectors.txt almacena los vectores en un formato que sea 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 subunidades de palabras se establecen en True durante la capacitación, el modelo es capaz de generar vectores de eventos para palabras no presentes en el vocabulario (OOV).
Ejemplo de solicitud JSON
Tipo MIME: application/json
{ "instances": ["word1", "word2", "word3"] }
Artefactos de modelo para el algoritmo de clasificación de texto
La capacitación con salidas supervisadas crea un archivo model.bin archivo que el alojamiento BlazingText puede consumir. Para la inferencia, el modelo BlazingText acepta un archivo JSON que contiene una lista de frases y devuelve una lista de etiquetas previstas y 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 parámetros content-type y accept 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"]}
Para ambos modos supervisado (clasificación del texto) y sin monitorizar (Word2Vec), los archivos binarios (*.bin) producidos por BlazingText pueden ser consumidos por fastText y viceversa. Puede utilizar archivos binarios producidos por BlazingText por fastText. Del mismo modo, puede alojar archivos binarios del modelo creados con fastText mediante BlazingText.
Este es un ejemplo de cómo usar un modelo generado con 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 modos cbow y skipgram, BlazingText admite instancias de CPU y GPU únicas. 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 el modo batch_skipgram, BlazingText admite una o varias instancias de CPU. Cuando realice la capacitación en varias instancias, establezca el valor del campo S3DataDistributionType del objeto S3DataSource que se pasa a CreateTrainingJob en FullyReplicated. BlazingText se encarga de la distribución de datos en 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, use una instancia con una sola GPU. BlazingText admite instancias P2, P3, G4dn y G5 para entrenamiento e inferencia.
Cuadernos de ejemplo de BlazingText
Para ver un ejemplo de cuaderno que entrena e implementa el algoritmo BlazingText de SageMaker AI a fin de generar vectores de palabras, consulte Learning Word2Vec Word Representations using BlazingText