

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# BlazingText algoritmo
<a name="blazingtext"></a>

L' BlazingText algoritmo Amazon SageMaker AI fornisce implementazioni altamente ottimizzate di Word2vec e algoritmi di classificazione del testo. L'algoritmo Word2vec è utile per molte attività di elaborazione del linguaggio naturale (NLP) downstream, come l'analisi di valutazione, il riconoscimento di entità con nome, la traduzione automatica e così via. La classificazione del testo è un compito rilevante per le applicazioni che eseguono ricerche sul Web, recupero di informazioni, classifiche e classificazione dei documenti.

L'algoritmo Word2vec mappa le parole ai vettori distribuiti di alta qualità. La rappresentazione vettoriale risultante di una parola viene chiamata *incorporamento di parola*. Le parole semanticamente simili corrispondono a vettori vicini. In questo modo, gli incorporamenti di parola acquisiscono le relazioni semantiche tra le parole. 

Molte applicazioni di elaborazione del linguaggio naturale (NLP) apprendono gli incorporamenti di parola tramite l’addestramento di ampie raccolte di documenti. Queste rappresentazioni vettoriali già addestrate forniscono informazioni sulla semantica e sulle distribuzioni di parole che solitamente migliorano la generalizzabilità di altri modelli successivamente addestrati su una quantità di dati più limitata. La maggior parte degli algoritmi Word2vec non sono ottimizzati per architetture di CPU multi-core. Ciò rende difficile il ridimensionamento di set di dati di grandi dimensioni. 

