Il ciclo MLOps su AWS

MLOps porta i principi DevOps nel ciclo di vita dei modelli: build, test, deploy e monitoring devono essere ripetibili, versionati e automatizzati. Su AWS il fulcro è Amazon SageMaker, che copre l’intera pipeline ML e si integra con servizi di orchestrazione (Step Functions, EventBridge) e di infrastructure as code (CloudFormation). L’obiettivo d’esame non è ricordare i click, ma sapere quale servizio scegliere per ogni esigenza e come si incastrano fra loro in un flusso CI/CD.

SageMaker Pipelines

Amazon SageMaker Pipelines è il servizio ML-native per definire un workflow come DAG di step, orchestrato dentro SageMaker. Gli step chiave da riconoscere:

  • Processing step: preparazione dati, feature engineering e valutazione del modello (es. calcolo di RMSE per una regressione o F1/recall per una classificazione sbilanciata).
  • Training step: addestramento, con output degli artifacts su S3.
  • Condition step: ramificazione condizionale su una metrica di valutazione (es. registra solo se accuracy o F1 superano una soglia).
  • Register model step: registra la versione nel Model Registry.
  • Altri step reali: batch transform, tuning e create model.

Vantaggi: parametri di pipeline riutilizzabili, step caching per non rieseguire step invariati, e lineage tracking automatico degli artifacts. È la scelta di default quando il flusso resta interno a SageMaker.

Model Registry e l’approval gate

SageMaker Model Registry organizza i modelli in un model package group; ogni addestramento produce una nuova versione (model package). Ogni versione ha un approval status: PendingManualApproval, Approved o Rejected. Questo status è il vero gate CI/CD: il deploy in produzione parte solo sulle versioni portate ad Approved, dopo revisione umana o controlli automatici. Il Registry conserva anche metriche, container image e lineage, così da poter confrontare versioni e fare rollback a una precedente già approvata.

Orchestrazione: EventBridge, Step Functions, CloudFormation

Amazon EventBridge rende il flusso event-driven: cattura l’evento di cambio stato del model package e, con una rule, innesca l’automazione (tipicamente una Lambda o l’avvio di una pipeline di deploy) quando lo stato passa ad Approved. È il collante che trasforma l’approvazione manuale nel trigger del deploy, senza polling.

AWS Step Functions orchestra più servizi in una state machine: SageMaker, Lambda, Glue, EMR, ECS. Va preferito a SageMaker Pipelines quando il workflow esce dai confini di SageMaker e deve coordinare servizi eterogenei, con branching, retry e gestione errori a livello di stato.

AWS CloudFormation definisce le risorse come codice: Model, EndpointConfig ed Endpoint diventano template versionati, per deploy riproducibili e identici tra dev, staging e prod. Per l’MLOps end-to-end, SageMaker Projects fornisce template pronti che cablano CodePipeline, CodeBuild e un repository per build e deploy automatizzati.

Trappole tipiche d’esame

  • Deploy solo dopo revisione umana → soluzione: usa il Model Registry con approval status PendingManualApproval come gate; il deploy scatta solo su versioni Approved, non alla fine del training.
  • Automatizzare il deploy alla promozione del modello → soluzione: una rule di Amazon EventBridge sull’evento di cambio stato del model package che invoca Lambda o la pipeline di deploy; non serve un cron o un polling.
  • Workflow tutto interno a SageMaker vs orchestrazione multi-servizio → soluzione: SageMaker Pipelines se resti in SageMaker (con lineage e Model Registry integrati); AWS Step Functions se devi coordinare anche Glue, EMR, Lambda o ECS.
  • Registrare il modello solo se supera una soglia di qualità → soluzione: inserisci un Condition step nella pipeline che valuta la metrica corretta (RMSE per regressione, F1/recall per classi sbilanciate) prima del register model step, non un controllo manuale a valle.
  • Endpoint riproducibili e identici tra ambienti → soluzione: definisci Model, EndpointConfig ed Endpoint in AWS CloudFormation (infrastructure as code); evita la creazione manuale, non ripetibile e non versionata.
  • Pipeline CI/CD completa con build e repository → soluzione: SageMaker Projects genera i template con CodePipeline/CodeBuild; le SageMaker Pipelines da sole orchestrano gli step ML ma non sono il sistema CI/CD del codice.