Amazon MLA-C01: Addestramento del modello e ottimizzazione degli iperparametri — Guida allo studio
Fa parte della AWS Machine Learning Engineer Associate MLA-C01 — Guida allo studio. Esercitati con risposte verificate nel centro esami Amazon, oppure fai test cronometrati su ExamRoll.io.
Concetto fondamentale
L’addestramento di modelli in Amazon SageMaker è un processo orchestrato che combina codice di addestramento containerizzato, risorse di calcolo, storage persistente e, opzionalmente, infrastrutture di comunicazione distribuita. Un processo di addestramento (training job) di SageMaker è definito da un’immagine di addestramento o un estimator di framework, una specifica dei dati di input che punta a percorsi S3 e una configurazione delle risorse che include InstanceType, InstanceCount e VolumeSizeInGB. Per l’addestramento spot gestito (managed spot training), si imposta EnableManagedSpotTraining su true e si forniscono MaxWaitTimeInSeconds e MaxRuntimeInSeconds in modo che SageMaker possa fare offerte per la capacità inutilizzata (spare capacity) e riprendere o interrompere i processi entro la finestra temporale consentita. Il checkpointing è configurato tramite CheckpointConfig con S3Uri e LocalPath; quando si utilizzano istanze spot gestite è necessario eseguire checkpoint frequenti e impostare MaxWaitTimeInSeconds su un valore sufficientemente maggiore di MaxRuntimeInSeconds, in modo che i processi interrotti possano essere ritentati.
L’addestramento distribuito è implementato con strategie di parallelismo dei dati (data-parallel) o del modello (model-parallel). SageMaker supporta l’addestramento distribuito data-parallel nativo tramite PyTorch DistributedDataParallel o Horovod, e offre la libreria smdistributed con smdistributed.dataparallel per una comunicazione NCCL ottimizzata. Il parallelismo del modello è disponibile tramite smdistributed.modelparallel o partizionamenti specifici del framework. La comunicazione tra nodi ad alto throughput richiede famiglie di istanze con supporto NVLink ed EFA (Elastic Fabric Adapter)—selezionare tipi di istanza ml.p4d, ml.p3dn o altri abilitati per EFA e impostare use_mpi o use_nccL come richiesto dallo script di addestramento per ottenere un’efficiente operazione di all-reduce dei gradienti. Per processi su larga scala, fornire InstanceTypes con memoria GPU e caratteristiche di rete adeguate alle dimensioni delle partizioni (shard) del modello per bilanciare i rapporti tra calcolo e comunicazione.
L’ottimizzazione degli iperparametri è gestita da SageMaker Automatic Model Tuning (AMT), che avvia numerosi processi di addestramento per esplorare uno spazio di iperparametri e ottimizzare una metrica obiettivo. La configurazione HyperParameterTuningJobConfig include ParameterRanges, ResourceLimits con MaxNumberOfTrainingJobs e MaxParallelTrainingJobs, e una Strategy (Bayesiana per impostazione predefinita; le alternative includono Random o Grid per ricerche esaustive o meno correlate). Definire ObjectiveMetricName e MetricDefinitions in modo che AMT possa analizzare i log di addestramento; se l’obiettivo è il punteggio F1 (F1 score), impostare ObjectiveType su Maximize e assicurarsi che la regex di MetricDefinitions corrisponda alla metrica emessa. Per accelerare l’ottimizzazione risparmiando budget, utilizzare WarmStartConfig per riutilizzare i risultati di processi di ottimizzazione precedenti e abilitare le policy di arresto anticipato (EarlyStoppingType: Auto), dove supportate, per terminare i processi di addestramento non promettenti.
Servizi e configurazioni chiave
Quando si costruisce un flusso di lavoro end-to-end di addestramento e ottimizzazione, si utilizzano comunemente insieme diversi servizi AWS e funzionalità di SageMaker:
- Amazon SageMaker Training Jobs (API Estimator / CreateTrainingJob)
- SageMaker Automatic Model Tuning (CreateHyperParameterTuningJob)
- SageMaker Model Registry (ModelPackage e CreateModelPackageGroup)
- AWS Glue / AWS Lake Formation per la catalogazione centralizzata e sicura dei dati
- Amazon S3 per lo storage durevole di checkpoint e artefatti
All’interno della configurazione di un processo di addestramento, si specificherà la ResourceConfig, includendo InstanceType e InstanceCount, e si passeranno gli iperparametri tramite HyperParameters. Per l’addestramento spot gestito, includere EnableManagedSpotTraining e impostare CheckpointConfig.S3Uri in modo che i processi interrotti salvino il loro stato. Quando si avviano processi di ottimizzazione tramite CreateHyperParameterTuningJob, popolare HyperParameterTuningJobConfig.ParameterRanges con voci di tipo IntegerParameterRange, ContinuousParameterRange e CategoricalParameterRange, e impostare ResourceLimits con MaxNumberOfTrainingJobs e MaxParallelTrainingJobs. Utilizzare WarmStartConfig con ParentHyperParameterTuningJobs e WarmStartType impostato su IDENTICAL_DATA_AND_ALGORITHM o TRANSFER_LEARNING per avviare la ricerca (bootstrap) a partire da risultati precedenti.
Per la sicurezza e il controllo operativo, centralizzare gli artefatti dei modelli registrando oggetti ModelPackage in un ModelPackageGroup nel SageMaker Model Registry; impostare ModelApprovalStatus su PendingManualApproval per richiedere una modifica manuale ad Approved prima della distribuzione (deployment). Combinare gli eventi del Model Registry con AWS CodePipeline o AWS Step Functions per costruire un’azione di approvazione manuale che aggiorni ModelPackage.ModelApprovalStatus tramite l’API UpdateModelPackage. Per il monitoraggio degli endpoint attivi e il rilevamento del drift, abilitare DataCaptureConfig sugli endpoint e utilizzare SageMaker Model Monitor per creare una baseline delle statistiche pre-distribuzione con CreateMonitoringSchedule e, successivamente, utilizzare l’acquisizione dati di BatchTransform o RealTimeInference con S3 DestinationS3Uri per una valutazione continua.
Pattern di progettazione e compromessi
La scelta di un training distribuito data-parallel con molti shard più piccoli consente una scalabilità lineare ed è solitamente il pattern più semplice quando il modello entra nella memoria di una singola GPU. Gli approcci data-parallel che utilizzano PyTorch DDP o Horovod scalano bene se l’infrastruttura di rete è ad alte prestazioni e le istanze supportano EFA e NCCL. Quando i pesi del modello superano la memoria di una singola GPU, è necessario il model-parallelism o il pipeline parallelism; smdistributed.modelparallel aiuta a partizionare i tensori tra le GPU, ma aumenta la complessità nel debugging, nel checkpointing e nel bilanciamento tra calcolo e comunicazione. Un pattern di progettazione pratico è quello ibrido: utilizzare il model sharding per i layer molto grandi e il data parallelism tra i gruppi di worker.
I compromessi nell’ottimizzazione degli iperparametri riguardano principalmente il tempo rispetto al costo. Una ricerca ampia di tipo Random o Grid è semplice ma costosa; l’ottimizzazione bayesiana (la strategia predefinita di AMT) utilizza i risultati precedenti per focalizzare la ricerca e può ridurre il numero di processi di training necessari per raggiungere una buona configurazione. Utilizzare WarmStartConfig per trasferire le conoscenze di ottimizzazione precedenti a nuovi esperimenti quando le modifiche al dataset o al modello sono incrementali. La parallelizzazione di molti processi di training accelera l’ottimizzazione in termini di tempo effettivo (wall-clock), ma aumenta il costo istantaneo e può raggiungere le quote di servizio; configurare MaxParallelTrainingJobs in modo conservativo e utilizzare istanze Spot per i processi di ottimizzazione per ridurre la spesa, ma configurare sempre CheckpointConfig e MaxWaitTimeInSeconds per tollerare le interruzioni.
La frequenza dei checkpoint e la scelta dello storage influenzano sia la resilienza che il costo. Checkpoint frequenti riducono la perdita di calcoli in caso di interruzioni, ma aggiungono overhead di throughput e latenza su S3; utilizzare il checkpointing incrementale all’interno del container (LocalPath) e sincronizzare in modo asincrono su S3 per un ripristino durevole. Quando si esegue il training su istanze spot gestite, impostare un intervallo di checkpoint robusto e utilizzare un numero inferiore di istanze per i processi di training che possono essere completati entro le tipiche finestre di interruzione, oppure progettare il ciclo di training per tollerare la preemption utilizzando gli hook SIGTERM forniti da SageMaker per garantire checkpoint consistenti.
Errori comuni e criteri decisionali
Un errore operativo comune è fare affidamento su immagini container personalizzate senza test delle prestazioni; le immagini fornite dal framework (immagini predefinite di SageMaker per PyTorch, TensorFlow, XGBoost) si avviano più velocemente, includono l’integrazione per l’emissione automatica delle metriche e minimizzano la latenza di cold-start. Un altro errore frequente nell’HPO è la configurazione errata di MetricDefinitions o ObjectiveMetricName, che impedisce ad AMT di trovare e ottimizzare il segnale corretto; convalidare sempre la regex utilizzata per estrarre le metriche dai log prima di scalare un processo di tuning. Trascurare di abilitare CheckpointConfig quando si utilizza il training spot gestito causerà la perdita dei progressi del processo in caso di interruzione e può portare a un tempo di esecuzione cumulativo più lungo e a costi maggiori.
Le decisioni in materia di sicurezza e governance devono essere incentrate sul principio del privilegio minimo (least privilege) e sul controllo del ciclo di vita del modello. Utilizzare SageMaker Model Registry insieme al flusso di lavoro di approvazione di ModelPackage e alle policy IAM per garantire che solo le versioni autorizzate di ModelPackage raggiungano la produzione. Proteggere i dati di training in S3 con la crittografia (SSE-S3 o SSE-KMS) e controllare l’accesso tramite ruoli IAM assunti dal processo di training (parametro RoleArn in CreateTrainingJob) e Lake Formation dove sono richieste policy di accesso centralizzate ai dati. Per il rilevamento del drift e l’analisi delle cause principali (root-cause analysis), combinare SageMaker Model Monitor con gli artefatti di Model Registry per tracciare quali versioni degli artefatti si degradano e attivare flussi di approvazione con intervento umano (human-in-the-loop) prima di una nuova implementazione.
Problema Pratico: Scenario d’Uso
Azienda: FinGuard Inc. — Sfida: costruire un modello di rilevamento frodi addestrato su log di transazioni archiviati in S3 e profili cliente in un database MySQL on-premise, minimizzare i costi, tollerare le interruzioni delle istanze spot, eseguire l’ottimizzazione automatica degli iperparametri, imporre l’approvazione manuale prima del deployment in produzione e rilevare bias o drift post-deployment.
Aggregazione e preparazione dei dati: Ingerire direttamente i log delle transazioni da S3 e utilizzare AWS Glue con una connessione JDBC al database MySQL on-premise per eseguire il crawling e catalogare le tabelle dei profili cliente. Registrare le feature curate in un FeatureGroup di SageMaker Feature Store per un accesso a bassa latenza e per garantire la coerenza dello schema; crittografare l’OfflineStore S3 con SSE-KMS e controllare l’accesso tramite policy IAM e Lake Formation.
Training e configurazione distribuita: Utilizzare un Estimator di SageMaker con un container XGBoost integrato per il modello iniziale; configurare ResourceConfig con InstanceType ml.m5.4xlarge per il baseline e scalare a ml.p3.2xlarge per esperimenti accelerati con GPU. Per esperimenti di grandi dimensioni, utilizzare smdistributed.dataparallel su istanze abilitate per EFA (ml.p3dn.24xlarge o ml.p4d.24xlarge) e impostare CheckpointConfig.S3Uri su s3://finguard-checkpoints/{job-name} e LocalPath su /opt/ml/checkpoints. Abilitare il training spot gestito impostando EnableManagedSpotTraining su true e impostando MaxWaitTimeInSeconds ad almeno il doppio di MaxRuntimeInSeconds per consentire i tentativi (retry).
Ottimizzazione degli iperparametri: Avviare SageMaker Automatic Model Tuning con HyperParameterTuningJobConfig.ParameterRanges per eta, max_depth e scale_pos_weight (per affrontare lo sbilanciamento delle classi senza un pesante pre-processing). Impostare ObjectiveMetricName su validation:F1 e fornire una regex in MetricDefinitions che estragga il valore F1. Utilizzare la strategia Bayesian, ResourceLimits con MaxNumberOfTrainingJobs 50 e MaxParallelTrainingJobs 5, e WarmStartConfig se si itera partendo da risultati di tuning precedenti. Eseguire i processi di tuning su istanze spot gestite per ridurre i costi, assicurandosi che CheckpointConfig sia attivo per ogni processo di training.
Governance e deployment del modello: Registrare gli artefatti del modello migliore nel SageMaker Model Registry come un ModelPackage all’interno di un ModelPackageGroup e impostare ModelApprovalStatus su PendingManualApproval. Implementare una pipeline AWS Step Functions che includa un passo di approvazione umana (task manuale) e, una volta approvato, chiami UpdateModelPackage per impostare ModelApprovalStatus su Approved, quindi attivi CreateModel e CreateEndpointConfig/CreateEndpoint per il deployment. Utilizzare DataCaptureConfig dell’endpoint per catturare le richieste e le risposte di inferenza in s3://finguard-capture per Model Monitor.
Motivazione della scelta di AWS: AWS Glue centralizza e cataloga sorgenti di dati ibride e si integra con SageMaker; SageMaker Feature Store standardizza le feature e le protegge per il training e l’inferenza; il training spot gestito più CheckpointConfig riduce i costi di calcolo preservando i progressi attraverso le interruzioni; SageMaker Automatic Model Tuning con MetricDefinitions e WarmStartConfig accelera la ricerca di iperparametri robusti controllando al contempo il budget; Model Registry con PendingManualApproval più Step Functions o CodePipeline impone la governance e la promozione dei modelli in produzione secondo il principio del privilegio minimo (least-privilege); SageMaker Model Monitor e DataCaptureConfig forniscono il rilevamento automatico di drift e bias per controlli continui sullo stato di salute del modello.
← Ingegneria dei dati e ingegneria delle feature · Tutti i domini · Valutazione e selezione del modello →
Esercitati su queste domande → · Pratica cronometrata su ExamRoll.io →
Pass the whole exam — not just this question
You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.
Supera l'esame →