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, pertanto non è consigliabile usarla per i carichi di lavoro in ambienti di produzione. Alcune funzionalità potrebbero non essere supportate o potrebbero presentare funzionalità limitate.

Per altre informazioni, vedere le Condizioni supplementari per l'uso delle anteprime di Microsoft Azure.

In questo articolo viene illustrato come eseguire il training di modelli di elaborazione del linguaggio naturale con ML automatizzato in Azure Machine Learning Python SDK.

ML automatizzato supporta l'elaborazione del linguaggio naturale, che consente a professionisti e scienziati dei dati nell'ambito del Machine Learning di usare i propri dati di testo e creare modelli personalizzati per attività quali classificazione di testo multiclasse, classificazione di testo con più etichette e Riconoscimento entità denominata.

È possibile eseguire facilmente l'integrazione con la funzionalità di etichettatura dei dati di Azure Machine Learning per etichettare i dati di testo o importare i dati con etichetta esistenti. ML automatizzato consente di scegliere se usare il training distribuito in cluster di elaborazione 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à di elaborazione del linguaggio naturale

Determinare l'attività di elaborazione del linguaggio naturale che si vuole eseguire. Attualmente, ML automatizzato supporta le attività di elaborazione del linguaggio naturale della rete neurale profonda.

Attività Sintassi di AutoMLConfig Descrizione
Classificazione di testo multiclasse task = 'text-classification' Esistono diverse classi possibili e ogni campione può essere classificato come un'unica classe. L'attività consiste nel prevedere la classe corretta per ogni campione,

ad esempio classificare un copione cinematografico come "Commedia" o "Romantico".
Classificazione di testo con più etichette task = 'text-classification-multilabel' Sono presenti più classi possibili e a ogni campione può essere assegnato un numero qualsiasi di classi. L'attività consiste nel prevedere tutte le classi per ogni campione,

ad esempio classificare un copione cinematografico come "Commedia" o "Romantico" oppure "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 di tutti i token per ogni sequenza,

ad esempio, l'estrazione di entità specifiche del dominio da testo non strutturato, come contratti o documenti finanziari.

Preparazione dei dati

Per gli esperimenti di elaborazione del linguaggio naturale in Machine Learning automatizzato, è possibile usare un set di dati di Azure Machine Learning con formato .csv per le attività di classificazione multiclasse e con più etichette. Per le attività di Riconoscimento entità denominata, sono supportati file .txt a due colonne che usano uno spazio come separatore e rispettano il formato CoNLL. Nelle sezioni seguenti vengono forniti dettagli aggiuntivi sul formato di dati accettato per ogni attività.

Multiclasse

Per la classificazione multiclasse il set di dati può contenere diverse colonne di testo e solo una colonna di 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"

Più etichette

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

Opzioni di formato per colonne di etichetta Più etichette Una sola etichetta Nessuna etichetta
Testo normale "label1, label2, label3" "label1" ""
Elenco Python con virgolette "['label1','label2','label3']" "['label1']" "[]"

Importante

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

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

Dati di esempio per più etichette 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 più etichette nel formato elenco Python con 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 entità denominata

A differenza dei casi multiclasse o con più etichette, che accettano set di dati in formato .csv, con Riconoscimento entità denominata è richiesto il formato CoNLL. Il file deve contenere esattamente due colonne e, in ogni riga, il token e l'etichetta sono separati da uno spazio singolo.

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, ML 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 non riesce e viene visualizzato il messaggio di errore pertinente. Di seguito sono riportati i requisiti per il superamento dei controlli di convalida dei dati per ogni attività.

Nota

Alcuni controlli di convalida dei dati sono applicabili sia al set di training che a quello di convalida, mentre altri sono applicabili solo al set di training. Se il set di dati di test non ha superato la convalida dei dati, ML automatizzato non è riuscito a acquisirlo ed è possibile 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 sia di convalida
- Sono necessari almeno 50 campioni di training
Multiclasse e con più etichette I dati di training e la convalida dei dati devono presentare:
- Lo stesso set di colonne
- Lo stesso ordine di colonne da sinistra a destra
- Lo stesso tipo di dati per le colonne con lo stesso nome
- Almeno due etichette univoche
- Nomi di colonna univoci in ogni set di dati (ad esempio, il set di training non può avere più colonne denominate Age)
Solo multiclasse None
Solo più etichette - La colonna di etichetta deve essere specificata nel formato accettato
- Almeno un campione deve avere 0 o più di due etichette; in caso contrario, deve essere un'attività multiclass
- Tutte le etichette devono essere in formato str o int, senza sovrapposizioni. Non è consigliabile avere sia l'etichetta 1 sia l'etichetta '1'
Solo Riconoscimento entità denominata - Il file non deve iniziare con una riga vuota
- Ogni riga deve essere una riga vuota o rispettare il formato {token} {label}, in cui è previsto 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 devono essere esattamente O. Fa distinzione tra maiuscole e minuscole.
- Esattamente una riga vuota tra due campioni
- Esattamente una riga vuota alla fine del file

