Sposta i modelli ML di Amazon SageMaker Autopilot dalla sperimentazione alla produzione utilizzando Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Sposta i modelli Amazon SageMaker Autopilot ML dalla sperimentazione alla produzione utilizzando Amazon SageMaker Pipelines

Pilota automatico Amazon SageMaker crea, addestra e ottimizza automaticamente i migliori modelli di machine learning (ML) personalizzati in base ai tuoi dati. È una soluzione di machine learning automatizzato (AutoML) che elimina il pesante lavoro di modelli ML scritti a mano che richiedono competenze ML. I data scientist devono solo fornire un set di dati tabulare e selezionare la colonna di destinazione da prevedere e Autopilot deduce automaticamente il tipo di problema, esegue la preelaborazione dei dati e l'ingegneria delle funzionalità, seleziona gli algoritmi e la modalità di training ed esplora diverse configurazioni per trovare il miglior modello ML. Quindi puoi distribuire direttamente il modello su un file Amazon Sage Maker endpoint o ripetere le soluzioni consigliate per migliorare ulteriormente la qualità del modello.

Sebbene Autopilot elimini il pesante lavoro di creazione di modelli ML, gli ingegneri MLOps devono comunque creare, automatizzare e gestire flussi di lavoro ML end-to-end. Pipeline di Amazon SageMaker ti aiuta ad automatizzare le diverse fasi del ciclo di vita del machine learning, tra cui la preelaborazione dei dati, l'addestramento, l'ottimizzazione e la valutazione dei modelli di machine learning, nonché la loro distribuzione.

In questo post mostriamo come creare un flusso di lavoro ML end-to-end per addestrare e valutare un modello ML generato da Autopilot utilizzando Pipeline e registrarlo nel file Registro dei modelli SageMaker. Il modello ML con le migliori prestazioni può essere distribuito su un endpoint SageMaker.

Panoramica del set di dati

Utilizziamo il set di dati di riammissione ospedaliera disponibile al pubblico per i pazienti diabetici per prevedere la riammissione dei pazienti diabetici entro 30 giorni dalla dimissione. È una versione campionata del “Set di dati sul diabete di 130 ospedali statunitensi per gli anni 1999-2008”. Questo è un problema di classificazione multiclasse perché le opzioni di riammissione lo sono entrambe < 30 se il paziente viene riammesso entro 30 giorni, > 30 se il paziente viene ricoverato dopo 30 giorni, oppure no se non è stata registrata alcuna riammissione.

Il set di dati contiene 50,000 righe e 15 colonne. Ciò include informazioni demografiche sui pazienti insieme ai registri delle visite ospedaliere e readmitted come colonna di destinazione. La tabella seguente riepiloga i dettagli della colonna.

Nome colonna Descrizione
Razza_caucasica Valori: 0 per no, 1 per sì
Razza_Africano_Americano Valori: 0 per no, 1 per sì
Razza_ispanica Valori: 0 per no, 1 per sì
Razza_Asiatica Valori: 0 per no, 1 per sì
Razza_Altro Valori: 0 per no, 1 per sì
Età Fascia di età 0-100
Tempo in ospedale Numero di giorni tra il ricovero e la dimissione
Numero di procedure di laboratorio Numero di test di laboratorio eseguiti durante l'incontro
Numero di farmaci Numero di nomi generici distinti somministrati durante l'incontro
Numero di visite di emergenza Numero di visite d'urgenza del paziente nell'anno precedente l'incontro
Numero di visite ospedaliere Numero di visite ospedaliere del paziente nell'anno precedente l'incontro
Numero di diagnosi Numero di diagnosi inserite nel sistema
Cambio di farmaci Indica se c'è stato un cambiamento nei farmaci per diabetici (dosaggio o nome generico); valori: 0 e 1
Farmaci per il diabete Indica se sono stati prescritti farmaci per il diabete; valori: 0 per nessuna modifica della prescrizione e 1 per modifica della prescrizione
Riammesso Giorni alla riammissione ospedaliera; valori: 30 se il paziente è stato ricoverato da più di 30 giorni e no per nessuna registrazione di riammissione

