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
Sottoscrizione di Azure. Se non si ha una sottoscrizione di Azure, iscriversi per provare subito la versione gratuita o a pagamento di Azure Machine Learning .
Un'area di lavoro di Azure Machine Learning con un calcolo di training GPU. Per creare l'area di lavoro, vedere Creare le risorse dell'area di lavoro. Per altre informazioni sulle istanze GPU fornite da Azure, vedere Dimensioni delle macchine virtuali ottimizzate per GPU.
Avviso
Il supporto per modelli multilingue e l'uso di modelli con lunghezza massima massima più lunga è necessario per diversi casi d'uso NLP, ad esempio set di dati non in lingua inglese e documenti di intervallo più lunghi. Di conseguenza, questi scenari possono richiedere una maggiore memoria GPU per il training del modello, ad esempio la serie NC_v3 o la serie ND.
Azure Machine Learning Python SDK installato.
Per installare l'SDK, è possibile,
Creare un'istanza di calcolo, che installa automaticamente l'SDK ed è preconfigurato per i flussi di lavoro di Machine Learning. Per altre informazioni , vedere Creare e gestire un'istanza di calcolo di Azure Machine Learning .
Installare manualmente il
automl
pacchetto, che include l'installazione predefinita dell'SDK .
Importante
I comandi Python in questo articolo richiedono la versione più recente
azureml-train-automl
del pacchetto.- Installare il pacchetto più recente
azureml-train-automl
nell'ambiente locale. - Per informazioni dettagliate sul pacchetto più recente
azureml-train-automl
, 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 principali modelli di progettazione dell'esperimento di Machine Learning automatizzato.
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 inAutoMLConfig
. In questo modo, 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
)
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.
- Classificazione del testo multiclasse
- Classificazione del testo con più etichette
- Riconoscimento di entità denominate