Con l' BlazingText algoritmo, puoi scalare facilmente set di dati di grandi dimensioni. Simile a Word2vec, fornisce le architetture Skip-gram e di formazione continua bag-of-words (CBOW). BlazingText[l'implementazione dell'algoritmo di classificazione del testo multiclasse e multietichetta supervisionato estende il classificatore di testo FastText per utilizzare l'accelerazione GPU con kernel CUDA personalizzati.](https://docs.nvidia.com/cuda/index.html) Puoi addestrare un modello per oltre un miliardo di parole in un paio di minuti usando una CPU multi-core o una GPU. Inoltre, si ottengono prestazioni pari a quelle degli algoritmi di classificazione del testo di deep learning. state-of-the-art

L' BlazingText algoritmo non è parallelizzabile. Per ulteriori informazioni sui parametri relativi alla formazione, consulta [Docker Registry Paths for SageMaker ](https://docs.aws.amazon.com/en_us/sagemaker/latest/dg/sagemaker-algo-docker-registry-paths.html) Built-in Algorithms.

 BlazingText Gli algoritmi di SageMaker intelligenza artificiale offrono le seguenti funzionalità:
+ Addestramento accelerato del classificatore di testo FastText su CPUs multi-core o GPU e GPUs Word2Vec sull'utilizzo di kernel CUDA altamente ottimizzati. [Per ulteriori informazioni, consulta: Scalabilità e accelerazione di Word2Vec utilizzando più applicazioni. BlazingText GPUs](https://dl.acm.org/citation.cfm?doid=3146347.3146354)
+ [Vettori di parola potenziati con le informazioni sulle parole secondarie](https://arxiv.org/abs/1607.04606) tramite l'apprendimento delle rappresentazioni vettoriali per n-grammi di caratteri. Questo approccio consente di BlazingText generare vettori significativi per le parole out-of-vocabulary (OOV) rappresentando i relativi vettori come la somma dei vettori n-gram (sottoparola) di caratteri.
+ `batch_skipgram` `mode` per l'algoritmo Word2Vec che consente un addestramento più veloce e il calcolo distribuito su più nodi della CPU. `batch_skipgram` `mode` esegue il mini-batch utilizzando la strategia Negative Sample Sharing per convertire le operazioni BLAS di livello 1 in operazioni BLAS di livello 3. In tal modo si utilizzano efficacemente le istruzioni di aggiunta multipla delle architetture moderne. Per ulteriori informazioni, consulta [Parallelizzazione di Word2Vec in memoria condivisa e distribuita](https://arxiv.org/pdf/1604.04661.pdf).

Per riassumere, le seguenti modalità sono supportate da istanze di diversi tipi: BlazingText 


| Modalità |  Word2Vec (apprendimento non supervisionato)  |  Classificazione del testo (apprendimento supervisionato)  | 
| --- | --- | --- | 
|  Istanza CPU singola  |  `cbow` `Skip-gram` `Batch Skip-gram`  |  `supervised`  | 
|  Istanza GPU singola (con 1 o più) GPUs  |  `cbow` `Skip-gram`  |  `supervised` con una GPU  | 
|  Istanze CPU multiple  | Batch Skip-gram  | Nessuno | 

Per ulteriori informazioni sulla matematica alla base BlazingText, vedi [BlazingText: Scaling and Accelerating](https://dl.acm.org/citation.cfm?doid=3146347.3146354) Word2Vec using Multiple. GPUs

**Topics**
+ [Interfaccia BlazingText di input/output per l'algoritmo](#bt-inputoutput)
+ [Raccomandazione dell'istanza EC2 per l'algoritmo BlazingText](#blazingtext-instances)
+ [BlazingText Notebook di esempio](#blazingtext-sample-notebooks)
+ [BlazingText Iperparametri](blazingtext_hyperparameters.md)
+ [Ottimizza un modello BlazingText](blazingtext-tuning.md)

## Interfaccia BlazingText di input/output per l'algoritmo
<a name="bt-inputoutput"></a>

L' BlazingText algoritmo prevede un singolo file di testo preelaborato con token separati da spazi. Ogni riga del file deve contenere una sola frase. Se devi usare più file di testo per l’addestramento, concatenali in un unico file e carica il file nel rispettivo canale.

### Formato dei dati di addestramento e convalida
<a name="blazingtext-data-formats"></a>

#### Formato dei dati di addestramento e convalida per l'algoritmo Word2Vec
<a name="blazingtext-data-formats-word2vec"></a>

Per l’addestramento di Word2Vec, carica il file nel canale *train*. Non sono supportati altri canali. Il file deve contenere una frase di addestramento per riga.

#### Formato dei dati di addestramento e convalida per l'algoritmo di classificazione del testo
<a name="blazingtext-data-formats-text-class"></a>

Per la modalità supervisionata, puoi addestrare con la modalità file o con il formato di testo manifest aumentato.

##### Addestramento con la modalità di file
<a name="blazingtext-data-formats-text-class-file-mode"></a>

Per la `supervised` modalità, il training/validation file dovrebbe contenere una frase di addestramento per riga insieme alle etichette. Le etichette sono parole precedute dalla stringa *\$1\$1label\$1\$1*. Ecco un esempio di training/validation file:

```
__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**  
L'ordine delle etichette all'interno della frase non è rilevante. 

Carica il file di addestramento nel canale di addestramento e, facoltativamente, carica il file di convalida nel canale di convalida.

##### Addestramento con il formato di testo manifest aumentato
<a name="blazingtext-data-formats-text-class-augmented-manifest"></a>

La modalità supervisionata per le istanze CPU supporta anche il formato di manifest aumentato che ti consente di addestrare in modalità pipe senza dover creare file RecordIO. Quando si usa questo formato, è necessario generare un file manifest S3 che contenga l'elenco delle frasi e delle etichette corrispondenti. Il formato del file manifest deve essere in [JSON Lines](http://jsonlines.org/) dove ogni riga rappresenta un esempio. Le frasi sono specificate utilizzando il tag `source` e l'etichetta può essere specificata utilizzando il tag `label`. È necessario specificare i tag `source` e `label` nel valore del parametro `AttributeNames` come specificato nella richiesta.

```
{"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}
```

L’addestramento multi-etichetta è supportato anche specificando un array di etichette JSON.

```
{"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]}
```

Per ulteriori informazioni sui file manifest aumentati, consulta [File di manifesto aumentati nei job di addestramento](augmented-manifest.md).

### Artefatti del modello e inferenza
<a name="blazingtext-artifacts-inference"></a>

#### Artefatti del modello per l'algoritmo Word2Vec
<a name="blazingtext--artifacts-inference-word2vec"></a>

Per l'addestramento con Word2Vec, gli artefatti del modello sono costituiti da *vectors.txt*, che contiene la words-to-vectors mappatura, e *vectors.bin*, un file binario utilizzato BlazingText per l'hosting, l'inferenza o entrambi. *vectors.txt* memorizza i vettori in un formato compatibile con altri strumenti come Gensim e Spacy. Ad esempio, un utente Gensim può eseguire i seguenti comandi per caricare il file 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())
```

Se il parametro di valutazione è impostato su `True`, viene creato un ulteriore file, *eval.json*. Questo file contiene i risultati di valutazione di somiglianza (usando i coefficienti di correlazione per la classifica di Spearman) nel set di dati WS-353. Viene restituito il numero di parole del set di dati WS-353 che non sono presenti nel corpus dell’addestramento.

Per le richieste di inferenza, il modello accetta un file JSON contenente un elenco di stringhe e restituisce un elenco di vettori. Se la parola non è disponibile nel vocabolario, l'inferenza restituisce un vettore di zeri. Se le subwords sono impostate su `True` durante l'addestramento, il modello è in grado di generare vettori per out-of-vocabulary parole (OOV).

##### Richiesta JSON di esempio
<a name="word2vec-json-request"></a>

Mime-type:` application/json`

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

#### Artefatti del modello per l'algoritmo di classificazione del testo
<a name="blazingtext-artifacts-inference-text-class"></a>

L'addestramento con output supervisionati crea un file *model.bin* che può essere utilizzato dall'hosting. BlazingText Per l'inferenza, il BlazingText modello accetta un file JSON contenente un elenco di frasi e restituisce un elenco delle etichette previste e dei punteggi di probabilità corrispondenti. Ogni frase deve essere una stringa con token, parole o entrambi separati da spazio.

##### Richiesta JSON di esempio
<a name="text-class-json-request"></a>

Mime-type:` application/json`

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

Per impostazione predefinita, il server restituisce un solo previsione, quella con la massima probabilità. Per recuperare le prime *k* previsioni, è possibile impostare *k* nella configurazione, come segue:

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

Perché BlazingText, i `accept` parametri ` content-type` and devono essere uguali. Per la trasformazione in batch, entrambi devono essere `application/jsonlines`. Se differiscono, il campo `Accept` viene ignorato. Il formato dell'input è il seguente:

```
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}
```

Il formato dell'output è il seguente:

```
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"]}
```

Sia per la modalità supervisionata (classificazione del testo) che per quella non supervisionata (Word2Vec), i file binari (*\$1.bin)* prodotti da possono essere BlazingText utilizzati in modo incrociato da FastText e viceversa. È possibile utilizzare file binari prodotti BlazingText da FastText. Allo stesso modo, è possibile ospitare i modelli binari creati con BlazingText FastText utilizzando.

Ecco un esempio di come utilizzare un modello generato 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
```

Tuttavia, i file binari sono supportati solo quando si esegue l’addestramento su CPU e GPU singola; l’addestramento su multi-GPU non produrrà file binari.

## Raccomandazione dell'istanza EC2 per l'algoritmo BlazingText
<a name="blazingtext-instances"></a>

Per `cbow` e `skipgram` modalità, BlazingText supporta istanze con CPU singola e GPU singola. Entrambe le modalità supportano l'apprendimento degli incorporamenti di `subwords`. Per ottenere la massima velocità senza compromettere l'accuratezza, ti consigliamo di utilizzare un'istanza ml.p3.2xlarge. 

Per la `batch_skipgram` modalità, BlazingText supporta istanze CPU singole o multiple. Quando ti alleni su più istanze, imposta il valore del `S3DataDistributionType` campo dell'[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_S3DataSource.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_S3DataSource.html)oggetto a [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html)cui passi. `FullyReplicated` BlazingTextsi occupa della distribuzione dei dati tra le macchine.

Per la modalità di classificazione del testo supervisionata, consigliamo un'istanza C5 se il set di dati per l’addestramento è inferiore a 2 GB. Per set di dati più grandi, usa un'istanza con una singola GPU. BlazingText supporta istanze P2, P3, G4dn e G5 per l'addestramento e l'inferenza.

## BlazingText Notebook di esempio
<a name="blazingtext-sample-notebooks"></a>

Per un notebook di esempio che addestra e implementa l' BlazingText algoritmo di SageMaker intelligenza artificiale per generare vettori di parole, consulta [Learning](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/blazingtext_word2vec_text8/blazingtext_word2vec_text8.html) Word2Vec Word Representations using. BlazingText Per istruzioni sulla creazione e l'accesso alle istanze di notebook Jupyter che puoi utilizzare per eseguire l'esempio in AI, vedi. SageMaker [Istanze SageMaker per notebook Amazon](nbi.md) Dopo aver creato e aperto un'istanza di notebook, scegli la scheda **Esempi SageMaker AI** per visualizzare un elenco di tutti gli esempi di IA. SageMaker I notebook di esempio di modellazione dell'argomento che utilizzano gli algoritmi BlazingText sono disponibili nella sezione con l'**introduzione agli algoritmi Amazon**. Per aprire un notebook, seleziona la relativa scheda **Usa**, quindi scegli **Crea copia**.