Panoramica della soluzione

Usiamo Pipeline in Amazon Sage Maker Studio orchestrare diversi passaggi della pipeline necessario per addestrare un modello di pilota automatico. UN Esperimento pilota automatico viene creato ed eseguito utilizzando gli SDK AWS come descritto in questo post. I lavori di formazione del pilota automatico avviano i propri processi backend SageMaker dedicati e dedicati Chiamate API SageMaker sono necessari per avviare nuovi lavori di formazione, monitorare gli stati dei lavori di formazione e richiamare modelli Autopilot addestrati.

Di seguito sono riportati i passaggi necessari per questo processo di formazione end-to-end sull'Autopilota:

  1. Creare un lavoro di formazione sul pilota automatico.
  2. Monitorare lo stato del lavoro di formazione.
  3. Valutare le prestazioni del modello addestrato su un set di dati di test.
  4. Registrare il modello nel registro dei modelli.

Passaggi della pipeline SageMaker

Quando il modello registrato soddisfa i requisiti di prestazioni previsti dopo una revisione manuale, è possibile distribuire il modello in un file Endpoint di SageMaker utilizzando uno script di distribuzione autonomo.

Il diagramma dell'architettura seguente illustra i diversi passaggi della pipeline necessari per raggruppare tutti i passaggi in una pipeline di addestramento del pilota automatico riproducibile, automatizzata e scalabile. Ogni passaggio è responsabile di un'attività specifica nel flusso di lavoro:

  1. An AWS Lambda La funzione avvia il processo di addestramento dell'autopilota.
  2. Una fase di richiamata monitora continuamente lo stato del lavoro.
  3. Quando lo stato del lavoro di formazione è completo, utilizziamo un lavoro di elaborazione SageMaker per valutare le prestazioni del modello.
  4. Infine, utilizziamo un'altra funzione Lambda per registrare il modello ML e le metriche delle prestazioni nel registro del modello SageMaker.

I file di dati vengono letti da Servizio di archiviazione semplice Amazon (Amazon S3) e i passaggi della pipeline vengono chiamati in sequenza.

Diagramma dell'architettura della pipeline SageMaker

Diagramma dell'architettura della pipeline SageMaker

Nelle sezioni seguenti esaminiamo il codice e discutiamo i componenti di ogni passaggio. Per distribuire la soluzione, fare riferimento a Repository GitHub, che fornisce istruzioni dettagliate per l'implementazione di un flusso di lavoro MLOps di Autopilot tramite Pipelines.

Prerequisiti

Per questa procedura dettagliata, completare i seguenti prerequisiti:

  1. Crea un file Account AWS.
  2. Crea un ambiente Studio.
  3. Crea due Gestione dell'identità e dell'accesso di AWS (IAM) ruoli: LambdaExecutionRole ed SageMakerExecutionRole, con le autorizzazioni descritte nel notebook SageMaker. Le policy gestite dovrebbero essere ulteriormente ridotte per migliorare la sicurezza. Per istruzioni, fare riferimento a Creazione di un ruolo per delegare le autorizzazioni a un utente IAM.
  4. Sulla console di Studio, carica il codice dal file Repository GitHub.
  5. Apri il taccuino SageMaker autopilot_pipelines_demo_notebook.ipynb ed esegui le celle sotto Ottieni il set di dati per scaricare i dati e caricarli nel bucket S3.
    1. Scarica i dati e decomprimili in una cartella denominata data:
      !unzip -o data/data.zip -d data
      !mkdir data
      !wget https://static.us-east-1.prod.workshops.aws/public/d56bf7ad-9738-4edf-9be0-f03cd22d8cf2/static/resources/hcls/diabetic.zip -nc -O data/data.zip
      

    2. Dividi i dati in file train-val e test e caricali nel tuo bucket S3. Il file train-val viene automaticamente suddiviso in set di dati di training e convalida da Autopilot. Il file di test è diviso in due file separati: un file senza la colonna di destinazione e un altro file con solo la colonna di destinazione.
      data = pd.read_csv(DATASET_PATH)
      train_val_data = data.sample(frac=0.8)
      test_data = data.drop(train_val_data.index)
      train_val_data.to_csv(train_val_dataset_s3_path.default_value, index=False, header=True)
      test_data.drop(target_attribute_name.default_value, axis=1).to_csv(
      x_test_s3_path.default_value, index=False, header=False
      )
      test_data[target_attribute_name.default_value].to_csv(
      y_test_s3_path.default_value, index=False, header=True)
      

