Esegui l'ottimizzazione automatica dei modelli con Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Esegui l'ottimizzazione automatica del modello con Amazon SageMaker JumpStart

A dicembre 2020, AWS ha annunciato la disponibilità generale di JumpStart di Amazon SageMaker, una capacità di Amazon Sage Maker che ti aiuta a iniziare rapidamente e facilmente con l'apprendimento automatico (ML). A marzo 2022 anche noi ha annunciato il supporto per le API in JumpStart. JumpStart offre la messa a punto e l'implementazione con un clic di un'ampia varietà di modelli pre-addestrati per le attività di machine learning più comuni, nonché una selezione di soluzioni end-to-end che risolvono problemi aziendali comuni. Queste funzionalità eliminano il lavoro gravoso da ogni fase del processo di machine learning, semplificando lo sviluppo di modelli di alta qualità e riducendo i tempi di implementazione.

In questo post, dimostriamo come eseguire l'ottimizzazione automatica del modello con JumpStart.

Ottimizzazione automatica del modello di SageMaker

Tradizionalmente, gli ingegneri ML implementano un metodo per tentativi ed errori per trovare il giusto set di iperparametri. Per tentativi ed errori è necessario eseguire più processi in sequenza o in parallelo durante il provisioning delle risorse necessarie per eseguire l'esperimento.

Con Ottimizzazione automatica del modello di SageMaker, ingegneri ML e data scientist possono alleggerire il lungo compito di ottimizzazione del proprio modello e lasciare che SageMaker esegua la sperimentazione. SageMaker sfrutta l'elasticità della piattaforma AWS per eseguire in modo efficiente e simultaneo più simulazioni di addestramento su un set di dati e trovare i migliori iperparametri per un modello.

L'ottimizzazione automatica del modello SageMaker trova la versione migliore di un modello eseguendo molti processi di addestramento sul set di dati utilizzando l'algoritmo e gamme di iperparametri specificati. Quindi sceglie i valori dell'iperparametro che si traducono in un modello con le prestazioni migliori, come misurato da a metrico che scegli tu.

L'ottimizzazione automatica del modello utilizza a bayesiano (predefinito) o a casuale strategia di ricerca per trovare i valori migliori per gli iperparametri. La ricerca bayesiana tratta l'ottimizzazione degli iperparametri come a regressione problema. Quando sceglie i migliori iperparametri per il prossimo lavoro di addestramento, considera tutto ciò che sa sul problema fino ad ora e consente all'algoritmo di sfruttare i risultati più noti.

In questo post, utilizziamo la strategia di ricerca bayesiana predefinita per dimostrare i passaggi coinvolti nell'esecuzione dell'ottimizzazione automatica del modello con JumpStart utilizzando il LuceGBM modello.

JumpStart attualmente supporta 10 notebook di esempio con ottimizzazione automatica del modello. Supporta anche quattro algoritmi popolari per la modellazione di dati tabulari. Le attività e i collegamenti ai relativi taccuini di esempio sono riepilogati nella tabella seguente.

Task Modelli pre-addestrati Supporta set di dati personalizzati Framework supportati Notebook di esempio
Classificazione delle immagini PyTorch, TensorFlow Introduzione a JumpStart – Classificazione delle immagini
Rilevazione dell'oggetto PyTorch, TensorFlow, MXNet Introduzione a JumpStart – Rilevamento di oggetti
Segmentazione semantica MXNet Introduzione a JumpStart – Segmentazione semantica
Classificazione del testo TensorFlow Introduzione a JumpStart – Classificazione del testo
Classificazione delle coppie di frasi TensorFlow, faccia che abbraccia Introduzione a JumpStart – Classificazione delle coppie di frasi
Risposta alla domanda PyTorch Introduzione a JumpStart – Risposte alle domande
Classificazione tabulare LightGBM, CatBoost, XGBoost, Apprendimento lineare Introduzione a JumpStart – Classificazione tabulare – LightGBM, CatBoost
Introduzione a JumpStart – Classificazione tabulare – XGBoost, Linear Learner
Regressione tabulare LightGBM, CatBoost, XGBoost, Apprendimento lineare Introduzione a JumpStart – Regressione tabulare – LightGBM, CatBoost
Introduzione a JumpStart – Regressione tabulare – XGBoost, Linear Learner

Panoramica della soluzione

Questo flusso di lavoro tecnico offre una panoramica delle diverse funzionalità di Amazon Sagemaker e dei passaggi necessari per ottimizzare automaticamente un modello JumpStart.

Esegui l'ottimizzazione automatica dei modelli con Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Nelle sezioni seguenti viene fornita una procedura dettagliata su come eseguire l'ottimizzazione automatica del modello con JumpStart utilizzando l'algoritmo LightGBM. Forniamo un accompagnamento taccuino per questa procedura dettagliata.

