Definizione delle funzionalità dei dati in Machine Learning automatizzato

SI APPLICA A: Python SDK azureml v1

Questo articolo illustra come personalizzare le impostazioni di definizione delle funzionalità dei dati in Azure Machine Learning per gli esperimenti di Machine Learning automatizzato (AutoML).

Ingegneria e definizione delle funzionalità

I dati di training sono costituiti da righe e colonne. Ciascuna riga è un'osservazione o un record, mentre le colonne di ogni riga corrispondono alle funzionalità che descrivono ciascun record. In genere, le funzionalità che meglio caratterizzano i modelli nei dati vengono selezionate per creare modelli predittivi.

Anche se diversi campi dei dati non elaborati possono essere usati direttamente per eseguire il training di un modello, spesso è necessario creare altre funzionalità (progettate) che forniscono informazioni per distinguere al meglio i modelli nei dati. Questo processo è denominato ingegneria delle funzionalità, in cui l'uso della conoscenza del dominio dei dati viene finalizzato alla creazione di funzionalità che, a loro volta, aiutano gli algoritmi di apprendimento automatico a ottenere informazioni migliori.

In Azure Machine Learning, le tecniche di ridimensionamento dei dati e normalizzazione vengono applicate per semplificare l'ingegneria delle funzionalità. Collettivamente, queste tecniche e questa ingegneria delle funzionalità sono denominate definizione delle funzionalità negli esperimenti di machine learning (ML) automatizzato.

Prerequisiti

Questo articolo presuppone che si sappia già come configurare un esperimento di Machine Learning automatizzato.

Importante

Con i comandi Python descritti in questo articolo è richiesta la versione più recente del pacchetto azureml-train-automl.

Per informazioni sulla configurazione, vedere gli articoli seguenti:

Configurare la definizione delle funzionalità

In ogni esperimento di Machine Learning automatizzato, le tecniche di ridimensionamento automatico e normalizzazione vengono applicate ai dati per impostazione predefinita. Queste tecniche sono tipi di definizione delle funzionalità che aiutano determinati algoritmi sensibili alle funzionalità su diverse scale. È possibile abilitare più definizioni delle funzionalità, ad esempio imputazione di valori mancanti, codifica e trasformazioni.

Nota

I passaggi di definizione delle funzionalità di Machine Learning automatizzato (ad esempio, normalizzazione delle funzionalità, gestione dei dati mancanti o conversione dei valori di testo in formato numerico) diventano parte del modello sottostante. Quando si usa il modello per le previsioni, gli stessi passaggi di definizione delle funzionalità applicati durante il training vengono automaticamente applicati ai dati di input.

Per gli esperimenti configurati con Python SDK, è possibile abilitare o disabilitare l'impostazione di definizione delle funzionalità e specificare ulteriormente i passaggi di definizione delle funzionalità da usare per l'esperimento. Se si usa lo studio di Azure Machine Learning, vedere la procedura per abilitare la definizione delle funzionalità.

La tabella seguente illustra le impostazioni accettate per featurization nella classe AutoMLConfig:

Configurazione della definizione delle funzionalità Descrizione
"featurization": 'auto' Specifica che i passaggi di protezione dati e definizione delle funzionalità devono essere eseguiti automaticamente come parte della pre-elaborazione. Questa è l'impostazione predefinita.
"featurization": 'off' Consente di specificare che i passaggi di definizione delle funzionalità non devono essere eseguiti automaticamente.
"featurization": 'FeaturizationConfig' Specifica che devono essere usati i passaggi di definizione delle funzionalità personalizzati. Informazioni su come personalizzare la definizione delle funzionalità.

Automatic featurization (Definizione automatica funzionalità)

La tabella seguente riepiloga le tecniche applicate automaticamente ai dati. Queste tecniche vengono applicate per gli esperimenti configurati usando l'SDK o l'interfaccia utente dello studio. Per disabilitare questo comportamento, impostare "featurization": 'off' nell'oggetto AutoMLConfig.

