Pilota automatico Amazon SageMaker consente alle organizzazioni di creare e distribuire rapidamente un modello di machine learning (ML) end-to-end e una pipeline di inferenza con poche righe di codice o addirittura senza alcun codice affatto con Amazon Sage Maker Studio. Autopilot allevia il lavoro pesante della configurazione dell'infrastruttura e il tempo necessario per costruire un'intera pipeline, inclusa l'ingegneria delle funzionalità, la selezione del modello e l'ottimizzazione degli iperparametri.
In questo post, mostriamo come passare dai dati grezzi a una pipeline di inferenza solida e completamente distribuita con Autopilot.
Panoramica della soluzione
Usiamo Il set di dati pubblico di Lyft sul bike sharing per questa simulazione per prevedere se un utente partecipa o meno al Programma Bike Share for All. Questo è un semplice problema di classificazione binaria.
Vogliamo mostrare quanto sia facile creare una pipeline di inferenza automatizzata e in tempo reale per classificare gli utenti in base alla loro partecipazione al programma Bike Share for All. A tal fine, simuliamo una pipeline di acquisizione e inferenza di dati end-to-end per una società di bike sharing immaginaria che opera nella Bay Area di San Francisco.
L'architettura è suddivisa in due parti: la pipeline di importazione e la pipeline di inferenza.
Ci concentriamo principalmente sulla pipeline ML nella prima sezione di questo post e esaminiamo la pipeline di importazione dei dati nella seconda parte.
Prerequisiti
Per seguire questo esempio, completare i seguenti prerequisiti:
- Crea una nuova istanza notebook SageMaker.
- Creare un Firehose dati Amazon Kinesis flusso di consegna con un AWS Lambda funzione di trasformazione. Per istruzioni, vedere Trasformazione dei dati Amazon Kinesis Firehose con AWS Lambda. Questo passaggio è facoltativo e necessario solo per simulare lo streaming di dati.
Esplorazione dei dati
Scarichiamo e visualizziamo il dataset, che si trova in un public Servizio di archiviazione semplice Amazon Bucket (Amazon S3) e sito Web statico:
La schermata seguente mostra un sottoinsieme dei dati prima della trasformazione.
L'ultima colonna dei dati contiene il target che vogliamo prevedere, che è una variabile binaria che assume un valore Sì o No, indicando se l'utente partecipa al programma Bike Share for All.
Diamo un'occhiata alla distribuzione della nostra variabile target per qualsiasi squilibrio di dati.
Come mostrato nel grafico sopra, i dati sono sbilanciati, con un minor numero di persone che partecipano al programma.
Abbiamo bisogno di bilanciare i dati per evitare un pregiudizio di rappresentazione eccessiva. Questo passaggio è facoltativo perché Autopilot offre anche un approccio interno per gestire automaticamente lo squilibrio di classe, che per impostazione predefinita è una metrica di convalida del punteggio F1. Inoltre, se scegli di bilanciare i dati da solo, puoi utilizzare tecniche più avanzate per gestire lo squilibrio di classe, ad esempio percossero or GAN.
Per questo post, eseguiamo il downsampling della classe di maggioranza (No) come tecnica di bilanciamento dei dati:
Il codice seguente arricchisce i dati e sottocampiona la classe sovrarappresentata:
Abbiamo deliberatamente lasciato le nostre caratteristiche categoriali non codificate, incluso il nostro valore target binario. Questo perché Autopilot si occupa della codifica e della decodifica dei dati per noi come parte dell'ingegneria automatica delle funzionalità e della distribuzione della pipeline, come vedremo nella sezione successiva.
Lo screenshot seguente mostra un campione dei nostri dati.
I dati nei grafici seguenti sembrano per il resto normali, con una distribuzione bimodale che rappresenta i due picchi per le ore mattutine e le ore di punta pomeridiane, come ci si aspetterebbe. Osserviamo anche attività basse nei fine settimana e di notte.
Nella sezione successiva, inseriamo i dati in Autopilot in modo che possa eseguire un esperimento per noi.
Costruisci un modello di classificazione binaria
Il pilota automatico richiede di specificare i bucket di destinazione di input e output. Utilizza il bucket di input per caricare i dati e il bucket di output per salvare gli artefatti, come l'ingegneria delle funzionalità e i notebook Jupyter generati. Conserviamo il 5% del set di dati per valutare e convalidare le prestazioni del modello al termine dell'addestramento e caricare il 95% del set di dati nel bucket di input S3. Vedere il codice seguente:
Dopo aver caricato i dati nella destinazione di input, è il momento di avviare Autopilot:
Tutto ciò di cui abbiamo bisogno per iniziare a sperimentare è chiamare il metodo fit(). Autopilot necessita della posizione di input e output S3 e della colonna dell'attributo di destinazione come parametri richiesti. Dopo l'elaborazione della funzione, Autopilot chiama Ottimizzazione automatica del modello di SageMaker per trovare la versione migliore di un modello eseguendo molti processi di addestramento sul set di dati. Abbiamo aggiunto il parametro facoltativo max_candidates per limitare il numero di candidati a 30, che è il numero di lavori di formazione che Autopilot avvia con diverse combinazioni di algoritmi e iperparametri per trovare il modello migliore. Se non si specifica questo parametro, il valore predefinito è 250.
Possiamo osservare l'andamento di Autopilot con il seguente codice:
La formazione richiede del tempo per essere completata. Mentre è in esecuzione, diamo un'occhiata al flusso di lavoro di Autopilot.
Per trovare il miglior candidato, utilizzare il seguente codice:
Lo screenshot seguente mostra il nostro output.
Il nostro modello ha raggiunto un'accuratezza di convalida del 96%, quindi lo implementeremo. Potremmo aggiungere una condizione tale da utilizzare il modello solo se la precisione è superiore a un certo livello.
Conduttura di inferenza
Prima di distribuire il nostro modello, esaminiamo il nostro miglior candidato e cosa sta accadendo nella nostra pipeline. Vedere il codice seguente:
Il diagramma seguente mostra il nostro output.
Autopilot ha creato il modello e lo ha impacchettato in tre diversi contenitori, ognuno dei quali esegue in sequenza un'attività specifica: trasformazione, previsione e trasformazione inversa. Questa inferenza a più passaggi è possibile con a Pipeline di inferenza SageMaker.
Un'inferenza a più passaggi può anche concatenare più modelli di inferenza. Ad esempio, un container può funzionare analisi dei componenti principali prima di passare i dati al contenitore XGBoost.
Distribuire la pipeline di inferenza su un endpoint
Il processo di distribuzione prevede solo poche righe di codice:
Configuriamo il nostro endpoint per la previsione con un predittore:
Ora che abbiamo l'endpoint e il predittore pronti, è il momento di utilizzare i dati di test che abbiamo messo da parte e testare l'accuratezza del nostro modello. Iniziamo definendo una funzione di utilità che invia i dati una riga alla volta al nostro endpoint di inferenza e ottiene in cambio una previsione. Perché abbiamo un XGBoost modello, eliminiamo la variabile di destinazione prima di inviare la riga CSV all'endpoint. Inoltre, abbiamo rimosso l'intestazione dal CSV di test prima di eseguire il loop del file, che è anche un altro requisito per XGBoost su SageMaker. Vedere il codice seguente:
Lo screenshot seguente mostra il nostro output.
Ora calcoliamo la precisione del nostro modello.
Vedi il seguente codice:
Otteniamo una precisione del 92%. Questo è leggermente inferiore al 96% ottenuto durante la fase di convalida, ma è comunque abbastanza alto. Non ci aspettiamo che la precisione sia esattamente la stessa perché il test viene eseguito con un nuovo set di dati.
Importazione dei dati
Abbiamo scaricato direttamente i dati e li abbiamo configurati per l'allenamento. Nella vita reale, potrebbe essere necessario inviare i dati direttamente dal dispositivo perimetrale al data lake e fare in modo che SageMaker li carichi direttamente dal data lake nel notebook.
Kinesis Data Firehose è una buona opzione e il modo più semplice per caricare in modo affidabile i dati in streaming in data lake, data store e strumenti di analisi. Può acquisire, trasformare e caricare dati in streaming in Amazon S3 e altri datastore AWS.
Per il nostro caso d'uso, creiamo un flusso di distribuzione Kinesis Data Firehose con una funzione di trasformazione Lambda per eseguire una leggera pulizia dei dati mentre attraversa il flusso. Vedere il codice seguente:
Questa funzione Lambda esegue una leggera trasformazione dei dati trasmessi dai dispositivi al data lake. Si aspetta un file di dati in formato CSV.
Per la fase di importazione, scarichiamo i dati e simuliamo un flusso di dati in Kinesis Data Firehose con una funzione di trasformazione Lambda e nel nostro data lake S3.
Simuliamo lo streaming di alcune righe:
ripulire
È importante eliminare tutte le risorse utilizzate in questo esercizio per ridurre al minimo i costi. Il codice seguente elimina l'endpoint di inferenza SageMaker che abbiamo creato e i dati di addestramento e test che abbiamo caricato:
Conclusione
Gli ingegneri di ML, i data scientist e gli sviluppatori di software possono utilizzare Autopilot per creare e distribuire una pipeline di inferenza con poca o nessuna esperienza di programmazione ML. Autopilot consente di risparmiare tempo e risorse, utilizzando le best practice di data science e ML. Le grandi organizzazioni possono ora spostare le risorse di progettazione dalla configurazione dell'infrastruttura al miglioramento dei modelli e alla risoluzione dei casi d'uso aziendali. Le startup e le organizzazioni più piccole possono iniziare a utilizzare l'apprendimento automatico con poca o nessuna esperienza di machine learning.
Per iniziare con SageMaker Autopilot, vedere il o accedi a SageMaker Autopilot all'interno di SageMaker Studio.
Ti consigliamo inoltre di saperne di più su altre importanti funzionalità che SageMaker ha da offrire, come il Negozio di funzionalità Amazon SageMaker, che si integra con Pipeline di Amazon SageMaker per creare, aggiungere funzionalità di ricerca e individuazione e riutilizzare flussi di lavoro automatizzati di ML. Puoi eseguire più simulazioni di Autopilot con diverse caratteristiche o varianti di destinazione nel tuo set di dati. Potresti anche affrontare questo problema come un problema di allocazione dinamica del veicolo in cui il tuo modello cerca di prevedere la domanda del veicolo in base all'ora (come l'ora del giorno o il giorno della settimana) o alla posizione, o una combinazione di entrambi.
Informazioni sugli autori
Doug Mbaya è un architetto di soluzioni 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. L'esperienza precedente di Doug include il supporto ai clienti AWS nel segmento del ride sharing e della consegna di cibo.
Valerio Perrone è un Applied Science Manager che lavora su Amazon SageMaker Automatic Model Tuning e Autopilot.
- 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/automate-a-shared-bikes-and-scooters-classification-model-with-amazon-sagemaker-autopilot/
- '
- "
- &
- 100
- Chi siamo
- accesso
- raggiunto
- attività
- Avanzate
- Algoritmi
- Tutti
- assegnazione
- Amazon
- analitica
- Un altro
- api
- approccio
- architettura
- RISERVATA
- argomenti
- Automatizzata
- AWS
- Baia
- MIGLIORE
- best practice
- costruire
- affari
- chiamata
- Può ottenere
- che
- casi
- il cambiamento
- scelte
- classificazione
- Pulizia
- Cloud
- codice
- Colonna
- combinazione
- combinazioni
- azienda
- componente
- condizione
- Configurazione
- Contenitore
- Tecnologie Container
- contiene
- potuto
- Clienti
- dati
- elaborazione dati
- scienza dei dati
- giorno
- consegna
- Richiesta
- schierare
- deployment
- sviluppatori
- dispositivo
- dispositivi
- diverso
- scoperta
- Dsiplay
- distribuzione
- giù
- Cadere
- dinamico
- bordo
- crittografia
- endpoint
- Ingegneria
- Ingegneri
- Evento
- esempio
- Tranne
- Esercitare
- aspetta
- esperienza
- esperimento
- competenza
- caratteristica
- Caratteristiche
- Nome
- Focus
- seguire
- i seguenti
- cibo
- Francisco
- function
- ottenere
- andando
- buono
- Manovrabilità
- qui
- Alta
- Come
- Tutorial
- HTTPS
- importante
- Compreso
- Infrastruttura
- integrare
- IT
- Lavoro
- Offerte di lavoro
- grandi
- lancia
- apprendimento
- Livello
- Biblioteca
- leggera
- leggero
- linea
- piccolo
- caricare
- a livello locale
- località
- macchina
- machine learning
- Maggioranza
- Fare
- direttore
- ML
- modello
- modelli
- maggior parte
- taccuino
- offrire
- Offerte
- operativo
- Opzione
- minimo
- organizzazioni
- Altro
- altrimenti
- partecipazione
- partner
- Persone
- performance
- possibile
- predizione
- Problema
- processi
- Programma
- Programmazione
- fornire
- la percezione
- rapidamente
- Crudo
- tempo reale
- raccomandare
- record
- record
- necessario
- Risorse
- problemi
- recensioni
- norme
- Correre
- running
- corsa
- San
- San Francisco
- risparmio
- Scienze
- scienziati
- Cerca
- selezionato
- Serie
- set
- Condividi
- condiviso
- spostamento
- Un'espansione
- simulazione
- Taglia
- sonno
- So
- Software
- dividere
- inizia a
- iniziato
- Startup
- conservazione
- negozi
- ruscello
- streaming
- Streaming
- studio
- Target
- tecniche
- test
- Testing
- Attraverso
- tempo
- oggi
- strumenti
- Training
- Trasformare
- Trasformazione
- us
- uso
- utenti
- utilità
- APPREZZIAMO
- veicolo
- Sito web
- settimana
- se
- wikipedia
- entro
- lavoro
- lavori