Configurare l'esperimento

La funzionalità di elaborazione del linguaggio naturale di ML automatizzato viene attivata tramite AutoMLConfig e questo corrisponde allo stesso flusso di lavoro per l'invio di esperimenti di ML automatizzato per le attività di classificazione, regressione e previsione. Si imposta la maggior parte dei parametri in modo analogo a quanto avviene per tali esperimenti, ad esempio task, compute_target e input di dati.

Esistono tuttavia alcune differenze principali:

  • È possibile ignorare primary_metric, perché viene usato solo per la creazione di report. Attualmente, ML automatizzato esegue il training di un solo modello per ogni esecuzione nell'elaborazione del linguaggio naturale e non è prevista alcuna selezione del modello.
  • Il parametro label_column_name è necessario solo per le attività di classificazione di testo multiclasse e con più etichette.
  • Se la maggior parte dei campioni nel set di dati contiene più di 128 parole, viene considerata a intervallo lungo. Per questo scenario, è possibile abilitare l'opzione di testo a intervallo lungo con il parametro enable_long_range_text=True in AutoMLConfig. Ciò consente di migliorare le prestazioni del modello, ma richiede tempi di training più lunghi.
    • Se si abilita il testo a intervallo lungo, è necessaria una GPU con memoria superiore, ad esempio la serie NCv3 o la serie ND.
    • Il parametro enable_long_range_text è 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
)

Impostazioni lingua

Nell'ambito della funzionalità di elaborazione del linguaggio naturale, ML automatizzato supporta 104 lingue che sfruttano modelli DNN di testo specifici e multilingue con training preliminare, come la famiglia di modelli BERT. Attualmente, la lingua selezionata per impostazione predefinita è l'inglese.

Nella tabella seguente sono riepilogati i modelli applicati in base al tipo di attività e alla lingua. Consultare l'elenco completo di lingue e codici supportati.

Tipo di attività Sintassi per dataset_language Algoritmo del modello di testo
Classificazione di testo con più etichette 'eng'
'deu'
'mul'
BERT inglese senza distinzione tra maiuscole e minuscole
BERT tedesco
BERT multilingue

Per tutte le altre lingue ML automatizzato applica BERT multilingue
Classificazione di testo multiclasse 'eng'
'deu'
'mul'
BERT inglese con distinzione tra maiuscole e minuscole
BERT multilingue

Per tutte le altre lingue ML automatizzato applica BERT multilingue
Riconoscimento entità denominata 'eng'
'deu'
'mul'
BERT inglese con distinzione tra maiuscole e minuscole
BERT tedesco
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à del training dell'esperimento di ML automatizzato. Altre informazioni su integrazione e definizione delle funzionalità di BERT in ML 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 di elaborazione del linguaggio naturale con il training distribuito in un cluster di elaborazione di Azure Machine Learning. Questo viene gestito automaticamente da ML automatizzato quando si specificano i parametri max_concurrent_iterations = number_of_vms e enable_distributed_dnn_training = True in AutoMLConfig durante la configurazione dell'esperimento.

max_concurrent_iterations = number_of_vms
enable_distributed_dnn_training = True

In questo modo, oltre a consentire la pianificazione del training distribuito dei modelli di elaborazione del linguaggio naturale, viene ridimensionato automaticamente in base a ogni GPU nella macchina virtuale o nel cluster di macchine virtuali. Il numero massimo di macchine virtuali consentite è 32. Il training viene pianificato con il numero di macchine virtuali con potenza di due.

Notebook di esempio

Vedere i notebook di esempio per esempi di codice dettagliati per ogni attività di elaborazione del linguaggio naturale.

Passaggi successivi