Configurare AutoML per eseguire il training di un modello di elaborazione del linguaggio naturale con Python (anteprima)

SI APPLICA A:Python SDK azureml v1

Importante

Questa funzionalità è attualmente in anteprima pubblica. Questa versione di anteprima viene fornita senza contratto di servizio e non è consigliata per carichi di lavoro di produzione. Alcune funzionalità potrebbero non essere supportate o potrebbero presentare funzionalità limitate. Per altre informazioni, vedere Condizioni supplementari per l'utilizzo delle anteprime di Microsoft Azure.

Questo articolo illustra come eseguire il training di modelli di elaborazione del linguaggio naturale (NLP) con Machine Learning automatizzato in Azure Machine Learning Python SDK.

Machine Learning automatizzato supporta NLP, che consente a professionisti e data scientist di Machine Learning di usare i propri dati di testo e creare modelli personalizzati per attività quali, classificazione del testo multiclasse, classificazione del testo con più etichette e riconoscimento di entità denominate .NER.

È possibile integrarsi facilmente con la funzionalità di etichettatura dei dati di Azure Machine Learning per etichettare i dati di testo o portare i dati etichettati esistenti. Machine Learning automatizzato offre la possibilità di usare il training distribuito in cluster di calcolo con più GPU per un training più rapido del modello. Il modello risultante può essere reso operativo su larga scala sfruttando le funzionalità MLOps di Azure Machine Learning.

Prerequisiti

Selezionare l'attività NLP

Determinare l'attività NLP da eseguire. Attualmente, Machine Learning automatizzato supporta le attività NLP della rete neurale profonda.

Attività Sintassi AutoMLConfig Descrizione
Classificazione del testo multiclasse task = 'text-classification' Esistono più classi possibili e ogni campione può essere classificato esattamente come una classe. L'attività consiste nel prevedere la classe corretta per ogni esempio.

Ad esempio, classificare uno script cinematografico come "Commedia" o "Romantico".
Classificazione del testo con più etichette task = 'text-classification-multilabel' Sono disponibili più classi possibili e a ogni campione è possibile assegnare un numero qualsiasi di classi. L'attività consiste nel prevedere tutte le classi per ogni esempio

Ad esempio, classificando uno script di film come "Commedia", o "Romantico" o "Commedia e Romantico".
Riconoscimento delle entità denominate (NER) task = 'text-ner' Esistono più tag possibili per i token nelle sequenze. L'attività consiste nel prevedere i tag per tutti i token per ogni sequenza.

Ad esempio, estrazione di entità specifiche del dominio da testo non strutturato, ad esempio contratti o documenti finanziari

Preparazione dei dati

Per gli esperimenti NLP in Machine Learning automatizzato, è possibile portare un set di dati di Azure Machine Learning con .csv formato per le attività di classificazione multiclasse e multi-etichetta. Per le attività NER, sono supportati i file a due colonne .txt che usano uno spazio come separatore e rispettano il formato CoNLL. Le sezioni seguenti forniscono dettagli aggiuntivi per il formato di dati accettato per ogni attività.

Multiclasse

Per la classificazione multiclasse, il set di dati può contenere diverse colonne di testo e esattamente una colonna etichetta. Nell'esempio seguente è presente una sola colonna di testo.


text,labels
"I love watching Chicago Bulls games.","NBA"
"Tom Brady is a great player.","NFL"
"There is a game between Yankees and Orioles tonight","MLB"
"Stephen Curry made the most number of 3-Pointers","NBA"

Multi-label

Per la classificazione con più etichette, le colonne del set di dati corrispondono a multiclasse, tuttavia esistono requisiti di formato speciali per i dati nella colonna etichetta. I due formati e gli esempi accettati sono riportati nella tabella seguente.

Opzioni di formato colonna etichetta Più etichette Un'etichetta Nessuna etichetta
Testo normale "label1, label2, label3" "label1" ""
Elenco Python con virgolette "['label1','label2','label3']" "['label1']" "[]"

Importante

