Siamo entusiasti di annunciare due nuove funzionalità in Amazon Sage Maker Studio che accelererà lo sviluppo iterativo per i professionisti del machine learning (ML): modalità locale e supporto Docker. Lo sviluppo di modelli ML spesso comporta cicli di iterazione lenti poiché gli sviluppatori passano dalla codifica, alla formazione e alla distribuzione. Ogni passaggio richiede l'attesa dell'avvio delle risorse di elaborazione remote, il che ritarda la convalida delle implementazioni e il feedback sulle modifiche.
Con la modalità locale, gli sviluppatori possono ora addestrare e testare modelli, eseguire il debug del codice e convalidare pipeline end-to-end direttamente sulla propria istanza notebook di SageMaker Studio senza la necessità di avviare risorse di elaborazione remote. Ciò riduce il ciclo di iterazione da minuti a secondi, aumentando la produttività degli sviluppatori. Il supporto Docker nei notebook SageMaker Studio consente agli sviluppatori di creare facilmente contenitori Docker e accedere a contenitori precostruiti, fornendo un ambiente di sviluppo coerente per tutto il team ed evitando lunghe operazioni di configurazione e gestione delle dipendenze.
Il supporto della modalità locale e di Docker offre un flusso di lavoro semplificato per la convalida delle modifiche al codice e la prototipazione di modelli utilizzando contenitori locali in esecuzione su un notebook SageMaker Studio
esempio. In questo post ti guideremo attraverso la configurazione della modalità locale in SageMaker Studio, l'esecuzione di un processo di formazione di esempio e la distribuzione del modello su un Amazon Sage Maker endpoint da un notebook SageMaker Studio.
Modalità locale di SageMaker Studio
SageMaker Studio introduce la modalità locale, che ti consente di eseguire processi di training, inferenza, trasformazione batch ed elaborazione di SageMaker direttamente sulle tue istanze notebook JupyterLab, Code Editor o SageMaker Studio Classic senza richiedere risorse di elaborazione remote. I vantaggi derivanti dall'utilizzo della modalità locale includono:
- Convalida e test istantanei dei flussi di lavoro direttamente all'interno degli ambienti di sviluppo integrati (IDE)
- Iterazione più rapida attraverso le esecuzioni locali per lavori su scala ridotta per ispezionare i risultati e identificare tempestivamente i problemi
- Miglioramento dell'efficienza di sviluppo e debug eliminando l'attesa per i lavori di formazione remota
- Feedback immediato sulle modifiche al codice prima di eseguire lavori completi nel cloud
La figura seguente illustra il flusso di lavoro utilizzando la modalità locale su SageMaker.
Per utilizzare la modalità locale, impostare instance_type='local'
durante l'esecuzione di processi SageMaker Python SDK come training e inferenza. Questo li eseguirà sulle istanze utilizzate dai tuoi IDE SageMaker Studio invece di eseguire il provisioning delle risorse cloud.
Sebbene alcune funzionalità come la formazione distribuita siano disponibili solo nel cloud, la modalità locale elimina la necessità di cambiare contesto per iterazioni rapide. Quando sei pronto per sfruttare tutta la potenza e la scalabilità di SageMaker, puoi eseguire senza problemi il tuo flusso di lavoro nel cloud.
Supporto Docker in SageMaker Studio
SageMaker Studio ora consente anche di creare ed eseguire contenitori Docker localmente sulla tua istanza notebook SageMaker Studio. Questa nuova funzionalità consente di creare e convalidare immagini Docker in SageMaker Studio prima di utilizzarle per l'addestramento e l'inferenza di SageMaker.
Il diagramma seguente illustra l'architettura di orchestrazione Docker di alto livello all'interno di SageMaker Studio.
Con il supporto Docker in SageMaker Studio, puoi:
- Crea contenitori Docker con modelli e dipendenze integrati direttamente all'interno di SageMaker Studio
- Elimina la necessità di processi di compilazione Docker esterni per semplificare la creazione di immagini
- Esegui i contenitori localmente per convalidare la funzionalità prima di distribuire i modelli in produzione
- Riutilizza i contenitori locali durante la distribuzione su SageMaker per la formazione e l'hosting
Sebbene alcune funzionalità Docker avanzate come reti multi-contenitore e personalizzate non siano supportate al momento della stesura di questo documento, la funzionalità principale di creazione ed esecuzione è disponibile per accelerare lo sviluppo di contenitori per flussi di lavoro BYOC (Bring Your Own Container).
Prerequisiti
Per utilizzare la modalità locale nelle applicazioni SageMaker Studio, è necessario completare i seguenti prerequisiti:
- Per estrarre immagini da Registro dei contenitori Amazon Elastic (Amazon ECR), l'account che ospita l'immagine ECR deve fornire l'autorizzazione di accesso all'utente Identity and Access Management (IAM) ruolo. Il ruolo del dominio deve consentire anche l'accesso ad Amazon ECR.
- Per abilitare la modalità locale e le funzionalità Docker, è necessario impostare il file
EnableDockerAccess
parametro su true per il dominioDockerSettings
usando il Interfaccia della riga di comando di AWS (AWS CLI). Ciò consente agli utenti del dominio di utilizzare la modalità locale e le funzionalità Docker. Per impostazione predefinita, la modalità locale e Docker sono disabilitati in SageMaker Studio. Tutte le app SageMaker Studio esistenti dovranno essere riavviate affinché l'aggiornamento del servizio Docker abbia effetto. Di seguito è riportato un esempio di comando AWS CLI per l'aggiornamento di un dominio SageMaker Studio:
- Per poterlo fare, devi aggiornare il ruolo IAM SageMaker spingere le immagini Docker ad Amazon ECR:
Esegui file Python negli spazi SageMaker Studio utilizzando la modalità locale
SageMaker Studio JupyterLab e Code Editor (basato su Codice-OSS, codice di Visual Studio – Open Source), estende SageMaker Studio in modo da poter scrivere, testare, eseguire il debug ed eseguire analisi e codice ML utilizzando il popolare IDE leggero. Per ulteriori dettagli su come iniziare con gli IDE SageMaker Studio, fare riferimento a Aumenta la produttività su Amazon SageMaker Studio: presentazione di JupyterLab Spaces e strumenti di intelligenza artificiale generativa ed Novità – Editor di codice, basato su Code-OSS VS Code Open Source ora disponibile in Amazon SageMaker Studio. Completa i seguenti passaggi:
- Crea un nuovo terminale.
- Installa la CLI Docker e il plug-in Docker Compose seguendo le istruzioni riportate di seguito Repository GitHub. Se i comandi concatenati falliscono, esegui i comandi uno alla volta.
È necessario aggiornare l'SDK SageMaker alla versione più recente.
- Correre
pip install sagemaker -Uq
nel terminale.
Solo per l'editor di codice, è necessario impostare l'ambiente Python per l'esecuzione nel terminale corrente.
- Nell'editor di codice, nel file Menu File¸ scegli Preferenze ed Impostazioni profilo.
- Cerca e seleziona Terminale: eseguire nella directory file.
- Nell'editor di codice o JupyterLab, apri il file
scikit_learn_script_mode_local_training_and_serving
cartella ed eseguire ilscikit_learn_script_mode_local_training_and_serving.py
file.
È possibile eseguire lo script scegliendo Correre nell'editor di codice o utilizzando la CLI in un terminale JupyterLab. Potrai vedere come il modello viene addestrato localmente. Quindi distribuisci il modello su un endpoint SageMaker localmente e calcola l'errore quadratico medio (RMSE
).
Simula training e inferenza in SageMaker Studio Classic utilizzando la modalità locale
Puoi anche utilizzare un notebook in SageMaker Studio Classic per eseguire un lavoro di formazione su piccola scala CIFAR10
utilizzando la modalità locale, distribuire il modello localmente ed eseguire l'inferenza.
Prepara il tuo taccuino
Per configurare il notebook, completare i seguenti passaggi:
- Apri SageMaker Studio Classic e clona quanto segue Repository GitHub.
- Aprire il
pytorch_local_mode_cifar10.ipynb notebook in blog/pytorch_cnn_cifar10
.
- Nel Immaginescegli
PyTorch 2.1.0 Python 3.10 CPU Optimized
.
Verifica che il tuo notebook mostri l'istanza corretta e la selezione del kernel.
- Apri un terminale scegliendo Launch Terminal nell'immagine SageMaker corrente.
- Installa la CLI Docker e il plug-in Docker Compose seguendo le istruzioni riportate di seguito Repository GitHub.
Poiché stai utilizzando Docker di SageMaker Studio Classic, rimuovi sudo quando esegui i comandi perché il terminale viene già eseguito come superutente. Per SageMaker Studio Classic, i comandi di installazione dipendono dal sistema operativo dell'immagine dell'app SageMaker Studio. Ad esempio, le immagini framework basate su DLC sono basate su Ubuntu, in cui funzionerebbero le seguenti istruzioni. Tuttavia, per un'immagine basata su Debian come DataScience Images, è necessario seguire le istruzioni riportate di seguito Repository GitHub. Se i comandi concatenati falliscono, esegui i comandi uno alla volta. Dovresti vedere la versione Docker visualizzata.
- Lascia aperta la finestra del terminale, torna al notebook e inizia a eseguirlo cella per cella.
Assicurati di eseguire la cella con pip install -U sagemaker
quindi stai utilizzando la versione più recente di SageMaker Python SDK.
Formazione locale
Quando inizi a eseguire il lavoro di formazione SageMaker locale, vedrai le seguenti righe di registro:
Ciò indica che la formazione è stata eseguita localmente utilizzando Docker.
Sii paziente mentre il pytorch-training:2.1-cpu-py310
L'immagine Docker viene estratta. A causa delle sue grandi dimensioni (5.2 GB), potrebbero essere necessari alcuni minuti.
Le immagini Docker verranno archiviate nel volume root dell'istanza dell'app SageMaker Studio, che non è accessibile agli utenti finali. L'unico modo per accedere e interagire con le immagini Docker è tramite le operazioni API Docker esposte.
Dal punto di vista della riservatezza dell'utente, la piattaforma SageMaker Studio non accede né archivia mai immagini specifiche dell'utente.
Una volta completata la formazione, sarai in grado di visualizzare le seguenti righe del registro dei successi:
Inferenza locale
Completa i seguenti passi:
- Distribuisci l'endpoint SageMaker utilizzando la modalità locale SageMaker.
Sii paziente mentre il pytorch-inference:2.1-cpu-py310
L'immagine Docker viene estratta. A causa delle sue grandi dimensioni (4.32 GB), potrebbero essere necessari alcuni minuti.
- Richiama l'endpoint SageMaker distribuito localmente utilizzando le immagini di test.
Potrai vedere le classi previste: rana, nave, macchina e aereo:
- Poiché l'endpoint SageMaker Local è ancora attivo, torna alla finestra del terminale aperta ed elenca i contenitori in esecuzione:
docker ps
Potrai vedere la corsa pytorch-inference:2.1-cpu-py310
contenitore che supporta l'endpoint SageMaker.
- Per arrestare l'endpoint locale SageMaker e arrestare il contenitore in esecuzione, poiché puoi eseguire solo un endpoint locale alla volta, esegui il codice di pulizia.
- Per assicurarti che il contenitore Docker sia inattivo, puoi accedere alla finestra del terminale aperta, eseguire docker ps e assicurarti che non ci siano contenitori in esecuzione.
- Se vedi un contenitore in esecuzione, corri
docker stop <CONTAINER_ID>
per fermarlo.
Suggerimenti per l'utilizzo della modalità locale di SageMaker
Se stai utilizzando SageMaker per la prima volta, fai riferimento a Addestrare modelli di machine learning. Per ulteriori informazioni sulla distribuzione di modelli per l'inferenza con SageMaker, fare riferimento a Distribuire modelli per l'inferenza.
Tieni presente i seguenti consigli:
- Stampa file e cartelle di input e output per comprendere il caricamento del set di dati e del modello
- Utilizza 1-2 epoche e piccoli set di dati per test rapidi
- Preinstallare le dipendenze in un Dockerfile per ottimizzare la configurazione dell'ambiente
- Isolare il codice di serializzazione negli endpoint per il debug
Configura l'installazione di Docker come configurazione del ciclo di vita
Puoi definire il processo di installazione di Docker come uno script Lifecycle Configuration (LCC) per semplificare la configurazione ogni volta che viene avviato un nuovo spazio SageMaker Studio. Gli LCC sono script che SageMaker esegue durante eventi come la creazione dello spazio. Fare riferimento al laboratorio giove, Editor di codice, o SageMaker Studio Classico Configurazione LCC (utilizzando la finestra mobile installa la cli come riferimento) per saperne di più.
Crea e testa immagini Docker personalizzate negli spazi SageMaker Studio
In questo passaggio installerai Docker nello spazio dell'app JupyterLab (o Code Editor) e utilizzerai Docker per creare, testare e pubblicare immagini Docker personalizzate con gli spazi SageMaker Studio. Gli spazi vengono utilizzati per gestire le esigenze di archiviazione e risorse di alcune applicazioni SageMaker Studio. Ogni spazio ha una relazione 1:1 con un'istanza di un'applicazione. Ogni applicazione supportata creata ottiene il proprio spazio. Per ulteriori informazioni sugli spazi SageMaker, fare riferimento a Aumenta la produttività su Amazon SageMaker Studio: presentazione di JupyterLab Spaces e strumenti di intelligenza artificiale generativa. Assicurati di eseguire il provisioning di un nuovo spazio con almeno 30 GB di spazio di archiviazione per consentire spazio di archiviazione sufficiente per immagini e artefatti Docker.
Installa Docker all'interno di uno spazio
Per installare la CLI Docker e il plug-in Docker Compose all'interno di uno spazio JupyterLab, esegui i comandi seguenti Repository GitHub. Sage Maker Studio supporta solo la versione Docker 20.10.X.
Crea immagini Docker
Per confermare che Docker sia installato e funzioni all'interno del tuo spazio JupyterLab, esegui il seguente codice:
Per creare un'immagine Docker personalizzata all'interno di uno spazio JupyterLab (o Code Editor), completa i seguenti passaggi:
- Crea un Dockerfile vuoto:
touch Dockerfile
- Modifica il Dockerfile con i seguenti comandi, che creano una semplice immagine del server web flask dall'immagine base python:3.10.13-bullseye ospitata su Hub Docker:
Il codice seguente mostra il contenuto di un file di applicazione del pallone di esempio app.py
:
Inoltre, puoi aggiornare i comandi Dockerfile di riferimento per includere pacchetti e artefatti di tua scelta.
- Crea un'immagine Docker utilizzando il Dockerfile di riferimento:
docker build --network sagemaker --tag myflaskapp:v1 --file ./Dockerfile .
Includere --network
sagemaker nel comando build della finestra mobile, altrimenti la compilazione fallirà. I contenitori non possono essere eseguiti nel bridge Docker predefinito o nelle reti Docker personalizzate. I contenitori vengono eseguiti nella stessa rete del contenitore dell'applicazione SageMaker Studio. Gli utenti possono utilizzare solo sagemaker per il nome della rete.
- Una volta completata la build, verifica se l'immagine esiste. Ricodifica la build come immagine ECR ed esegui il push. Se riscontri problemi di autorizzazione, esegui il comando aws ecr get-login-password… e prova a eseguire nuovamente il push/pull Docker:
Prova le immagini Docker
Avere Docker installato all'interno di uno spazio SageMaker Studio di JupyterLab (o editor di codice) consente di testare immagini Docker predefinite o personalizzate come contenitori (o applicazioni containerizzate). In questa sezione utilizziamo il comando docker run per eseguire il provisioning dei contenitori Docker all'interno di uno spazio SageMaker Studio per testare carichi di lavoro containerizzati come servizi Web REST e script Python. Completa i seguenti passaggi:
- Se l'immagine di prova non esiste, esegui docker pull per inserire l'immagine nel tuo computer locale:
sagemaker-user@default:~$ docker pull 123456789012.dkr.ecr.us-east-2.amazonaws.com/myflaskapp:v1
- Se riscontri problemi di autenticazione, esegui i seguenti comandi:
aws ecr get-login-password --region region | docker login --username AWS --password-stdin aws_account_id.dkr.ecr.region.amazonaws.com
- Crea un contenitore per testare il tuo carico di lavoro:
docker run --network sagemaker 123456789012.dkr.ecr.us-east-2.amazonaws.com/myflaskapp:v1
Questo avvia una nuova istanza di contenitore ed esegue l'applicazione definita utilizzando ENTRYPOINT di Docker:
- Per verificare se il tuo endpoint web è attivo, vai all'URL
https://<sagemaker-space-id>.studio.us-east-2.sagemaker.aws/jupyterlab/default/proxy/6006/
.
Dovresti vedere una risposta JSON simile allo screenshot seguente.
ripulire
Per evitare di incorrere in addebiti inutili, elimina le risorse che hai creato durante l'esecuzione degli esempi in questo post:
- Nel tuo dominio SageMaker Studio, scegli Studio Classico nel riquadro di navigazione, quindi scegli Fermare.
- Nel tuo dominio SageMaker Studio, scegli laboratorio giove or Editor di codice nel riquadro di navigazione, scegli la tua app, quindi scegli Fermare.
Conclusione
La modalità locale di SageMaker Studio e il supporto Docker consentono agli sviluppatori di creare, testare ed eseguire iterazioni su implementazioni ML più velocemente senza lasciare il proprio spazio di lavoro. Fornendo accesso immediato agli ambienti e agli output di test, queste funzionalità ottimizzano i flussi di lavoro e migliorano la produttività. Prova il modello locale di SageMaker Studio e il supporto Docker utilizzando il nostro funzionalità di bordo rapida, che ti consente di creare un nuovo dominio per singoli utenti in pochi minuti. Condividi i tuoi pensieri nella sezione commenti!
Informazioni sugli autori
Shweta Singh è Senior Product Manager nel team della piattaforma Amazon SageMaker Machine Learning (ML) presso AWS, a capo dell'SDK SageMaker Python. Ha lavorato in diversi ruoli di prodotto in Amazon per oltre 5 anni. Ha una laurea in ingegneria informatica e un master in ingegneria finanziaria, entrambi presso la New York University
Eitan Sela è un architetto di soluzioni specializzato in intelligenza artificiale generativa e machine learning presso AWS. Collabora con i clienti AWS per fornire guida e assistenza tecnica, aiutandoli a creare e utilizzare soluzioni di intelligenza artificiale generativa e machine learning su AWS. Nel tempo libero, Eitan ama fare jogging e leggere gli ultimi articoli sul machine learning.
Pranav Murthy è un AI/ML Specialist Solutions Architect presso AWS. Il suo obiettivo è aiutare i clienti a creare, addestrare, distribuire e migrare carichi di lavoro di machine learning (ML) su SageMaker. In precedenza ha lavorato nel settore dei semiconduttori sviluppando modelli di visione artificiale (CV) di grandi dimensioni e di elaborazione del linguaggio naturale (NLP) per migliorare i processi dei semiconduttori utilizzando tecniche ML all'avanguardia. Nel tempo libero gli piace giocare a scacchi e viaggiare. Puoi trovare Pranav su LinkedIn.
Mufaddal Rohawala è un ingegnere del software presso AWS. Lavora alla libreria SageMaker Python SDK per Amazon SageMaker. Nel tempo libero ama viaggiare, fare attività all'aria aperta ed è un appassionato di calcio.
- Distribuzione di contenuti basati su SEO e PR. Ricevi amplificazione oggi.
- PlatoData.Network Generativo verticale Ai. Potenzia te stesso. Accedi qui.
- PlatoAiStream. Intelligenza Web3. Conoscenza amplificata. Accedi qui.
- PlatoneESG. Carbonio, Tecnologia pulita, Energia, Ambiente, Solare, Gestione dei rifiuti. Accedi qui.
- Platone Salute. Intelligence sulle biotecnologie e sulle sperimentazioni cliniche. Accedi qui.
- Fonte: https://aws.amazon.com/blogs/machine-learning/accelerate-ml-workflows-with-amazon-sagemaker-studio-local-mode-and-docker-support/