Nota

Se si prevede di esportare i modelli creati da AutoML in un modello ONNX, solo le opzioni di definizione delle funzionalità indicate con un asterisco ("*") sono supportate nel formato ONNX. Altre informazioni sulla conversione di modelli in ONNX.

Passaggi di definizione delle funzionalità Descrizione
Eliminazione delle funzionalità con alta cardinalità o senza varianza* Eliminare queste funzionalità dai set di training e convalida. Si applica alle funzionalità con tutti i valori mancanti, con lo stesso valore in tutte le righe o con cardinalità elevata (ad esempio hash, ID o GUID).
Attribuire i valori mancanti* Per le funzionalità numeriche, vengono imputati con la media dei valori nella colonna.

Per le funzionalità di categoria, vengono imputati con il valore più frequente.
Generazione di altre funzionalità* Per funzionalità DateTime: anno, mese, giorno, giorno della settimana, giorno dell'anno, trimestre, settimana dell'anno, ora, minuti, secondi.

Per le attività di previsione, vengono create queste funzionalità DateTime aggiuntive: anno ISO, metà - semestre, mese di calendario come stringa, settimana, giorno della settimana come stringa, giorno del trimestre, giorno dell'anno, AM/PM (0 se l'ora è prima di mezzogiorno, ovvero 12 PM, 1 in caso contrario), AM/PM come stringa, ora del giorno (12 ore)

Per le funzionalità di tipo Testo: frequenza dei termini basata su unigrammi, digrammi e trigrammi. Altre informazioni su come questa operazione viene eseguita con BERT.
Trasformazione e codifica* Trasforma le funzionalità numeriche che hanno un numero ridotto di valori univoci in funzionalità di categoria.

La codifica one-hot viene usata per le funzionalità categoriche a cardinalità bassa. La codifica one-hot-hash viene usata per le funzionalità categoriche a cardinalità elevata.
Incorporamenti di parole Una funzione di definizione delle funzionalità di testo converte vettori di token di testo in vettori di frasi usando un modello con training preliminare. Il vettore di incorporamento di ogni parola in un documento è aggregato con il resto per produrre un vettore di funzionalità del documento.
Distanza cluster Esegue il training di un modello di clustering k-means su tutte le colonne numeriche. Produce nuove funzionalità k (una nuova funzionalità numerica per cluster) che contengono la distanza di ogni campione dal centro di ogni cluster.

In ogni esperimento di Machine Learning automatizzato, i dati vengono ridimensionati o normalizzati automaticamente per consentire il corretto funzionamento degli algoritmi. Durante il training del modello, viene applicata una delle tecniche di ridimensionamento o normalizzazione seguenti a ogni modello.

Ridimensionamento ed elaborazione Descrizione
StandardScaleWrapper Consente di standardizzare le funzionalità rimuovendo la media e il ridimensionando alla varianza unitaria.
MinMaxScalar Consente di trasformare le funzionalità ridimensionando ogni funzionalità in base al valore minimo e massimo della colonna.
MaxAbsScaler Consente di ridimensionare ogni funzionalità in base al valore massimo assoluto.
RobustScalar Consente il ridimensionamento delle funzionalità in base al rispettivo intervallo quantile.
PCA Consente di ridurre la dimensionalità lineare mediante scomposizione di valori singolari dei dati per proiettarla in uno spazio di dimensioni inferiori.
TruncatedSVD Consente di eseguire la riduzione della dimensionalità lineare tramite la scomposizione del valore singolare troncato (SVD). Contrariamente a PCA, questo estimatore non centra i dati prima di calcolare la scomposizione del valore singolare, può quindi funzionare con le matrici scipy.sparse in modo efficiente.
SparseNormalizer Ogni esempio, ovvero ogni riga della matrice di dati, con almeno un componente diverso da zero, viene ridimensionato indipendentemente dagli altri esempi, in modo che la relativa norma (l1 o l2) sia uguale a uno.