I parser diversi vengono usati per leggere le etichette per questi formati. Se si usa il formato testo normale, usare solo alfabetico, numerico e '_' nelle etichette. Tutti gli altri caratteri vengono riconosciuti come separatori di etichette.

Ad esempio, se l'etichetta è "cs.AI", viene letta come "cs" e "AI". Mentre con il formato dell'elenco Python, l'etichetta sarà "['cs.AI']", che viene letta come "cs.AI" .

Dati di esempio per l'etichetta multipla in formato testo normale.

text,labels
"I love watching Chicago Bulls games.","basketball"
"The four most popular leagues are NFL, MLB, NBA and NHL","football,baseball,basketball,hockey"
"I like drinking beer.",""

Dati di esempio per l'etichetta multipla nell'elenco Python con formato virgolette.

text,labels
"I love watching Chicago Bulls games.","['basketball']"
"The four most popular leagues are NFL, MLB, NBA and NHL","['football','baseball','basketball','hockey']"
"I like drinking beer.","[]"

Riconoscimento di entità denominate (NER)

A differenza di multiclasse o multi-etichetta, che accetta .csv set di dati di formato, il riconoscimento di entità denominate richiede il formato CoNLL. Il file deve contenere esattamente due colonne e in ogni riga, il token e l'etichetta sono separati da un singolo spazio.

Ad esempio,

Hudson B-loc
Square I-loc
is O
a O
famous O
place O
in O
New B-loc
York I-loc
City I-loc

Stephen B-per
Curry I-per
got O
three O
championship O
rings O

Convalida dei dati

Prima del training, Machine Learning automatizzato applica i controlli di convalida dei dati sui dati di input per assicurarsi che i dati possano essere pre-elaborati correttamente. Se uno di questi controlli ha esito negativo, l'esecuzione ha esito negativo con il messaggio di errore pertinente. Di seguito sono riportati i requisiti per passare i controlli di convalida dei dati per ogni attività.

Nota

Alcuni controlli di convalida dei dati sono applicabili sia al training che al set di convalida, mentre altri sono applicabili solo al set di training. Se il set di dati di test non è riuscito a superare la convalida dei dati, significa che Machine Learning automatizzato non è riuscito a acquisirlo ed è possibile che si verifichi un errore di inferenza del modello o un calo delle prestazioni del modello.

Attività Controllo di convalida dei dati
Tutte le attività - È necessario specificare sia set di training che di convalida
- Sono necessari almeno 50 campioni di training
Multiclasse e Multi-label I dati di training e i dati di convalida devono avere
- Lo stesso set di colonne
- Lo stesso ordine di colonne da sinistra a destra
- Stesso tipo di dati per le colonne con lo stesso nome
- Almeno due etichette univoche
- Nomi di colonna univoci all'interno di ogni set di dati (ad esempio, il set di training non può avere più colonne denominate Age)
Solo multiclasse Nessuno
Solo multi-etichetta - Il formato della colonna dell'etichetta deve essere in formato accettato
- Almeno un campione deve avere 0 o 2 etichette+; in caso contrario, deve essere un'attività multiclass
- Tutte le etichette devono essere in str formato o int senza sovrapposizioni. Non è consigliabile avere sia l'etichetta che l'etichetta 1'1'
Solo NER - Il file non deve iniziare con una riga vuota
- Ogni riga deve essere una riga vuota o seguire il formato {token} {label}, in cui è presente esattamente uno spazio tra il token e l'etichetta e nessun spazio vuoto dopo l'etichetta
- Tutte le etichette devono iniziare con I-, B-o essere esattamente O. Fa distinzione tra maiuscole e minuscole.
- Esattamente una linea vuota tra due campioni
- Esattamente una riga vuota alla fine del file

Configurare l'esperimento

La funzionalità NLP di Ml automatizzato viene attivata tramite AutoMLConfig, che è lo stesso flusso di lavoro per l'invio di esperimenti di Machine Learning automatizzati per le attività di classificazione, regressione e previsione. È possibile impostare la maggior parte dei parametri come si farebbe per tali esperimenti, ad esempio task, compute_target e gli input di dati.

