Anni fa, macchine virtuali (VM) erano lo strumento principale per ospitare un'applicazione, poiché incapsula il codice e i file di configurazione insieme alle dipendenze necessarie per eseguire un'applicazione. Fornisce le stesse funzionalità di un sistema fisico.
Per eseguire più applicazioni, dobbiamo avviare più macchine virtuali e gestire un insieme di macchine virtuali, abbiamo bisogno di un hypervisor.
Fonte: Infrastruttura di condivisione delle applicazioni
Passa dalle macchine virtuali ai container
La limitazione di questo meccanismo (Macchine virtuali) è che non è efficiente, poiché l'esecuzione di più applicazioni replicherà i tuoi sistemi operativi, che consuma una grande quantità di risorse e, un misuraIl "misura" È un concetto fondamentale in diverse discipline, che si riferisce al processo di quantificazione delle caratteristiche o delle grandezze degli oggetti, fenomeni o situazioni. In matematica, Utilizzato per determinare le lunghezze, Aree e volumi, mentre nelle scienze sociali può riferirsi alla valutazione di variabili qualitative e quantitative. L'accuratezza della misurazione è fondamentale per ottenere risultati affidabili e validi in qualsiasi ricerca o applicazione pratica.... que aumentan las aplicaciones en ejecución, abbiamo bisogno di più spazio per allocare le risorse.
Un altro aspetto negativo di questo è, supponiamo di dover condividere la nostra applicazione con altri, e quando provano a eseguire l'applicazione la maggior parte delle volte non viene eseguita a causa di problemi di dipendenza e per questo, dobbiamo solo dire che"Funziona sul mio laptop / sistema“. Quindi, per gli altri per eseguire le applicazioni, deve impostare lo stesso ambiente in cui si è imbattuto sul lato host, il che significa molta configurazione manuale e installazione dei componenti.
La soluzione a queste limitazioni è una tecnologia chiamata Contenitori.
La creazione di modelli di machine learning in Jupyter Notebooks non è la soluzione finale per nessun POC / brutta copia, dobbiamo portarlo in produzione per risolvere i problemi della vita reale in tempo reale.
Quindi, il primo passo è fare le valigie / pacchettizza la nostra applicazione in modo che possiamo eseguire la nostra applicazione su qualsiasi piattaforma cloud per sfruttare i servizi gestiti, la scalabilità automatica e l'affidabilità, e molti altri.
Per empaquetar nuestra aplicación necesitamos herramientas como Docker. Quindi lavoriamo su strumenti fantastici e vediamo la magia..
Contenitori
Un contenitore è un'unità standard di software che impacchetta il codice e tutte le sue dipendenze in modo che l'applicazione venga eseguita in modo rapido e affidabile da un ambiente di elaborazione all'altro..
Ora, più macchine virtuali vengono sostituite con più contenitori in esecuzione su un singolo sistema operativo host. Le applicazioni in esecuzione nei contenitori sono completamente isolate e hanno accesso al file system, risorse e pacchetti del sistema operativo. Per la creazione e l'esecuzione di contenitori, abbiamo bisogno di strumenti di gestione dei container, Che cosa Stivaggio.
Fonte: Applicazioni che condividono il sistema operativo
Stivaggio
Docker è uno strumento di gestione dei contenitori che impacchetta il codice dell'applicazione, configurazione e dipendenze in un'immagine portatile che può essere condivisa ed eseguita su qualsiasi piattaforma o sistema. Con Docker, possiamo contenere più applicazioni ed eseguirle sulla stessa macchina / sistema, poiché condivideranno tutti gli stessi servizi del kernel del sistema operativo, utilizzare meno risorse rispetto alle macchine virtuali (VM).
Un'immagine contenitore Docker è un pacchetto software leggero, autonomo ed eseguibile che include tutto il necessario per eseguire un'applicazione: codice, tempo di esecuzione, Strumenti di sistema, librerie e impostazioni di sistema.
Le immagini dei contenitori vengono convertite in contenitori in fase di esecuzione e, per container Docker, le immagini diventano contenitori quando vengono eseguite su Docker Engine.
Motore della Docker
Docker Engine è il runtime del contenitore che viene eseguito su vari sistemi operativi Linux (CentOS, Debian, Fedora, Oracle Linux, RHEL, SUSE e Ubuntu) e Windows Server.
Docker Engine consente alle applicazioni containerizzate di essere eseguite ovunque in modo coerente su qualsiasi infrastruttura, risolvendo il “inferno di dipendenza” per sviluppatori e team operativi, ed eliminando il “Funziona sul mio portatile!!” guaio.
I container Docker eseguiti sul Docker Engine sono:
- Standard: Docker ha creato lo standard del settore per i container, quindi potrebbero essere portatili ovunque.
- Leggero: I contenitori condividono il kernel del sistema operativo della macchina e, così, non richiedono un sistema operativo per applicazione, con conseguente maggiore efficienza del server e minori costi di licenza e server.
- Sicuro: Le applicazioni sono più sicure nei container e Docker offre le capacità di isolamento predefinite più potenti del settore.
Installazione Docker
Docker è una piattaforma aperta per lo sviluppo, inviare ed eseguire applicazioni. Docker ci consente di separare le nostre applicazioni dalla nostra infrastruttura in modo da poter fornire rapidamente il software.
Possiamo scaricare e installare Docker su più piattaforme. Dai un'occhiata al Docker ufficiale pagina per installare Docker in base al sistema operativo del tuo sistema locale.
Dopo aver installato Docker, Puoi verificare che l'installazione sia andata a buon fine eseguendo il stivatore comando nel terminale / simbolo del sistema.
L'output sarà simile al seguente, se ricevi un errore di autorizzazione, prova a eseguirlo in modalità utente root (in Linux è usato Sudo Docker).
Fonte: Autore
Dockerfile
Un semplice file composto da istruzioni per creare un'immagine Docker. Ogni istruzione in un file docker è un comando / operazione, ad esempio, quale sistema operativo usare, quali dipendenze installare o come compilare il codice, e molte di quelle istruzioni che agiscono come un livello.
La parte migliore è che tutti i livelli sono memorizzati nella cache e se modifichiamo alcune istruzioni nel Dockerfile, durante il processo di costruzione, il livello modificato verrà semplicemente ricostruito.
Un Dockerfile di esempio apparirà come sotto
FROM ubuntu:18.04 WORKDIR /app COPY . /app RUN
pip install -r requirements.txt
ESPORRE 5000 CMD Python app.py
Ogni istruzione crea un livello:
- A PARTIRE DAL creare un livello dall'immagine di base, qui abbiamo usato ubuntu: 18.04 Immagine Docker
- WORKDIR specificare la directory di lavoro
- COPIA aggiungi file dalla directory corrente del tuo client o sistema host Docker, qui stiamo aggiungendo i file della directory corrente alla directory dell'app contenitore
- CORRERE specificare quali comandi eseguire all'interno del contenitore, qui eseguendo il comando pip per installare le dipendenze dal file require.txt
- ESPORRE specificare quale porta esporre la nostra applicazione, Ecco qui 5000
- CMD specifica quale comando eseguire all'avvio del contenitore
Immagine Docker
Una volta creato un file docker, possiamo creare un'immagine docker da esso. Docker Image fornisce l'ambiente di runtime per un'applicazione, che include tutto il codice, i file di configurazione e le dipendenze richiesti.
Un'immagine Docker è composta da livelli di sola lettura, ognuno dei quali rappresenta un'istruzione Dockerfile. I livelli sono impilati e ognuno è un delta delle modifiche del livello precedente.
Possiamo costruire un'immagine docker con un file docker usando il costruzione della finestra mobile comando.
Una volta creata l'immagine della finestra mobile, possiamo testarlo usando il Corsa della finestra mobile comando, che creerà un contenitore usando l'immagine docker ed eseguirà l'applicazione.
Registro Docker
Una volta che l'immagine docker è stata creata e testata, possiamo condividerlo con altri in modo che possano utilizzare la nostra app. Per quello, dobbiamo inviare l'immagine della finestra mobile al registro delle immagini della finestra mobile pubblico, come DockerHub, Registro dei contenitori di Google (GCR) o qualsiasi altra piattaforma di registrazione.
Possiamo anche inviare le nostre immagini docker a record privati per limitare l'accesso alle immagini docker.
Applicazione di apprendimento automatico
L'applicazione di apprendimento automatico consisterà in un flusso di lavoro completo dall'elaborazione dell'input, l'ingegnerizzazione delle funzioni alla generazione dei risultati. Vedremo una semplice applicazione di analisi del sentiment, che containerizzaremo utilizzando Docker e invieremo quell'app al DockerHub per renderla disponibile ad altri.
Analisi del sentimento
Non entreremo nei dettagli sulle applicazioni di machine learning, solo una panoramica, contenitorizzeremo un'app di analisi del sentiment di Twitter. Il codice e i file di dati sono disponibili all'indirizzo Github.
Puoi clonare questa applicazione o potrebbe contenere la tua applicazione, il processo sarà lo stesso.
Il repository git avrà i seguenti file
- app.py: Applicazione principale
- train.py: Script per eseguire il training e salvare il modello sottoposto a training
- sentimento.tsv: Archiviazione dei dati
- requisiti.txt: Contiene i pacchetti / Dipendenze obbligatorie
- Dockerfile: Per creare l'immagine docker
- Cartella dei modelli: contiene il nostro sito web per l'applicazione
- Cartella del modello: Contiene il nostro modello addestrato
Ecco come requisiti.txt Apparirà come, Possiamo anche specificare la versione per ogni libreria che dobbiamo installare
numpy
pandas
scikit-learn
flask
nltk
regex
Nel nostro app.py, cargaremos nuestro modelo entrenado y haremos el mismo preprocesamiento que hicimos en el addestramentoLa formazione è un processo sistematico volto a migliorare le competenze, conoscenze o abilità fisiche. Viene applicato in vari ambiti, come lo sport, Formazione e sviluppo professionale. Un programma di allenamento efficace include la pianificazione degli obiettivi, Pratica regolare e valutazione dei progressi. L'adattamento alle esigenze individuali e la motivazione sono fattori chiave per ottenere risultati di successo e sostenibili in qualsiasi disciplina.....
L'applicazione Flask servirà due endpoint, casa, e prevedere
@app.route('/') def home(): return render_template('home.html')
@app.route('/prevedi',metodi=['INVIARE']) def predire(): if request.method == 'POST': messaggio = request.form['Messaggio'] clean_test = remove_pattern(test,"@[w]*") tokenized_clean_test = clean_test.split() stem_tokenized_clean_test = [voci.stem(io) per io in tokenized_clean_test] messaggio=" ".aderire(stem_tokenized_clean_test) dati = [Messaggio] data = cv.trasformare(dati) my_prediction = clf.predict(dati) return render_template('risultato.html',previsione = mia_previsione)
Dobbiamo caricare il modello addestrato, Il vettorizzatore e il lemmatizzatore (Utilizzato nell'allenamento) E ci siamo anche predisposti per ricevere le richieste al porto 5000 su localhost (0.0.0.0)
Articoli correlati:
- Algoritmo di apprendimento automatico online | Apprendimento online vs apprendimento in batch
- Comprendere l'apprendimento automatico | Cos'è l'apprendimento automatico??
- Algoritmi di apprendimento automatico | Introduzione all'apprendimento automatico
- Modello di machine learning Delply con Heroku e FastAPI