Protezione dati

Le protezioni dei dati consentono di identificare potenziali problemi con i dati (ad esempio, valori mancanti o squilibrio di classi). Consentono inoltre di eseguire azioni correttive per migliorare i risultati.

Vengono applicate le protezioni dei dati:

  • Per gli esperimenti dell'SDK: quando i parametri "featurization": 'auto' o validation=auto sono specificati nell'oggetto AutoMLConfig
  • Per gli esperimenti dello studio: quando è abilitata la descrizione della funzionalità automatica

È possibile esaminare le protezioni dati per l'esperimento:

  • Impostando show_output=True quando si invia un esperimento usando l'SDK.
  • Nello studio, nella scheda protezione dati dell'esecuzione di Machine Learning automatizzato.

Stati di protezione dati

La protezione dati visualizza uno dei tre stati seguenti:

Provincia Descrizione
Riuscito Non sono stati rilevati problemi relativi ai dati e non è richiesta alcuna azione da parte dell'utente.
Completato Le modifiche sono state applicate ai dati. Si consiglia di esaminare le azioni correttive intraprese da AutoML per verificare che le modifiche siano in linea con i risultati previsti.
Avvisato È stato rilevato un problema di dati, ma non è stato possibile risolverlo. Si consiglia di esaminare il problema e risolverlo.

Protezioni dei dati supportate

Nella tabella seguente sono descritte le protezioni dati che attualmente sono supportate e gli stati associati che possono essere riscontrati durante l'invio dell'esperimento:

Protezione Status Condizione per il trigger
Imputazione di valori di funzionalità mancanti Passed


Fatto
Nei dati di training non sono stati rilevati valori di funzionalità mancanti. Altre informazioni sull'imputazione di valori mancanti.

Nei dati di training sono stati rilevati valori di funzionalità mancanti e sono stati imputati.
Rilevamento funzionalità ad alta cardinalità Passed


Fatto
Gli input sono stati analizzati e non sono state rilevate funzionalità ad alta cardinalità.

Sono state rilevate funzionalità ad alta cardinalità negli input e sono state gestite.
Gestione della suddivisione della convalida Fatto La configurazione della convalida è stata impostata su 'auto' e i dati di training contenevano meno di 20.000 righe.
Ogni iterazione del modello con training è stata convalidata usando la convalida incrociata. Altre informazioni sui dati di convalida.

La configurazione della convalida è stata impostata su 'auto' e i dati di training contenevano più di 20.000 righe.
I dati di input sono stati suddivisi in un set di dati di training e un set di dati di convalida per la convalida del modello.
Rilevamento bilanciamento classi Passed




Avvisato



Fatto
Gli input sono stati analizzati e tutte le classi sono bilanciate nei dati di training. Un set di dati è considerato bilanciato se ogni classe è rappresentata in modo corretto nel set di dati, come da misurazione in base al numero e al rapporto dei campioni.

Sono state rilevate classi non bilanciate negli input. Per correggere la distorsione del modello, risolvere il problema di bilanciamento. Altre informazioni sui dati non bilanciati.

Sono state rilevate classi sbilanciate negli input e la logica di sweep ha determinato l'applicazione del bilanciamento.
Rilevamento dei problemi di memoria Passed



Fatto
I valori selezionati (orizzonte, ritardo, finestra mobile) sono stati analizzati e non è stato rilevato alcun potenziale problema di memoria insufficiente. Altre informazioni sulle configurazioni di previsione di serie temporali.

I valori selezionati (orizzonte, ritardo, finestra mobile) sono stati analizzati e potrebbero causare un problema di memoria insufficiente per l'esperimento. Le configurazioni del ritardo o della finestra mobile sono disattivate.
Rilevamento della frequenza Passed


Fatto
La serie temporale è stata analizzata e tutti i punti dati sono allineati con la frequenza rilevata.