Esistono tuttavia differenze principali:

  • È possibile ignorare primary_metric, perché è solo a scopo di creazione di report. Attualmente, Machine Learning automatizzato esegue il training di un solo modello per ogni esecuzione per NLP e non esiste alcuna selezione del modello.
  • Il label_column_name parametro è obbligatorio solo per le attività di classificazione del testo multiclasse e multi-etichetta.
  • Se la maggior parte degli esempi nel set di dati contiene più di 128 parole, viene considerata un intervallo lungo. Per questo scenario, è possibile abilitare l'opzione di testo a lungo intervallo con il enable_long_range_text=True parametro in AutoMLConfig. In questo modo, consente di migliorare le prestazioni del modello, ma richiede tempi di training più lunghi.
    • Se si abilita il testo a lungo raggio, è necessaria una GPU con memoria superiore, ad esempio, serie NCv3 o serie ND .
    • Il enable_long_range_text parametro è disponibile solo per le attività di classificazione multiclasse.
automl_settings = {
    "verbosity": logging.INFO,
    "enable_long_range_text": True, # # You only need to set this parameter if you want to enable the long-range text setting
}

automl_config = AutoMLConfig(
    task="text-classification",
    debug_log="automl_errors.log",
    compute_target=compute_target,
    training_data=train_dataset,
    validation_data=val_dataset,
    label_column_name=target_column_name,
    **automl_settings
)

Impostazione della lingua

Come parte della funzionalità NLP, ML automatizzato supporta 104 lingue che sfruttano modelli DNN di testo con training preliminare specifici e multilingue, ad esempio la famiglia di modelli BERT. Attualmente, per impostazione predefinita, la selezione della lingua è l'inglese.

La tabella seguente riepiloga il modello applicato in base al tipo di attività e al linguaggio. Vedere l'elenco completo delle lingue supportate e dei relativi codici.

Tipo di attività Sintassi per dataset_language Algoritmo del modello di testo
Classificazione del testo con più etichette 'eng'
'deu'
'mul'
Inglese BERT noncased
Tedesco BERT
BERT multilingue

Per tutte le altre lingue, ML automatizzato applica bert multilingue
Classificazione del testo multiclasse 'eng'
'deu'
'mul'
Inglese BERT cased
BERT multilingue

Per tutte le altre lingue, ML automatizzato applica bert multilingue
Riconoscimento di entità denominate (NER) 'eng'
'deu'
'mul'
Inglese BERT cased
Tedesco BERT
BERT multilingue

Per tutte le altre lingue, ML automatizzato applica bert multilingue

È possibile specificare la lingua del set di dati in FeaturizationConfig. BERT viene usato anche nel processo di definizione delle funzionalità di training degli esperimenti di Machine Learning automatizzato, altre informazioni sull'integrazione e la definizione delle funzionalità BERT in Machine Learning automatizzato.

from azureml.automl.core.featurization import FeaturizationConfig

featurization_config = FeaturizationConfig(dataset_language='{your language code}')
automl_config = AutomlConfig("featurization": featurization_config)

Training distribuito

È anche possibile eseguire gli esperimenti NLP con il training distribuito in un cluster di calcolo di Azure Machine Learning. Questo viene gestito automaticamente da ML automatizzato quando i max_concurrent_iterations = number_of_vms parametri e enable_distributed_dnn_training = True vengono forniti nell'oggetto durante la AutoMLConfig configurazione dell'esperimento.

max_concurrent_iterations = number_of_vms
enable_distributed_dnn_training = True

In questo modo, pianifica il training distribuito dei modelli NLP e ridimensiona automaticamente a ogni GPU nella macchina virtuale o nel cluster di macchine virtuali. Il numero massimo di macchine virtuali consentite è 32. Il training è pianificato con il numero di macchine virtuali con poteri di due.

Notebook di esempio

Vedere i notebook di esempio per esempi di codice dettagliati per ogni attività NLP.

Passaggi successivi