Ein ML-Modell in eine API integrieren und in der Cloud deployen

In einem der vorherigen Artikel zur künstlichen Intelligenz wurde die Erstellung eines Convolutional Neural Networks zur Bestimmung des Schweregrades der diabetischen Retinopathie vorgestellt. In diesem Artikel wird gezeigt, wie man das erstellte Modell in eine API einbettet und in der Cloud bereitstellt.

Einführung

Maschinelles Lernen (ML) ist zu einer tragenden Säule für die Entwicklung intelligenter Anwendungen in der heutigen datengetriebenen Welt geworden. Die wahre Stärke von ML-Modellen entfaltet sich jedoch erst, wenn sie als Dienste bereitgestellt werden, die von anderen Anwendungen oder Benutzern abgerufen und genutzt werden können. Hier kommt die Erstellung eines ML-Dienstes als API und dessen Bereitstellung in der Cloud ins Spiel.

Dieser Artikel führt Sie durch die Umwandlung Ihres ML-Modells in einen robusten API-Dienst und dessen Bereitstellung auf einer Cloud-Plattform. Durch die Nutzung der Cloud-Infrastruktur können Sie die Skalierbarkeit, Zuverlässigkeit und Zugänglichkeit Ihres ML-Dienstes sicherstellen und ihn einem breiteren Publikum zugänglich machen. Egal, ob Sie ein Data Scientist sind, der ein Modell mit der Welt teilen möchte, oder ein Entwickler, der ML-Funktionen in Anwendungen integrieren möchte – dieser Leitfaden bietet Ihnen die wesentlichen Schritte und Best Practices, um Ihre Ziele zu erreichen.

Wir decken alles ab, vom Einrichten einer Entwicklungsumgebung, dem Erstellen und Containerisieren eines ML-Dienstes bis hin zur Bereitstellung auf einer Cloud-Plattform. Am Ende dieses Artikels haben Sie einen voll funktionsfähigen ML-Dienst in der Cloud laufen, der bereit ist, reale Daten zu verarbeiten und wertvolle Erkenntnisse zu liefern.

Voraussetzungen

In diesem Artikel fiel die Wahl auf den folgenden Technologie-Stack: FastAPI, Uvicorn und Google Cloud Platform (GCP). Hauptsächlich aufgrund der einfachen Handhabung. Zum Beispiel finden Sie unten den Code zum Starten des ASGI-Servers:

uvicorn app:app --host 127.0.0.1 --port 8080

Die Google Cloud Platform (GCP) wurde aufgrund ihrer führenden Marktposition, der Vielzahl an Anleitungen sowie der einfachen Erstellung von Docker-Images und deren anschließender Bereitstellung mit dem praktischen Google Cloud Run-Tool ausgewählt.

Was ist FastAPI und welche Vorteile bietet es für den Aufbau von APIs?

FastAPI ist speziell für die schnelle und effiziente Erstellung von APIs entwickelt worden. Es ermöglicht das Definieren von Endpunkten, das Bearbeiten von Anfragen und das Zurückgeben von Antworten mit minimalem Codeaufwand. Die wichtigsten Vorteile von FastAPI:

  1. Hohe Leistung:
    • FastAPI gehört zu den schnellsten verfügbaren Python-Frameworks. Diese Leistung ist entscheidend für die Bewältigung hoher Lasten und die Sicherstellung reaktionsschneller APIs.
  2. Einfache Handhabung:
    • FastAPI’s Syntax ist einfach und intuitiv, was es leicht zu erlernen und zu verwenden macht. Es nutzt Python-Typenhinweise, die die Lesbarkeit des Codes verbessern und Fehler reduzieren.
  3. Automatische Dokumentation:
    • FastAPI erstellt mühelos interaktive API-Dokumentationen mithilfe von Swagger UI und ReDoc. Diese Funktion ist von unschätzbarem Wert für das Testen und Verstehen von API-Endpunkten.
  4. Asynchroner Support:
    • FastAPI unterstützt asynchrone Programmierung, die eine nicht blockierende Codeausführung ermöglicht. Dies ist besonders vorteilhaft für I/O-gebundene Operationen und verbessert die Gesamtleistung der API.
  5. Typsicherheit und Validierung:
    • Durch die Verwendung von Pydantic zur Datenvalidierung und -serialisierung wird sichergestellt, dass die an und von der API übermittelten Daten korrekt und gut strukturiert sind, was Laufzeitfehler reduziert.

Was ist Uvicorn und welche Vorteile bietet es für den Aufbau von APIs?

Uvicorn ist ein hochleistungsfähiger ASGI-Server, der für die Ausführung asynchroner Webanwendungen in Python verwendet wird. Er ist darauf ausgelegt, Frameworks wie FastAPI und Starlette zu bedienen und bietet eine schnelle und effiziente Handhabung von HTTP-Anfragen. Die Vorteile von Uvicorn:

  1. Hohe Leistung:
    • Uvicorn ist ein blitzschneller ASGI-Server, der für die Bedienung asynchroner Webanwendungen entwickelt wurde. Seine Leistung ist vergleichbar mit anderen hochleistungsfähigen Servern wie Node.js und Go.
  2. Kompatibilität:
    • Uvicorn ist vollständig kompatibel mit FastAPI und daher die ideale Wahl für die Bereitstellung von FastAPI-Anwendungen. Es unterstützt HTTP/2 und WebSockets und bietet damit eine robuste Grundlage für moderne Webanwendungen.
  3. Einfachheit:
    • Uvicorn ist einfach einzurichten und zu verwenden, mit einer unkomplizierten Befehlszeilenschnittstelle. Diese Einfachheit reduziert den Aufwand für die Konfiguration und Verwaltung des Servers.

