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:
- 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. - 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. - 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. - 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. -
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:
- 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. - 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. -
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?
-
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. - 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. -
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:
- Verwenden Sie eine leichtgewichtige Version von Python 3.9 als Basis-Image:
FROM python:3.9-slim
ENV PYTHONDONTWRITEBYTECODE=1 ENV PYTHONUNBUFFERED=1