La serie temporale è stata analizzata e sono stati rilevati dei punti dati non allineati alla frequenza rilevata. Questi punti dati sono stati rimossi dal set di dati.
Convalida incrociata Fatto Per valutare in modo accurato i modelli sottoposti a training da AutoML, viene usato un set di dati su cui non viene eseguito il training del modello. Di conseguenza, se l'utente non fornisce un set di dati di convalida esplicito, viene usata una parte del set di dati di training per ottenere questo risultato. Per set di dati più piccoli (meno di 20.000 campioni), viene usata la convalida incrociata. In caso contrario, un singolo set di blocco viene diviso dai dati di training da usare come set di dati di convalida. Di conseguenza, per i dati di input si usa la convalida incrociata con 10 riduzioni, se il numero di campioni di training è inferiore a 1000, e 3 riduzioni in tutti gli altri casi.
Divisione dei dati Train-Test Fatto Per valutare in modo accurato i modelli sottoposti a training da AutoML, viene usato un set di dati su cui non viene eseguito il training del modello. Di conseguenza, se l'utente non fornisce un set di dati di convalida esplicito, viene usata una parte del set di dati di training per ottenere questo risultato. Per set di dati più piccoli (meno di 20.000 campioni), viene usata la convalida incrociata. In caso contrario, un singolo set di blocco viene diviso dai dati di training da usare come set di dati di convalida. Di conseguenza, i dati di input vengono suddivisi in un set di dati di training e un set di dati di convalida di controllo.
Rilevamento ID serie temporale Passed


Corretto
Il set di dati è stato analizzato e non è stato rilevato alcun indice temporale duplicato.

Nel set di dati sono state trovate più serie temporali e gli identificatori delle serie temporali sono stati creati automaticamente per il set di dati.
Aggregazione di serie temporali Passed


Corretto
La frequenza del set di dati è allineata alla frequenza specificata dall'utente. Non è stata eseguita alcuna aggregazione.

I dati sono stati aggregati per essere conformi alla frequenza specificata dall'utente.
Gestione serie brevi Passed


Corretto
Machine Learning automatizzato ha rilevato un numero di punti dati sufficiente per ogni serie nei dati di input per continuare con il training.

Machine Learning automatizzato ha rilevato che alcune serie non contengono punti dati sufficienti per eseguire il training di un modello. Per continuare con il training, queste brevi serie sono state eliminate o riempite.

Personalizzare la definizione delle funzionalità

È possibile personalizzare le impostazioni di definizione delle funzionalità per assicurarsi che i dati e le funzionalità usati per eseguire il training del modello di Machine Learning comportino stime pertinenti.

Per personalizzare la definizione delle funzionalità, specificare "featurization": FeaturizationConfig nell'oggetto AutoMLConfig. Se si usa lo studio di Azure Machine Learning per l'esperimento, vedere l'articolo sulla procedura. Per personalizzare la definizione delle funzionalità per i tipi di attività di previsione, fare riferimento alla procedura della previsione.

Le personalizzazioni supportate includono:

Personalizzazione Definizione
Aggiornamento dello scopo della colonna Esegue l'override del tipo di funzionalità rilevato automaticamente per la colonna specificata.
Aggiornamento dei parametri del trasformatore Aggiornare i parametri per il trasformatore specificato. Attualmente sono supportati Imputer (media, valore mediano e più frequente) e HashOneHotEncoder.
Eliminazione delle colonne Specifica le colonne da eliminare dalla definizione delle funzionalità.
Blocco dei trasformatori Specifica il blocco dei trasformatori da usare nel processo di definizione delle funzionalità.

Nota

La funzionalità di eliminazione delle colonne è deprecata a partire dalla versione 1.19 dell'SDK. Eliminare colonne dal set di dati come parte della pulizia dei dati, prima di usarle nell'esperimento di Machine Learning automatizzato.