Quando il set di dati è pronto per l'uso, ora possiamo configurare le pipeline per stabilire un processo ripetibile per creare e addestrare modelli ML personalizzati utilizzando il pilota automatico. Noi usiamo Boto3 e la SDK di SageMaker per avviare, monitorare e valutare i lavori AutoML in modo automatizzato.

Definire i passaggi della pipeline

In questa sezione ti guideremo attraverso la configurazione dei quattro passaggi della pipeline.

Avvia il lavoro del pilota automatico

Questo passaggio della pipeline utilizza a Passo Lambda, che esegue una funzione Lambda serverless. Utilizziamo un passaggio Lambda perché la chiamata API ad Autopilot è leggera. Le funzioni Lambda sono serverless e adatte a questa attività. Per ulteriori informazioni sui passaggi Lambda, fare riferimento a Utilizza un passaggio Lambda SageMaker Pipeline per distribuzioni di modelli leggeri. La funzione Lambda nel file start_autopilot_job.py copione crea un lavoro del pilota automatico.

Utilizziamo la chiamata API Boto3 Autopilot create_auto_ml_job per specificare la configurazione del lavoro Autopilot, con i seguenti parametri:

  • AutoMLJobName – Il nome del lavoro del pilota automatico.
  • InputDataConfig – I dati di addestramento, la posizione dei dati in Amazon S3 e Tipo di dati S3 con valori validi come S3Prefix, ManifestFilee AugmentedManifestFile.
  • OutputDataConfig – Il percorso di output S3 in cui sono archiviati gli artefatti del processo AutoML.
  • Tipo di problema - L' tipo di problema (MulticlassClassification per il nostro caso d'uso).
  • AutoMLJobObject - F1macro è la nostra metrica oggettiva per il nostro caso d'uso.
  • AutoMLJobConfig - L' modalità di allenamento è specificato qui. Usiamo quello appena rilasciato modalità di formazione d'insieme offerto da AutoGluone.

Vedi il seguente codice:

def lambda_handler(event, context):
sagemaker_client.create_auto_ml_job(
AutoMLJobName=event["AutopilotJobName"],
InputDataConfig=[
{
"DataSource": {
"S3DataSource": {
"S3DataType": "S3Prefix",
"S3Uri": event["TrainValDatasetS3Path"],
}
},
"TargetAttributeName": event["TargetAttributeName"],
}
],
OutputDataConfig={"S3OutputPath": event["TrainingOutputS3Path"]},
ProblemType=event["ProblemType"],
AutoMLJobObjective={"MetricName": event["AutopilotObjectiveMetricName"]},
AutoMLJobConfig={
"CompletionCriteria": {
"MaxCandidates": event["MaxCandidates"],
"MaxRuntimePerTrainingJobInSeconds": event[
"MaxRuntimePerTrainingJobInSeconds"
],
"MaxAutoMLJobRuntimeInSeconds": event["MaxAutoMLJobRuntimeInSeconds"],
},
"Mode": event["AutopilotMode"],
},
RoleArn=event["AutopilotExecutionRoleArn"],
)