Esaminiamo i seguenti passaggi di alto livello:

  1. Recupera il modello pre-addestrato di JumpStart e il contenitore delle immagini.
  2. Imposta iperparametri statici.
  3. Definire gli intervalli di iperparametri sintonizzabili.
  4. Inizializzare l'ottimizzazione automatica del modello.
  5. Esegui il lavoro di ottimizzazione.
  6. Distribuisci il modello migliore su un endpoint.

Recupera il modello pre-addestrato di JumpStart e il contenitore delle immagini

In questa sezione, scegliamo il modello di classificazione LightGBM per la messa a punto. Utilizziamo il tipo di istanza ml.m5.xlarge su cui viene eseguito il modello. Recuperiamo quindi il contenitore Docker di addestramento, l'origine dell'algoritmo di addestramento e il modello pre-addestrato. Vedere il codice seguente:

training_instance_type = "ml.m5.xlarge" # Retrieve the docker image
train_image_uri = image_uris.retrieve(
    region=None,
    framework=None,
    model_id=train_model_id,
    model_version=train_model_version,
    image_scope=train_scope,
    instance_type=training_instance_type,
)
# Retrieve the training script
train_source_uri = script_uris.retrieve(
    model_id=train_model_id, model_version=train_model_version, script_scope=train_scope
)
# Retrieve the pre-trained model tarball to further fine-tune
train_model_uri = model_uris.retrieve(
    model_id=train_model_id, model_version=train_model_version, model_scope=train_scope
)

Imposta iperparametri statici

Ora recuperiamo gli iperparametri predefiniti per questo modello LightGBM, come preconfigurato da JumpStart. Sovrascriviamo anche il num_boost_round iperparametro con un valore personalizzato.

# Retrieve the default hyper-parameters for fine-tuning the model
hyperparameters = hyperparameters.retrieve_default(
    model_id=train_model_id, model_version=train_model_version
)
# [Optional] Override default hyperparameters with custom values

Definire gli intervalli di iperparametri sintonizzabili

Quindi definiamo gli intervalli di iperparametri da essere ottimizzato dalla messa a punto automatica del modello. Definiamo il nome dell'iperparametro come previsto dal modello e quindi gli intervalli di valori da provare per questo iperparametro. L'ottimizzazione automatica del modello estrae campioni (uguali a max_jobs parametro) dallo spazio degli iperparametri, utilizzando una tecnica chiamata ricerca bayesiana. Per ogni campione di iperparametro disegnato, il sintonizzatore crea un processo di addestramento per valutare il modello con quella configurazione. Vedere il codice seguente:

hyperparameter_ranges = {
    "learning_rate": ContinuousParameter(1e-4, 1, scaling_type="Logarithmic"),
    "num_boost_round": IntegerParameter(2, 30),
    "early_stopping_rounds": IntegerParameter(2, 30),
    "num_leaves": IntegerParameter(10, 50),
    "feature_fraction": ContinuousParameter(0, 1),
    "bagging_fraction": ContinuousParameter(0, 1),
    "bagging_freq": IntegerParameter(1, 10),
    "max_depth": IntegerParameter(5, 30),
    "min_data_in_leaf": IntegerParameter(5, 50),
}

Inizializzare l'ottimizzazione automatica del modello

Iniziamo creando un file Estimator oggetto con tutte le risorse necessarie che definiscono il lavoro di formazione, come il modello pre-addestrato, l'immagine di formazione e lo script di formazione. Definiamo quindi a Sintonizzatore iperparametri oggetto per interagire con le API di ottimizzazione degli iperparametri di SageMaker.

I HyperparameterTuner accetta come parametri l'oggetto Estimator, la metrica target in base alla quale si decide il miglior set di iperparametri, il numero totale di job di training (max_jobs) per avviare il processo di ottimizzazione degli iperparametri e il numero massimo di processi di addestramento in parallelo da eseguire (max_parallel_jobs). I lavori di addestramento vengono eseguiti con l'algoritmo LightGBM e i valori dell'iperparametro che hanno il minimo mlogloss viene scelta la metrica. Per ulteriori informazioni sulla configurazione dell'ottimizzazione automatica del modello, vedere Procedure consigliate per l'ottimizzazione degli iperparametri.

