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.
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.
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:
- Recupera il modello pre-addestrato di JumpStart e il contenitore delle immagini.
- Imposta iperparametri statici.
- Definire gli intervalli di iperparametri sintonizzabili.
- Inizializzare l'ottimizzazione automatica del modello.
- Esegui il lavoro di ottimizzazione.
- 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
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.
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.
Gianni Mitropulos è un ingegnere di sviluppo software per SageMaker Sintonizzazione automatica del modello.
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.
- Coinsmart. Il miglior scambio di bitcoin e criptovalute d'Europa.
- Platoblockchain. Web3 Metaverse Intelligence. Conoscenza amplificata. ACCESSO LIBERO.
- Criptofalco. Radar Altcoin. Prova gratuita.
- Fonte: https://aws.amazon.com/blogs/machine-learning/run-automatic-model-tuning-with-amazon-sagemaker-jumpstart/
- "
- 10
- 100
- 2020
- 2022
- Chi siamo
- operanti in
- attivo
- Vantaggio
- algoritmo
- Algoritmi
- Tutti
- Amazon
- analitica
- API
- Attività
- Automatico
- disponibilità
- AWS
- MIGLIORE
- incassato
- affari
- chiamata
- Scegli
- scelto
- classificazione
- Cloud
- codice
- Uncommon
- conferenze
- Configurazione
- ritiene
- consolle
- Contenitore
- di controllo
- creare
- creato
- crea
- Creazione
- Attualmente
- costume
- dati
- deciso
- dimostrare
- schierare
- schierato
- deployment
- dettagli
- sviluppare
- Mercato
- diverso
- docker
- facilmente
- in modo efficiente
- consentendo
- endpoint
- ingegnere
- Ingegneri
- valutare
- qualunque cosa
- esempio
- previsto
- esperimento
- Sfruttare
- Caratteristiche
- trova
- in forma
- Focus
- seguire
- i seguenti
- ulteriormente
- Generale
- altezza
- aiutare
- aiuta
- alta qualità
- Come
- Tutorial
- HTTPS
- Immagine
- realizzare
- informazioni
- integrare
- coinvolto
- IT
- Lavoro
- Offerte di lavoro
- lanciare
- apprendimento
- di sollevamento
- Collegamento
- località
- macchina
- machine learning
- Fare
- Marzo
- ML
- modello
- modelli
- Monitorare
- Scopri di più
- maggior parte
- multiplo
- numero
- ottimizzazione
- OTTIMIZZA
- ottimizzazione
- partner
- partner
- Di passaggio
- piattaforma
- Popolare
- Problema
- problemi
- processi
- fornire
- fornisce
- domanda
- rapidamente
- ridurre
- riducendo
- richieste
- necessario
- Risorse
- REST
- Risultati
- Correre
- running
- Scienziato
- scienziati
- Cerca
- selezionato
- set
- vetrina
- Un'espansione
- So
- Software
- lo sviluppo del software
- soluzione
- Soluzioni
- RISOLVERE
- lo spazio
- inizia a
- iniziato
- statistiche
- conservazione
- Strategia
- supporto
- supportato
- supporti
- Target
- task
- team
- Consulenza
- test
- Attraverso
- tempo
- richiede tempo
- Titolo
- Training
- prova
- uso
- APPREZZIAMO
- varietà
- while
- entro
- lavori