

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
<a name="blazingtext"></a>

El BlazingText algoritmo Amazon SageMaker AI 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 entrenamiento continuo tipo Skip-gram bolsa de palabras (CBOW). BlazingText[La 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.](https://docs.nvidia.com/cuda/index.html) 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. Y, obtiene el rendimiento equivalente a los más avanzados algoritmos de clasificación de texto de aprendizaje profundo.

El algoritmo no es paralelizable. BlazingText Para obtener más información sobre los parámetros relacionados con el entrenamiento, consulte [Docker Registry](https://docs.aws.amazon.com/en_us/sagemaker/latest/dg/sagemaker-algo-docker-registry-paths.html) Paths for Algorithms. SageMaker Built-in 

 Los BlazingText algoritmos de SageMaker IA 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](https://dl.acm.org/citation.cfm?doid=3146347.3146354) varias GPU.
+ [Enriched Word Vectors with Subword Information](https://arxiv.org/abs/1607.04606) mediante el aprendizaje de las representaciones vectoriales para n-gramas de caracteres. Este enfoque permite BlazingText generar vectores significativos para palabras fuera del vocabulario (OOV) 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](https://arxiv.org/pdf/1604.04661.pdf).

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`<br />`Skip-gram`<br />`Batch Skip-gram` | `supervised` | 
| Instancia de GPU individual (con 1 o más GPU) | `cbow`<br />`Skip-gram` | `supervised` con una GPU | 
| Varias instancias de CPU | Batch Skip-gram  | Ninguno | 

Para obtener más información sobre las matemáticas subyacentes BlazingText, consulte [BlazingText: Escalar y acelerar Word2Vec](https://dl.acm.org/citation.cfm?doid=3146347.3146354) con varias GPU.

**Topics**
+ [Input/Output Interfaz para el algoritmo BlazingText](#bt-inputoutput)
+ [Recomendación de instancia EC2 para el algoritmo BlazingText](#blazingtext-instances)
+ [BlazingText Ejemplos de cuadernos](#blazingtext-sample-notebooks)
+ [BlazingText Hiperparámetros](blazingtext_hyperparameters.md)
+ [Ajustar un BlazingText modelo](blazingtext-tuning.md)

## Input/Output Interfaz para el algoritmo BlazingText
<a name="bt-inputoutput"></a>

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
<a name="blazingtext-data-formats"></a>

#### Entrenamiento y validación del formato de datos para el algoritmo Word2Vec
<a name="blazingtext-data-formats-word2vec"></a>

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
<a name="blazingtext-data-formats-text-class"></a>

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
<a name="blazingtext-data-formats-text-class-file-mode"></a>

Para el `supervised` modo, el training/validation archivo debe contener una oración de entrenamiento 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 training/validation archivo:

```
__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
<a name="blazingtext-data-formats-text-class-augmented-manifest"></a>

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](http://jsonlines.org/) 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}
```

Multi-label El entrenamiento también se admite especificando una matriz 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](augmented-manifest.md).

### Inferencia y artefactos de modelo
<a name="blazingtext-artifacts-inference"></a>

#### Artefactos de modelo para el algoritmo Word2Vec
<a name="blazingtext--artifacts-inference-word2vec"></a>

Para el entrenamiento con Word2Vec, los artefactos del modelo consisten en *vectors.txt*, que contiene el mapeo de palabras a vectores, y *vectors.bin*, un binario que se utiliza BlazingText para alojamiento, 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 la evaluación de similitud (utilizando los coeficientes de correlación de rangos de Spearman) en el conjunto de datos. WS-353 Se indica el número de palabras del WS-353 conjunto de datos que no figuran en el corpus de formación.

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
<a name="word2vec-json-request"></a>

Mime-type:` application/json`

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

#### Artefactos de modelo para el algoritmo de clasificación de texto
<a name="blazingtext-artifacts-inference-text-class"></a>

Al entrenar con resultados supervisados se crea un archivo *model.bin* que el BlazingText alojamiento puede consumir. 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
<a name="text-class-json-request"></a>

Mime-type:` 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
<a name="blazingtext-instances"></a>

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 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_S3DataSource.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_S3DataSource.html)objeto [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html)al que pases`FullyReplicated`. 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
<a name="blazingtext-sample-notebooks"></a>

Para ver un ejemplo de cuaderno que entrena e implementa el BlazingText algoritmo de SageMaker IA para generar vectores de palabras, consulte [Aprender las representaciones de palabras de Word2Vec mediante](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/blazingtext_word2vec_text8/blazingtext_word2vec_text8.html). BlazingText Para obtener instrucciones sobre cómo crear instancias de Jupyter Notebook y acceder a ellas, que puede utilizar para ejecutar el ejemplo en IA, consulte. SageMaker [Instancias de Amazon SageMaker Notebook](nbi.md) Tras crear y abrir una instancia de bloc de notas, selecciona la pestaña **Ejemplos de SageMaker IA** para ver una lista de todos los ejemplos de SageMaker IA. 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 cuaderno, elija su pestaña **Usar** y, a continuación, elija **Crear copia**.