Erstellen einer Webanwendung für maschinelles Lernen, die FastAPI mit GCP und Docker Python integriert. | von Sahaj Godhani | Juli 2023

0
23


Bereitstellungsmuster

Schritt 1: Einrichten der Umgebung

Bevor wir mit der Erstellung unserer Webanwendung für maschinelles Lernen beginnen, richten wir unsere Entwicklungsumgebung ein. Stellen Sie sicher, dass Sie Python installiert haben und erstellen Sie eine virtuelle Umgebung für Ihr Projekt. Als nächstes installieren Sie FastAPI und andere erforderliche Abhängigkeiten:

$ pip set up fastapi uvicorn requests scikit-learn

Schritt 2: Aufbau des FastAPI-Backends

FastAPI ist ein modernes Webframework, das die Erstellung von APIs mit Python vereinfacht. Wir erstellen ein FastAPI-Backend, um Benutzeranfragen zu bearbeiten und mit dem maschinellen Lernmodell zu interagieren.

Erstellen Sie beispielsweise eine Python-Datei foremost.pyund importieren Sie die erforderlichen Module:

from fastapi import FastAPI, HTTPException
from sklearn.externals import joblib

app = FastAPI()

mannequin = joblib.load("path_to_your_model.pkl")

@app.submit("/predict/")
async def predict(knowledge: dict):
attempt:
options = checklist(knowledge.values())
prediction = mannequin.predict([features])[0]
return {"prediction": prediction}
besides Exception as e:
increase HTTPException(status_code=500, element=str(e))

Im obigen Code definieren wir einen POST-Endpunkt unter /predict/, das eine JSON-Nutzlast erwartet, die die Eingabefunktionen für das maschinelle Lernmodell enthält. Wir laden das trainierte Modell mit Scikit-Study joblib Bibliothek und treffen Sie Vorhersagen basierend auf den bereitgestellten Funktionen.

Schritt 3: Bereitstellen des Backends auf der GCP

Um unser FastAPI-Backend auf GCP bereitzustellen, verwenden wir Google Cloud Run. Mit Cloud Run können wir zustandslose Container bereitstellen, die automatisch basierend auf dem eingehenden Datenverkehr skaliert werden. Aber bevor wir fortfahren, lasst uns unsere FastAPI-Anwendung mithilfe von Docker in einen Container umwandeln.

Schritt 4: Containerisieren der FastAPI-Anwendung mit Docker

Erstellen Sie eine Datei mit dem Namen Dockerfile in Ihrem Projektverzeichnis:

FROM tiangolo/uvicorn-gunicorn-fastapi:python3.9

COPY ./app /app

In der obigen Docker-Datei verwenden wir die tiangolo/uvicorn-gunicorn-fastapi Foundation-Picture, das für FastAPI-Anwendungen vorkonfiguriert ist. Wir kopieren den Inhalt des app Verzeichnis (einschließlich unserer foremost.py Datei) an die /app Verzeichnis im Container.

Erstellen Sie als Nächstes das Docker-Picture mit dem folgenden Befehl:

$ docker construct -t ml-app .

Schritt 5: Bereitstellen der Dockerized FastAPI-Anwendung für GCP Cloud Run

Nachdem wir das Docker-Picture nun fertig haben, können wir es in GCP Cloud Run bereitstellen. Stellen Sie sicher, dass Sie das Google Cloud SDK installiert haben und sich mit GCP authentifiziert haben gcloud auth login.

Stellen Sie den Container mit dem folgenden Befehl in Cloud Run bereit:

$ gcloud run deploy ml-app --image gcr.io/[PROJECT_ID]/ml-app --platform managed --memory=512Mi

Ersetzen [PROJECT_ID] mit Ihrer GCP-Projekt-ID. Dieser Befehl stellt die Dockerized FastAPI-Anwendung als zustandslosen Container bereit und skaliert automatisch basierend auf dem eingehenden Datenverkehr.

Schritt 6: Erstellen des Streamlit-Frontends

Mit Streamlit können wir ganz einfach interaktive Webanwendungen für maschinelles Lernen erstellen. Erstellen Sie beispielsweise eine weitere Python-Datei app.pyund importieren Sie die erforderlichen Module:

import streamlit as st
import requests

st.title("Machine Studying Internet App")

options = {
"feature1": st.slider("Function 1", 0, 10),
"feature2": st.slider("Function 2", 0, 10),
"feature3": st.slider("Function 3", 0, 10)
}

response = requests.submit("[CLOUD_RUN_URL]/predict/", json=options)

if response.status_code == 200:
prediction = response.json()["prediction"]
st.success(f"Prediction: {prediction}")
else:
st.error("Error: Didn't fetch prediction from the backend.")

Ersetzen Sie im obigen Code [CLOUD_RUN_URL] mit der von GCP Cloud Run nach der Bereitstellung des Backends bereitgestellten URL. Wir erstellen interaktive Schieberegler für die Eingabefunktionen und stellen eine POST-Anfrage an das FastAPI-Backend, um Vorhersagen abzurufen.

Schritt 7: Lokales Ausführen des Streamlit-Frontends

Um das Streamlit-Frontend lokal auszuführen, verwenden Sie den folgenden Befehl:

$ streamlit run app.py

Sie können in Ihrem Browser unter auf die Streamlit-Anwendung zugreifen http://localhost:8501. Stellen Sie sicher, dass Ihr Backend (bereitgestellt auf GCP Cloud Run) ausgeführt wird.

Abschluss

In diesem Artikel haben wir untersucht, wie man durch die Integration von FastAPI mit GCP und Docker eine Full-Stack-Webanwendung für maschinelles Lernen erstellt. FastAPI stellte eine robuste Backend-API für die Bearbeitung von Benutzeranfragen und die Interaktion mit dem maschinellen Lernmodell bereit. GCP Cloud Run ermöglichte eine einfache Bereitstellung und Skalierbarkeit, während Docker konsistente und reproduzierbare Bereitstellungen gewährleistete. Streamlit diente als benutzerfreundliches Frontend für die Interaktion mit dem maschinellen Lernmodell. Durch die Kombination dieser Technologien können wir leistungsstarke und skalierbare Webanwendungen für maschinelles Lernen erstellen, die den Benutzern genaue Vorhersagen und wertvolle Erkenntnisse liefern.

Umgebungstopologie

Das obige Diagramm zeigt, wie diese Servicehäfen aller Docker-Instanzen werden zu Demozwecken direkt auf dem Ubuntu-Server zugeordnet und verfügbar gemacht. In der Produktion sollte alles auf Sicherheit ausgelegt sein. Und zu reinen Demozwecken sind alle Container mit demselben Docker-Netzwerk verbunden; Während der Produktion würde es in extern routbar und intern nicht routbar getrennt.

Andere Particulars:

Besuchen Sie meinen Weblog: https://medium.com/@sahajgodhani777

Besuchen Sie meine offizielle Web site: https://sahajgodhani.in/



Source link

HINTERLASSEN SIE EINE ANTWORT

Please enter your comment!
Please enter your name here