# Create SageMaker Estimator instance
tabular_estimator = Estimator(
    role=aws_role,
    image_uri=train_image_uri,
    source_dir=train_source_uri,
    model_uri=train_model_uri,
    entry_point="transfer_learning.py",
    instance_count=1,
    instance_type=training_instance_type,
    max_run=360000,
    hyperparameters=hyperparameters,
    output_path=s3_output_location,
) tuner = HyperparameterTuner(
    estimator=tabular_estimator,
    objective_metric_name="multi_logloss",
    hyperparameter_ranges=hyperparameter_ranges,
    metric_definitions=[{"Name": "multi_logloss", "Regex": "multi_logloss: ([0-9\.]+)"}],
    strategy="Bayesian",
    max_jobs=10,
    max_parallel_jobs=2,
    objective_type="Minimize",
    base_tuning_job_name=training_job_name,
)

Nel codice precedente, diciamo al sintonizzatore di eseguire al massimo 10 esperimenti (max_jobs) e solo due esperimenti simultanei alla volta (max_parallel_jobs). Entrambi questi parametri tengono sotto controllo i costi e i tempi di formazione.

Esegui il lavoro di ottimizzazione

Per avviare il processo di ottimizzazione di SageMaker, chiamiamo il metodo di adattamento dell'oggetto sintonizzatore iperparametro e passiamo a Servizio di archiviazione semplice Amazon (Amazon S3) percorso dei dati di allenamento:

tuner.fit({"training": training_dataset_s3_path}, logs=True)

Mentre l'ottimizzazione automatica del modello ricerca i migliori iperparametri, puoi monitorarne l'avanzamento sulla console di SageMaker o su Amazon Cloud Watch. Al termine dell'addestramento, gli artefatti perfezionati del modello migliore vengono caricati nella posizione di output di Amazon S3 specificata nella configurazione dell'addestramento.

Distribuisci il modello migliore su un endpoint

Al termine del processo di ottimizzazione, il modello migliore è stato selezionato e archiviato in Amazon S3. Ora possiamo distribuire quel modello chiamando il metodo deploy di HyperparameterTuner oggetto e passando i parametri necessari, come il numero di istanze da utilizzare per l'endpoint creato, il loro tipo, l'immagine da distribuire e lo script da eseguire:

tuner.deploy(
    initial_instance_count=1,
    instance_type=inference_instance_type,
    entry_point="inference.py",
    image_uri=deploy_image_uri,
    source_dir=deploy_source_uri,
    endpoint_name=endpoint_name,
    enable_network_isolation=True
)

Ora possiamo testare l'endpoint creato effettuando richieste di inferenza. Puoi seguire il resto del processo nell'accompagnamento taccuino.

Conclusione

Con l'ottimizzazione automatica del modello in SageMaker, puoi trovare la versione migliore del tuo modello eseguendo lavori di addestramento sul set di dati fornito con uno degli algoritmi supportati. L'ottimizzazione automatica del modello consente di ridurre il tempo necessario per l'ottimizzazione di un modello ricercando automaticamente la migliore configurazione di iperparametri all'interno degli intervalli di iperparametri specificati.

In questo post, abbiamo mostrato il valore dell'esecuzione dell'ottimizzazione automatica del modello su un modello pre-addestrato JumpStart utilizzando le API SageMaker. Abbiamo utilizzato l'algoritmo LightGBM e definito un massimo di 10 lavori di addestramento. Sono stati inoltre forniti collegamenti a notebook di esempio che mostrano i framework ML che supportano l'ottimizzazione del modello JumpStart.

Per maggiori dettagli su come ottimizzare un modello JumpStart con l'ottimizzazione automatica del modello, fare riferimento al nostro esempio taccuino.


L'autore

Esegui l'ottimizzazione automatica dei modelli con Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Doug Mbaya è un architetto di soluzioni per partner senior con particolare attenzione ai dati e all'analisi. Doug lavora a stretto contatto con i partner AWS, aiutandoli a integrare dati e soluzioni di analisi nel cloud.

Esegui l'ottimizzazione automatica dei modelli con Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Kruthi Jayasimha Rao è un Partner Solutions Architect nel team Scale-PSA. Kruthi conduce le convalide tecniche per i Partner consentendo loro di progredire nel Percorso Partner.

Esegui l'ottimizzazione automatica dei modelli con Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Gianni Mitropulos è un ingegnere di sviluppo software per SageMaker Sintonizzazione automatica del modello.

Esegui l'ottimizzazione automatica dei modelli con Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Dottor Ashish Khetan è un Senior Applied Scientist con JumpStart di Amazon SageMaker ed Algoritmi integrati di Amazon SageMaker e aiuta a sviluppare algoritmi di apprendimento automatico. È un ricercatore attivo nell'apprendimento automatico e nell'inferenza statistica e ha pubblicato molti articoli in conferenze NeurIPS, ICML, ICLR, JMLR e ACL.

Timestamp:

Di più da Apprendimento automatico di AWS