Controlla lo stato del lavoro del pilota automatico

A Passaggio di richiamata ci aiuta a tenere traccia dello stato del lavoro di formazione dell'Autopilota.

Il passaggio tiene traccia ripetutamente dello stato del processo di addestramento utilizzando una funzione Lambda separata in check_autopilot_job_status.py fino al suo completamento.

Il passaggio Callback inserisce un token in un file Servizio Amazon Simple Queue (Amazon SQS) coda che attiva una funzione Lambda per verificare lo stato del processo di formazione:

  • Se il lavoro è ancora in esecuzione, la funzione Lambda solleva un'eccezione e il messaggio viene reinserito nella coda SQS
  • Se il lavoro è completo, la funzione Lambda invia un messaggio di successo al file Callback passaggio e la pipeline continua con il passaggio successivo

Usiamo una combinazione di a Callback step e una funzione Lambda. Esiste invece un'opzione alternativa che consiste nell'utilizzare un lavoro di elaborazione SageMaker.

Valuta il miglior modello di Autopilot

I Fase di elaborazione SageMaker lancia un file Processo di trasformazione batch di SageMaker per valutare il modello Autopilot addestrato rispetto a un set di dati di valutazione (il set di test salvato nel bucket S3) e genera il report di valutazione delle metriche delle prestazioni e le metriche di spiegabilità del modello. Lo script di valutazione accetta il nome del processo Autopilot come argomento di input e avvia il processo di trasformazione batch.

Una volta completato il processo di trasformazione batch, otteniamo previsioni di output per il set di test. Le previsioni di output vengono confrontate con le etichette effettive (verità di base) utilizzando le funzioni metriche di Scikit-learn. Valutiamo i nostri risultati in base a punteggio F1, precisionee ricordare. Le metriche delle prestazioni vengono salvate in un file JSON, a cui viene fatto riferimento durante la registrazione del modello nel passaggio successivo.

Registra il modello di pilota automatico

Utilizziamo un altro passaggio Lambda, in cui viene inserita la funzione Lambda register_autopilot_job.py registra il modello Autopilot nel registro del modello SageMaker utilizzando il rapporto di valutazione ottenuto nella precedente fase di elaborazione di SageMaker. Qui viene utilizzato un passaggio Lambda per efficienza in termini di costi e latenza.

A questo punto, abbiamo registrato con successo il nostro nuovo modello Autopilot nel registro dei modelli SageMaker. Puoi visualizzare il nuovo modello su Studio scegliendo Registro dei modelli sul Risorse di SageMaker menù e apertura autopilot-demo-package. Scegli qualsiasi versione di un lavoro di formazione per visualizzare le metriche oggettive di seguito Qualità del modello.

Sposta i modelli ML di Amazon SageMaker Autopilot dalla sperimentazione alla produzione utilizzando Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

È possibile utilizzare il rapporto di spiegabilità sul Spiegabilità scheda per comprendere le previsioni del tuo modello.

Sposta i modelli ML di Amazon SageMaker Autopilot dalla sperimentazione alla produzione utilizzando Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Per visualizzare gli esperimenti eseguiti per ciascun modello creato, accedere al file Esperimenti e prove pagina. Scegli (fai clic con il pulsante destro del mouse) uno degli esperimenti elencati e scegli Descrivere il lavoro AutoML per visualizzare la classifica dei modelli.

Sposta i modelli ML di Amazon SageMaker Autopilot dalla sperimentazione alla produzione utilizzando Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Per visualizzare i passaggi della pipeline sul file Esperimenti e prove pagina, scegli (fai clic con il pulsante destro del mouse) l'esperimento e scegli Apri i dettagli della pipeline.

Sposta i modelli ML di Amazon SageMaker Autopilot dalla sperimentazione alla produzione utilizzando Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Crea ed esegui la pipeline

