Lo sviluppo di interfacce web per interagire con un modello di machine learning (ML) è un compito noioso. Con Snello, lo sviluppo di applicazioni demo per la tua soluzione ML è semplice. Snello è una libreria Python open source che semplifica la creazione e la condivisione di app Web per ML e data science. In qualità di data scientist, potresti voler mostrare i tuoi risultati per un set di dati o distribuire un modello addestrato. Le applicazioni Streamlit sono utili per presentare i progressi di un progetto al tuo team, acquisire e condividere approfondimenti con i tuoi manager e persino ottenere feedback dai clienti.
Con l'ambiente di sviluppo integrato (IDE) di Amazon Sage Maker Studio con Laboratorio Giove 3, possiamo creare, eseguire e servire app Web Streamlit dall'interno dello stesso ambiente per scopi di sviluppo. Questo post illustra come creare e ospitare app Streamlit in Studio in modo sicuro e riproducibile senza alcuno sviluppo front-end dispendioso in termini di tempo. Come esempio, usiamo un custom Rekognition di Amazon demo, che annoterà ed etichetterà un'immagine caricata. Questo servirà come punto di partenza e può essere generalizzato per dimostrare qualsiasi modello ML personalizzato. Il codice per questo blog può essere trovato in this Repository GitHub.
Panoramica della soluzione
Di seguito è riportato il diagramma dell'architettura della nostra soluzione.
Un utente accede prima a Studio tramite il browser. Il server Jupyter associato al profilo utente viene eseguito all'interno dell'istanza Studio Amazon Elastic Compute Cloud (Amazon EC2). All'interno dell'istanza Studio EC2 esiste il codice di esempio e l'elenco delle dipendenze. L'utente può eseguire l'app Streamlit, app.py, nel terminale di sistema. Studio esegue l'interfaccia utente di JupyterLab in un server Jupyter, disaccoppiato dai kernel del notebook. Il server Jupyter viene fornito con un proxy e ci consente di accedere alla nostra app Streamlit. Una volta che l'app è in esecuzione, l'utente può avviare una sessione separata tramite AWS Jupyter Proxy regolando l'URL.
Dal punto di vista della sicurezza, AWS Jupyter Proxy è esteso dall'autenticazione AWS. Finché un utente ha accesso all'account AWS, all'ID dominio di Studio e al profilo utente, può accedere al collegamento.
Crea Studio utilizzando JupyterLab 3.0
Studio con JupyterLab 3 deve essere installato affinché questa soluzione funzioni. Le versioni precedenti potrebbero non supportare le funzionalità descritte in questo post. Per ulteriori informazioni, fare riferimento a Amazon SageMaker Studio e SageMaker Notebook Instance ora sono dotati di notebook JupyterLab 3 per aumentare la produttività degli sviluppatori. Per impostazione predefinita, Studio viene fornito con JupyterLab 3. È necessario controllare la versione e modificarla se si esegue una versione precedente. Per ulteriori informazioni, fare riferimento a Versione JupyterLab.
Puoi configurare Studio utilizzando il file Kit di sviluppo cloud AWS (AWSCDK); per ulteriori informazioni, fare riferimento a Configura Amazon SageMaker Studio con Jupyter Lab 3 utilizzando AWS CDK. In alternativa, puoi utilizzare la console SageMaker per modificare le impostazioni del dominio. Completa i seguenti passaggi:
- Sulla console di SageMaker, scegli Domini nel pannello di navigazione.
- Seleziona il tuo dominio e scegli Modifica.
- Nel Versione predefinita di Jupyter Lab, assicurati che la versione sia impostata su Laboratorio Giove 3.0.
(Facoltativo) Crea uno spazio condiviso
Possiamo utilizzare la console SageMaker o l'AWS CLI per aggiungere il supporto per gli spazi condivisi a un dominio esistente seguendo i passaggi nella documentazione o in questo blog. La creazione di uno spazio condiviso in AWS presenta i seguenti vantaggi:
- Collaborazione: uno spazio condiviso consente a più utenti o team di collaborare a un progetto o a un insieme di risorse, senza dover duplicare dati o infrastrutture.
- Risparmio sui costi: invece che ciascun utente o team crei e gestisca le proprie risorse, uno spazio condiviso può essere più conveniente, in quanto le risorse possono essere raggruppate e condivise tra più utenti.
- Gestione semplificata: con uno spazio condiviso, gli amministratori possono gestire le risorse centralmente, invece di dover gestire più istanze delle stesse risorse per ciascun utente o team.
- Scalabilità migliorata: uno spazio condiviso può essere aumentato o ridotto più facilmente per soddisfare le mutevoli esigenze, in quanto le risorse possono essere allocate in modo dinamico per soddisfare le esigenze di diversi utenti o team.
- Maggiore sicurezza: centralizzando le risorse in uno spazio condiviso, è possibile migliorare la sicurezza, poiché i controlli e il monitoraggio degli accessi possono essere applicati in modo più semplice e coerente.
Installa le dipendenze e clona l'esempio su Studio
Successivamente, lanciamo Studio e apriamo il terminale di sistema. Utilizziamo SageMaker IDE per clonare il nostro esempio e il terminale di sistema per avviare la nostra app. Il codice per questo blog può essere trovato in this Repository GitHub. Iniziamo con la clonazione del repository:
Successivamente, apriamo il Terminale di sistema.
Una volta clonato, nel terminale di sistema installa le dipendenze per eseguire il nostro codice di esempio eseguendo il seguente comando. Questo prima installerà pip le dipendenze eseguendo pip install --no-cache-dir -r requirements.txt
. no-cache-dir
flag disabiliterà la cache. La memorizzazione nella cache aiuta a memorizzare i file di installazione (.whl
) dei moduli che installi tramite pip. Memorizza anche i file sorgente (.tar.gz
) per evitare di scaricarli nuovamente quando non sono scaduti. Se non c'è spazio sul nostro disco rigido o se vogliamo mantenere un'immagine Docker il più piccola possibile, possiamo utilizzare questo flag in modo che il comando venga eseguito fino al completamento con un utilizzo minimo della memoria. Successivamente lo script installerà i pacchetti iproute
ed jq
, che verrà utilizzato nel passaggio successivo.sh setup.sh
Esegui la demo di Streamlit e crea un collegamento condivisibile
Per verificare che tutte le dipendenze siano state installate correttamente e per visualizzare la demo di Amazon Rekognition, esegui il seguente comando:
Verrà visualizzato il numero di porta che ospita l'app.
Si noti che durante lo sviluppo, potrebbe essere utile rieseguire automaticamente lo script quando app.py
viene modificato su disco. Per fare, quindi possiamo modificare il file runOnSave opzione di configurazione aggiungendo il file --server.runOnSave true
flag al nostro comando:
Lo screenshot seguente mostra un esempio di ciò che dovrebbe essere visualizzato sul terminale.
Dall'esempio sopra vediamo il numero di porta, l'ID del dominio e l'URL dello studio su cui stiamo eseguendo la nostra app. Infine, possiamo vedere l'URL che dobbiamo utilizzare per accedere alla nostra app ottimizzata. Questo script sta modificando l'URL di Studio, sostituendolo lab?
con proxy/[PORT NUMBER]/
. Verrà visualizzata la demo di rilevamento degli oggetti di Rekognition, come mostrato nello screenshot seguente.
Ora che l'app Streamlit funziona, possiamo condividere questo URL con chiunque abbia accesso a questo ID dominio e profilo utente di Studio. Per semplificare la condivisione di queste demo, possiamo controllare lo stato ed elencare tutte le app streamlit in esecuzione eseguendo il seguente comando: sh status.sh
Possiamo utilizzare script del ciclo di vita o spazi condivisi per estendere questo lavoro. Invece di eseguire manualmente gli script della shell e installare le dipendenze, usa script del ciclo di vita per semplificare questo processo. Per sviluppare ed estendere questa app con un team e condividere dashboard con colleghi, usa spazi condivisi. Creando spazi condivisi in Studio, gli utenti possono collaborare nello spazio condiviso per sviluppare un'app Streamlit in tempo reale. Tutte le risorse in uno spazio condiviso vengono filtrate e contrassegnate, semplificando la concentrazione sui progetti ML e la gestione dei costi. Fai riferimento al codice seguente per creare le tue applicazioni in Studio.
Pulire
Una volta che abbiamo finito di utilizzare l'app, vogliamo liberare le porte di ascolto. Per ottenere tutti i processi in esecuzione semplificati e liberarli per l'uso, possiamo eseguire il nostro script di pulizia: sh cleanup.sh
Conclusione
In questo post, abbiamo mostrato un esempio end-to-end di hosting di una demo Streamlit per un'attività di rilevamento di oggetti utilizzando Amazon Rekognition. Abbiamo descritto in dettaglio le motivazioni per la creazione di applicazioni Web rapide, le considerazioni sulla sicurezza e la configurazione necessaria per eseguire la nostra app Streamlit in Studio. Infine, abbiamo modificato il pattern URL nel nostro browser Web per avviare una sessione separata tramite AWS Jupyter Proxy.
Questa demo ti consente di caricare qualsiasi immagine e visualizzare gli output di Amazon Rekognition. Anche i risultati vengono elaborati e puoi scaricare un file CSV con tutti i riquadri di delimitazione tramite l'app. Puoi estendere questo lavoro per annotare ed etichettare il tuo set di dati o modificare il codice per mostrare il tuo modello personalizzato!
Informazioni sugli autori
Dipika Khullar è un ingegnere ML nel Laboratorio di soluzioni Amazon ML. Aiuta i clienti a integrare le soluzioni ML per risolvere i loro problemi aziendali. Più di recente, ha creato pipeline di formazione e inferenza per i clienti dei media e modelli predittivi per il marketing.
Marcello Aberle è un ingegnere ML nell'organizzazione AWS AI. Sta guidando gli sforzi di MLOps presso il Laboratorio di soluzioni Amazon ML, aiutando i clienti a progettare e implementare sistemi ML scalabili. La sua missione è guidare i clienti nel loro percorso di ML aziendale e accelerare il loro percorso di ML verso la produzione.
Yash Shah è un Science Manager nel Laboratorio di soluzioni Amazon ML. Lui e il suo team di scienziati applicati e ingegneri ML lavorano su una gamma di casi d'uso ML da sanità, sport, automotive e produzione.
- Distribuzione di contenuti basati su SEO e PR. Ricevi amplificazione oggi.
- Platoblockchain. Web3 Metaverse Intelligence. Conoscenza amplificata. Accedi qui.
- Fonte: https://aws.amazon.com/blogs/machine-learning/build-streamlit-apps-in-amazon-sagemaker-studio/
- :È
- $ SU
- 100
- 7
- a
- sopra
- accelerare
- accesso
- Il mio account
- operanti in
- amministratori
- AI
- Tutti
- allocato
- consente
- Amazon
- Amazon EC2
- Rekognition di Amazon
- Amazon Sage Maker
- Amazon Sage Maker Studio
- ed
- chiunque
- App
- applicazioni
- applicato
- applicazioni
- architettura
- SONO
- AS
- aspetto
- associato
- At
- Autenticazione
- automaticamente
- settore automobilistico
- AWS
- BE
- vantaggi
- Blog
- Incremento
- scatole
- del browser
- costruire
- Costruzione
- costruito
- affari
- by
- Cache
- Materiale
- casi
- il cambiamento
- cambiando
- dai un'occhiata
- Scegli
- Cloud
- codice
- collaboreranno
- Venire
- completamento di una
- completamento
- Calcolare
- Considerazioni
- consolle
- controlli
- costo effettivo
- Costi
- creare
- Creazione
- costume
- Clienti
- dati
- scienza dei dati
- scienziato di dati
- Predefinito
- richieste
- Demos
- schierare
- Design
- dettagliati
- rivelazione
- sviluppare
- Costruttori
- in via di sviluppo
- Mercato
- diverso
- docker
- dominio
- giù
- scaricare
- guidare
- dinamicamente
- ogni
- più facile
- facilmente
- sforzi
- da un capo all'altro
- ingegnere
- Ingegneri
- Impresa
- Ambiente
- Anche
- esempio
- esistente
- esiste
- estendere
- Caratteristiche
- feedback
- Compila il
- File
- Infine
- Nome
- Focus
- i seguenti
- Nel
- essere trovato
- Gratis
- da
- guadagnando
- ottenere
- ottenere
- guida
- Hard
- disco rigido
- Avere
- avendo
- assistenza sanitaria
- utile
- aiutare
- aiuta
- host
- di hosting
- Come
- Tutorial
- HTML
- HTTPS
- ID
- Immagine
- realizzare
- migliorata
- in
- informazioni
- Infrastruttura
- avviare
- intuizioni
- install
- installato
- installazione
- esempio
- invece
- integrare
- integrato
- interagire
- interfacce
- IT
- viaggio
- jpg
- mantenere
- laboratorio
- Discografica
- lanciare
- principale
- apprendimento
- Biblioteca
- ciclo di vita
- LINK
- Lista
- Ascolto
- Lunghi
- macchina
- machine learning
- make
- FA
- Fare
- gestire
- gestione
- direttore
- I gestori
- gestione
- modo
- manualmente
- consigliato per la
- Marketing
- Maggio..
- Media
- Soddisfare
- Memorie
- forza
- minimo
- Missione
- ML
- MLOp
- modello
- modelli
- modificato
- modificare
- moduli
- monitoraggio
- Scopri di più
- maggior parte
- motivazioni
- multiplo
- Navigazione
- Bisogno
- esigenze
- GENERAZIONE
- taccuino
- numero
- oggetto
- Rilevazione dell'oggetto
- of
- on
- aprire
- open source
- organizzazione
- delineato
- lineamenti
- proprio
- Packages
- vetro
- sentiero
- Cartamodello
- Platone
- Platone Data Intelligence
- PlatoneDati
- punto
- possibile
- Post
- problemi
- processi
- Elaborato
- i processi
- Produzione
- Profilo
- Progressi
- progetto
- progetti
- delega
- fini
- Python
- Presto
- gamma
- piuttosto
- di rose
- tempo reale
- recentemente
- deposito
- necessario
- Requisiti
- Risorse
- Risultati
- Correre
- running
- sagemaker
- stesso
- Risparmio
- Scalabilità
- scalabile
- Scienze
- Scienziato
- scienziati
- script
- sicuro
- problemi di
- separato
- servire
- Sessione
- set
- impostazioni
- flessibile.
- Condividi
- condiviso
- compartecipazione
- Conchiglia
- dovrebbero
- vetrina
- mostrato
- Spettacoli
- piccole
- So
- soluzione
- Soluzioni
- RISOLVERE
- Fonte
- lo spazio
- spazi
- Sports
- inizia a
- Di partenza
- Stato dei servizi
- step
- Passi
- Tornare al suo account
- negozi
- snellire
- studio
- Con successo
- supporto
- sistema
- SISTEMI DI TRATTAMENTO
- Task
- team
- le squadre
- terminal
- che
- Il
- L’ORIGINE
- loro
- Li
- Strumenti Bowman per analizzare le seguenti finiture:
- Attraverso
- tempo
- richiede tempo
- a
- allenato
- Training
- ui
- caricato
- URL
- us
- Impiego
- uso
- Utente
- utenti
- verificare
- versione
- Visualizza
- sito web
- applicazioni web
- browser web
- Che
- quale
- while
- OMS
- volere
- con
- entro
- senza
- Lavora
- lavoro
- Tu
- Trasferimento da aeroporto a Sharm
- zefiro