Warum Google Cloud Platform?

  1. Sicherheit:
    • GCP bietet fortschrittliche Sicherheitsfunktionen, einschließlich Identitäts- und Zugriffsmanagement, Verschlüsselung und Einhaltung von Industriestandards, um die Sicherheit Ihrer Anwendung und Daten zu gewährleisten.

  2. Kostenwirksamkeit:
    • Das Preismodell von GCP ist flexibel und wettbewerbsfähig, mit Optionen für nutzungsabhängige Abrechnung und Rabatte für dauerhafte Nutzung. Dies macht es zu einer kostengünstigen Wahl für die Bereitstellung und Skalierung von Anwendungen.
  3. Entwickler-Tools:
    • GCP stellt eine Reihe von Entwickler-Tools zur Verfügung, darunter Cloud Shell, Cloud Build und Cloud Source Repositories, die den Entwicklungs- und Bereitstellungsprozess vereinfachen. In diesem Artikel werden wir die Bereitstellung einer Anwendung mit dem Tool Cloud Shell betrachten.

Erstellen einer Docker-Datei

Cloud Shell ist eine webbasierte, einbettbare Funktionalität bei Google Cloud Platform, die Sie von jedem Browser aus nutzen können. Sie bietet ein Online-Terminal, das mit Tools wie Docker, dem gcloud-Befehlszeilentool, kubectl und anderen Dienstprogrammen zur Verwaltung Ihrer Ressourcen ausgestattet ist. Für diesen Zweck ist es notwendig, eine Docker-Datei zu erstellen. Im Folgenden wird jeder Teil davon ausführlich erklärt:

  1. Verwenden Sie eine leichtgewichtige Version von Python 3.9 als Basis-Image:
FROM python:3.9-slim
  1. Setzen Sie Umgebungsvariablen, um zu verhindern, dass Python .pyc-Dateien schreibt, und um einen unbuffered Output sicherzustellen:
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
  1. Aktualisieren Sie pip und installieren Sie die erforderlichen Python-Bibliotheken, einschließlich TensorFlow, OpenCV, FastAPI, Uvicorn und anderer:
RUN pip install --upgrade pip
RUN pip install tensorflow==2.12 opencv-python fastapi==0.110.0 uvicorn==0.22.0
RUN pip install efficientnet --no-dependencies
RUN pip install scikit-image --no-dependencies
RUN pip install lazy_loader --no-dependencies
RUN pip install keras_applications --no-dependencies
RUN pip install click
RUN pip install opencv-python-headless
RUN pip install python-multipart
  1. Setzen Sie das Arbeitsverzeichnis innerhalb des Containers auf /app und kopieren Sie die Datei app.py sowie das Verzeichnis folds von Ihrem lokalen Rechner in den Container:
WORKDIR /app
COPY app.py /app
COPY folds /app/folds
RUN apt-get update
RUN apt install -y libgl1-mesa-glx

      5. Aktualisieren Sie die Paketlisten und installieren Sie das Paket libgl1-mesa-glx für OpenCV. Öffnen Sie Port 8080 und geben Sie den Befehl zum Ausführen der FastAPI-Anwendung mit Uvicorn an:

EXPOSE 8080
CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "8080"]

Bereitstellung auf der Google Cloud Platform

Durch Befolgen dieser Schritte können Sie Ihr Docker-Image erfolgreich auf GCP bereitstellen und einen API-Dienst mit Cloud Shell erstellen:

Schritt 1: Google Cloud Platform Einrichten

  1. GCP-Konto Erstellen: Wenn Sie noch keines haben, erstellen Sie ein Google Cloud Platform-Konto.
  2. Projekt Erstellen: Gehen Sie zur GCP-Konsole und erstellen Sie ein neues Projekt.

Schritt 2: Cloud Shell Öffnen

  1. Cloud Shell Zugreifen: Klicken Sie auf das Cloud Shell-Symbol in der oberen rechten Ecke der GCP-Konsole. Dies öffnet ein Terminal direkt in Ihrer

Schritt 3: Authentifizieren

  1. Authentifizierung: Cloud Shell authentifiziert Sie automatisch als aktuellen Benutzer von GCP (dieser Schritt dient nur Ihrer Information).

Schritt 4: Docker-Image Erstellen und Hochladen

  1. Zum Projektverzeichnis Navigieren: Verwenden Sie den Befehl cd, um zum Verzeichnis zu wechseln, das Ihr
  2. Docker-Image Erstellen: Führen Sie den folgenden Befehl aus, um Ihr Docker-Image zu erstellen. Ersetzen Sie PROJECT-ID durch Ihre GCP-Projekt-ID, IMAGE-NAME durch den gewünschten Bildnamen und TAG durch das Versions-Tag (z. B. v1).
Kontakt
Kontakt



    Insert math as
    Block
    Inline
    Additional settings
    Formula color
    Text color
    #333333
    Type math using LaTeX
    Preview
    \({}\)
    Nothing to preview
    Insert