Creare l'oggetto FeaturizationConfig usando chiamate API:

featurization_config = FeaturizationConfig()
featurization_config.blocked_transformers = ['LabelEncoder']
featurization_config.drop_columns = ['aspiration', 'stroke']
featurization_config.add_column_purpose('engine-size', 'Numeric')
featurization_config.add_column_purpose('body-style', 'CategoricalHash')
#default strategy mean, add transformer param for 3 columns
featurization_config.add_transformer_params('Imputer', ['engine-size'], {"strategy": "median"})
featurization_config.add_transformer_params('Imputer', ['city-mpg'], {"strategy": "median"})
featurization_config.add_transformer_params('Imputer', ['bore'], {"strategy": "most_frequent"})
featurization_config.add_transformer_params('HashOneHotEncoder', [], {"number_of_bits": 3})

Trasparenza della definizione delle funzionalità

Ogni modello AutoML ha una definizione delle funzionalità applicata automaticamente. La definizione delle funzionalità include la progettazione automatizzata delle funzionalità (in caso di "featurization": 'auto') e scalabilità e normalizzazione, influendo quindi sull'algoritmo selezionato e sui relativi valori degli iperparametri. AutoML supporta metodi diversi per assicurarsi di avere visibilità su ciò che è stato applicato al modello.

Si consideri questo esempio di previsione:

  • Sono disponibili quattro funzionalità di input: A (numerica), B (numerica), C (numerica), D (DateTime).
  • La funzionalità numerica C viene eliminata poiché è una colonna ID con tutti i valori univoci.
  • Le funzionalità numeriche A e B presentano valori mancanti e vengono quindi attribuite in base alla media.
  • La funzionalità DateTime D viene trasformata in 11 diverse funzionalità definite.

Per ottenere queste informazioni, usare l'output fitted_model dell'esecuzione dell'esperimento di Machine Learning automatizzato.

automl_config = AutoMLConfig(…)
automl_run = experiment.submit(automl_config …)
best_run, fitted_model = automl_run.get_output()

Definizione delle funzionalità automatizzata

get_engineered_feature_names() restituisce un elenco dei nomi delle funzionalità definite.

Nota

Usare 'timeseriestransformer' per task='forecasting' oppure usare 'datatransformer' per l'attività 'regression' o 'classification'.

fitted_model.named_steps['timeseriestransformer']. get_engineered_feature_names ()

Questo elenco include tutti i nomi delle funzionalità definite.

['A', 'B', 'A_WASNULL', 'B_WASNULL', 'year', 'half', 'quarter', 'month', 'day', 'hour', 'am_pm', 'hour12', 'wday', 'qday', 'week']

get_featurization_summary() ottiene un riepilogo della definizione delle funzionalità di tutte le funzionalità di input.

fitted_model.named_steps['timeseriestransformer'].get_featurization_summary()

Output

