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 se ne sconsiglia l’uso 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
Abbonamento di Azure. Se non si ha una sottoscrizione di Azure, è possibile iscriversi per provare oggi stesso la versione gratuita o a pagamento di Azure Machine Learning.
Un'area di lavoro di Azure Machine Learning con un'istanza di ambiente di calcolo di training della GPU. Per creare l'area di lavoro, vedere Creare risorse dell'area di lavoro. Vedere Dimensioni delle macchine virtuali ottimizzate per la GPU per maggiori dettagli sulle istanze di GPU fornite da Azure.
Avviso
Il supporto per modelli multilingue e l'uso di modelli con una lunghezza massima della sequenza più lunga è necessario per diversi casi d'uso di elaborazione del linguaggio naturale, ad esempio set di dati non in lingua inglese e documenti di intervallo più lunghi. Di conseguenza, questi scenari possono richiedere una maggiore quantità di memoria GPU per completare correttamente il training del modello, ad esempio la serie NC_v3 o le serie ND.
Azure Machine Learning Python SDK installato.
Per installare l'SDK, è possibile,
Creare un'istanza di ambiente di calcolo, che installa automaticamente l'SDK ed è preconfigurata per i flussi di lavoro di Machine Learning. Per altre informazioni, vedere Creare e gestire un'istanza di ambiente calcolo di Azure Machine Learning.
Installare il pacchetto
automl
manualmente, che include l'installazione predefinita dell'SDK.
Importante
Con i comandi Python descritti in questo articolo è richiesta la versione più recente del pacchetto
azureml-train-automl
.- Installare il pacchetto
azureml-train-automl
più recente nell'ambiente locale. - Per informazioni dettagliate sul pacchetto
azureml-train-automl
più recente, vedere le note sulla versione.
Questo articolo presuppone una certa familiarità con la configurazione di un esperimento di Machine Learning automatizzato. Seguire l'esercitazione o la procedura per visualizzare i modelli di progettazione dell'esperimento di Machine Learning automatizzato principali.
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
inAutoMLConfig
. Ciò consente di migliorare le prestazioni del modello, ma richiede tempi di training più lunghi.
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.
- Classificazione di testo multiclasse
- Classificazione di testo con più etichette
- Riconoscimento entità denominata