Dopo aver definito i passaggi della pipeline, li combiniamo in un file Condotto SageMaker. I passaggi vengono eseguiti in sequenza. La pipeline esegue tutti i passaggi per un processo AutoML, utilizzando Autopilot per la formazione, la valutazione del modello e la registrazione del modello. Vedere il seguente codice:

pipeline = Pipeline(
name="autopilot-demo-pipeline",
parameters=[
autopilot_job_name,
target_attribute_name,
train_val_dataset_s3_path,
x_test_s3_path,
y_test_s3_path,
max_autopilot_candidates,
max_autopilot_job_runtime,
max_autopilot_training_job_runtime,
instance_count,
instance_type,
model_approval_status,
],
steps=[
step_start_autopilot_job,
step_check_autopilot_job_status_callback,
step_autopilot_model_evaluation,
step_register_autopilot_model,
],
sagemaker_session=sagemaker_session,
)

Distribuire il modello

Dopo aver esaminato manualmente le prestazioni del modello ML, possiamo distribuire il nostro modello appena creato su un endpoint SageMaker. Per questo, possiamo eseguire la cella nel notebook che crea l'endpoint del modello utilizzando la configurazione del modello salvata nel registro del modello SageMaker.

Tieni presente che questo script è condiviso a scopo dimostrativo, ma è consigliabile seguire una pipeline CI/CD più solida per la distribuzione in produzione. Per ulteriori informazioni, fare riferimento a Creazione, automazione, gestione e ridimensionamento dei flussi di lavoro ML utilizzando Amazon SageMaker Pipelines.

Conclusione

Questo post descrive un approccio basato su pipeline ML di facile utilizzo per addestrare automaticamente modelli ML tabulari (AutoML) utilizzando Autopilot, Pipelines e Studio. AutoML migliora l'efficienza dei professionisti del machine learning, accelerando il percorso dalla sperimentazione del machine learning alla produzione senza la necessità di competenze approfondite nel machine learning. Abbiamo delineato i rispettivi passaggi della pipeline necessari per la creazione, la valutazione e la registrazione del modello ML.

Inizia accedendo al codice su Repository GitHub per addestrare e distribuire i tuoi modelli AutoML personalizzati.

Per ulteriori informazioni su pipeline e pilota automatico, fare riferimento a Pipeline di Amazon SageMaker ed Automatizza lo sviluppo del modello con Amazon SageMaker Autopilot, Rispettivamente.


Informazioni sugli autori

Sposta i modelli ML di Amazon SageMaker Autopilot dalla sperimentazione alla produzione utilizzando Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Pierre de Malliard è un Data Scientist Full-Stack per AWS e la sua passione è aiutare i clienti a migliorare i risultati aziendali con l'apprendimento automatico. Ha sviluppato soluzioni AI/ML nel settore sanitario. Possiede numerose certificazioni AWS. Nel tempo libero, Pierre pratica lo sci fuoripista e la pesca subacquea.

Sposta i modelli ML di Amazon SageMaker Autopilot dalla sperimentazione alla produzione utilizzando Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Paavani Dua è uno scienziato applicato nell'organizzazione AWS AI. Presso Amazon ML Solutions Lab, lavora con i clienti per risolvere i loro problemi aziendali utilizzando soluzioni ML. Al di fuori del lavoro, le piace fare escursioni, leggere e cucinare.

Sposta i modelli ML di Amazon SageMaker Autopilot dalla sperimentazione alla produzione utilizzando Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Marcello Aberle è un ingegnere ML nell'organizzazione AWS AI. Dirige le attività di MLOps presso Amazon ML Solutions Lab, aiutando i clienti a progettare e implementare sistemi ML scalabili. La sua missione è guidare i clienti nel loro viaggio verso il ML aziendale e accelerare il loro percorso verso la produzione. È un ammiratore della natura della California e gli piace fare escursioni e andare in bicicletta intorno a San Francisco.

Timestamp:

Di più da Apprendimento automatico di AWS