[{'RawFeatureName': 'A',
  'TypeDetected': 'Numeric',
  'Dropped': 'No',
  'EngineeredFeatureCount': 2,
  'Tranformations': ['MeanImputer', 'ImputationMarker']},
 {'RawFeatureName': 'B',
  'TypeDetected': 'Numeric',
  'Dropped': 'No',
  'EngineeredFeatureCount': 2,
  'Tranformations': ['MeanImputer', 'ImputationMarker']},
 {'RawFeatureName': 'C',
  'TypeDetected': 'Numeric',
  'Dropped': 'Yes',
  'EngineeredFeatureCount': 0,
  'Tranformations': []},
 {'RawFeatureName': 'D',
  'TypeDetected': 'DateTime',
  'Dropped': 'No',
  'EngineeredFeatureCount': 11,
  'Tranformations': ['DateTime','DateTime','DateTime','DateTime','DateTime','DateTime','DateTime','DateTime',ateTime','DateTime','DateTime']}]
Output Definizione
RawFeatureName Nome della funzionalità o della colonna di input del set di dati specificato.
TypeDetected Tipo di dati rilevato della funzionalità di input.
Dropped Indica se la funzionalità di input è stata eliminata o usata.
EngineeringFeatureCount Numero di funzionalità generate tramite trasformazioni della definizione delle funzionalità automatizzata.
Trasformazioni Elenco delle trasformazioni applicate alle funzionalità di input per generare le funzionalità definite.

Ridimensionamento e normalizzazione

Per comprendere il ridimensionamento o la normalizzazione e l'algoritmo selezionato con i valori di iperparametri, usare fitted_model.steps.

L'output di esempio seguente deriva dall'esecuzione di fitted_model.steps per un'esecuzione scelta:

[('RobustScaler', 
  RobustScaler(copy=True, 
  quantile_range=[10, 90], 
  with_centering=True, 
  with_scaling=True)), 

  ('LogisticRegression', 
  LogisticRegression(C=0.18420699693267145, class_weight='balanced', 
  dual=False, 
  fit_intercept=True, 
  intercept_scaling=1, 
  max_iter=100, 
  multi_class='multinomial', 
  n_jobs=1, penalty='l2', 
  random_state=None, 
  solver='newton-cg', 
  tol=0.0001, 
  verbose=0, 
  warm_start=False))]

Per ottenere altri dettagli, usare la funzione helper seguente:

from pprint import pprint

def print_model(model, prefix=""):
    for step in model.steps:
        print(prefix + step[0])
        if hasattr(step[1], 'estimators') and hasattr(step[1], 'weights'):
            pprint({'estimators': list(e[0] for e in step[1].estimators), 'weights': step[1].weights})
            print()
            for estimator in step[1].estimators:
                print_model(estimator[1], estimator[0]+ ' - ')
        elif hasattr(step[1], '_base_learners') and hasattr(step[1], '_meta_learner'):
            print("\nMeta Learner")
            pprint(step[1]._meta_learner)
            print()
            for estimator in step[1]._base_learners:
                print_model(estimator[1], estimator[0]+ ' - ')
        else:
            pprint(step[1].get_params())
            print()   

Questa funzione helper restituisce l'output seguente per una determinata esecuzione usando LogisticRegression with RobustScalar come algoritmo specifico.

RobustScaler
{'copy': True,
'quantile_range': [10, 90],
'with_centering': True,
'with_scaling': True}

LogisticRegression
{'C': 0.18420699693267145,
'class_weight': 'balanced',
'dual': False,
'fit_intercept': True,
'intercept_scaling': 1,
'max_iter': 100,
'multi_class': 'multinomial',
'n_jobs': 1,
'penalty': 'l2',
'random_state': None,
'solver': 'newton-cg',
'tol': 0.0001,
'verbose': 0,
'warm_start': False}

Stimare la probabilità della classe

I modelli prodotti con il Machine Learning automatizzato hanno tutti oggetti wrapper che rispecchiano la funzionalità della classe di origine open source. La maggior parte degli oggetti wrapper del modello di classificazione restituiti dal Machine Learning automatizzato implementa la funzione predict_proba() che accetta dati di esempio di tipo matrice o matrice sparsa delle funzionalità (valori X) e restituisce una matrice n-dimensionale di ogni esempio e la probabilità della rispettiva classe.

Supponendo di avere recuperato l'esecuzione migliore e il modello adattato usando le stesse chiamate, è possibile chiamare predict_proba() direttamente dal modello adattato specificando un X_test di esempio nel formato appropriato, a seconda del tipo di modello.

best_run, fitted_model = automl_run.get_output()
class_prob = fitted_model.predict_proba(X_test)

Se il modello sottostante non supporta la funzione predict_proba() o il formato non è corretto, viene generata un'eccezione specifica della classe del modello. Per esempi relativi all'implementazione di questa funzione per i diversi tipi di modello, vedere la documentazione di riferimento di RandomForestClassifier e XGBoost.

Integrazione BERT nel Machine Learning automatizzato

BERT viene usato nel livello di funzionalità di Machine Learning automatizzato. In questo livello, se una colonna contiene testo libero o altri tipi di dati, ad esempio timestamp o numeri semplici, la funzionalità viene applicata di conseguenza.

Per BERT, il modello viene ottimizzato ed è stato addestrato utilizzando le etichette fornite dall'utente. Da qui, gli incorporamenti di documenti vengono restituiti come funzionalità insieme ad altre, ad esempio funzionalità basate su timestamp o giorno della settimana.

Informazioni sulla Configurazione di AutoML per eseguire il training di un modello di elaborazione del linguaggio naturale con Python.

Passaggi per richiamare BERT

Per richiamare BERT, impostare enable_dnn: True in automl_settings e usare un calcolo GPU (vm_size = "STANDARD_NC6" o una GPU superiore). Se viene usato un calcolo della CPU, invece di BERT, AutoML abilita le funzionalità DNN BiLSTM.

Machine Learning automatizzato esegue i passaggi seguenti per BERT.

  1. Pre-elaborazione e tokenizzazione di tutte le colonne di testo. Ad esempio, il trasformatore StringCast è disponibile nel riepilogo della definizione delle funzionalità del modello finale. Un esempio di come produrre il riepilogo della definizione delle funzionalità del modello è disponibile in questo notebook.

  2. Concatenare tutte le colonne di testo in una singola colonna di testo, quindi StringConcatTransformer nel modello finale.

    L'implementazione di BERT limita la lunghezza totale del testo di un campione di training a 128 token. Ciò significa che tutte le colonne di testo, quando vengono concatenate, dovrebbero avere una lunghezza massima di 128 token. Se sono presenti più colonne, è necessario eliminare ogni colonna in modo che questa condizione venga soddisfatta. In caso contrario, per le colonne concatenate di lunghezza di >128 token, il livello tokenizer di BERT tronca questo input a 128 token.

  3. Nell'ambito dello sweep delle funzionalità, AutoML confronta BERT con la baseline (funzionalità contenitore di parole) su un campione di dati. Questo confronto determina se BERT offrirà miglioramenti dell'accuratezza. Se BERT offre prestazioni migliori rispetto alla baseline, AutoML usa BERT per la definizione delle funzionalità del testo per tutti i dati. In tal caso, viene visualizzato PretrainedTextDNNTransformer nel modello finale.

BERT viene in genere eseguito più a lungo rispetto ad altri operatori. Per prestazioni migliori, è consigliabile usare STANDARD_NC24r o STANDARD_NC24rs_V3 per le funzionalità RDMA.

AutoML distribuisce il training BERT tra più nodi, se disponibili (fino a un massimo di otto nodi). Questa operazione può essere eseguita nell'oggetto AutoMLConfig impostando il parametro max_concurrent_iterations su maggiore di 1.

Lingue supportate per BERT in AutoML

AutoML supporta attualmente circa 100 lingue e sceglie il modello BERT appropriato a seconda della lingua del set di dati. Per i dati tedeschi si usa il modello BERT tedesco. Per l'inglese si usa il modello BERT inglese. Per tutte le altre lingue, usiamo il modello BERT multilingue.

Nel codice seguente viene attivato il modello BERT tedesco, poiché la lingua del set di dati è specificata in deu, il codice lingua di tre lettere per il tedesco in base alla classificazione ISO:

from azureml.automl.core.featurization import FeaturizationConfig

featurization_config = FeaturizationConfig(dataset_language='deu')

automl_settings = {
    "experiment_timeout_minutes": 120,
    "primary_metric": 'accuracy',
# All other settings you want to use
    "featurization": featurization_config,
    
    "enable_dnn": True, # This enables BERT DNN featurizer
    "enable_voting_ensemble": False,
    "enable_stack_ensemble": False
}