Bereitstellen von Modellen für maschinelles Lernen auf Heroku
Veröffentlicht: 2021-01-05Maschinelles Lernen ist ein kontinuierlicher Prozess, der Datenextraktion, Bereinigung, Auswahl wichtiger Funktionen, Modellerstellung, Validierung und Bereitstellung umfasst, um das Modell anhand unsichtbarer Daten zu testen.
Während die anfängliche Data-Engineering- und Modellerstellungsphase ein ziemlich langwieriger Prozess ist und viel Zeit mit Daten verbracht werden muss, mag die Modellbereitstellung einfach erscheinen, aber es ist ein kritischer Prozess und hängt von dem Anwendungsfall ab, auf den Sie abzielen möchten. Sie können das Modell für mobile Benutzer, Websites, intelligente Geräte oder über jedes andere IoT-Gerät bereitstellen.
Das Modell kann wahlweise in die Hauptanwendung integriert, in SDLC oder in die Cloud eingebunden werden. Es gibt verschiedene Strategien, um das Modell in der Cloud-Plattform bereitzustellen und auszuführen, was aufgrund der Verfügbarkeit von Tools wie Google Cloud Platform, Azure, Amazon Web Services und Heroku in den meisten Fällen eine bessere Option zu sein scheint.
Während Sie sich dafür entscheiden können, das Modell auf Pub/Sub-Art bereitzustellen, werden API (Application Program Interface) oder REST-Wrapper häufiger verwendet, um das Modell in der Produktion bereitzustellen. Wenn die Modellkomplexität zunimmt, werden verschiedene Teams zugewiesen, um solche Situationen zu bewältigen, die allgemein als Machine Learning Engineers bekannt sind. Lassen Sie uns nach dieser ausführlichen Einführung einen Blick darauf werfen, wie ein Modell für maschinelles Lernen als API auf der Heroku-Plattform bereitgestellt wird.
Inhaltsverzeichnis
Was ist Heroku?
Heroku ist ein Platform-as-a-Service-Tool, mit dem Entwickler ihren serverlosen Code hosten können. Das bedeutet, dass man Skripte entwickeln kann, um dem einen oder anderen für bestimmte Zwecke zu dienen. Die Heroku-Plattform selbst wird auf AWS (Amazon Web Services) gehostet, einem Infrastructure-as-a-Service-Tool.
Heroku ist eine kostenlose Plattform, aber auf 500 Stunden Betriebszeit begrenzt. Die Apps werden als Dyno gehostet, der nach 30 Minuten Inaktivität in den Schlafmodus wechselt. Dadurch wird sichergestellt, dass Ihre App nicht die gesamte freie Zeit während der Inaktivität verbraucht. Die Plattform unterstützt Ruby, Java, PHP, Python, Node, Go, Scala. Die meisten Data-Science-Anfänger beziehen sich auf diese Plattform, um Erfahrungen mit dem Ausführen und Bereitstellen eines Modells in der Cloud zu sammeln.

Vorbereiten des Modells
Nun, da Sie sich dieser Plattform bewusst sind, bereiten wir das Modell dafür vor. Beim Trainieren eines maschinellen Lernmodells werden die entsprechenden Parameter im Speicher selbst abgelegt. Dieses Modell muss in eine separate Datei exportiert werden, damit wir dieses Modell direkt laden, unsichtbare Daten übergeben und die Ausgaben abrufen können.
Üblicherweise werden verschiedene Modellformate praktiziert, wie z. B. Pickle, job-lib, das das Python-Objektmodell in einen Bitstream konvertiert, ONNX, PMML oder MOJO, das ein H20.ai-Exportformat ist und die Integration des Modells in Java-Anwendungen ermöglicht. Bedenken Sie der Einfachheit halber, dass wir das Modell über Pickle exportieren möchten, dann können Sie dies folgendermaßen tun:
Essiggurke importieren
Pkl_Dateiname = „model.pkl“
mit open(Pkl_Filename, 'wb') als Datei:
pickle.dump (Modellname, Datei)
Das Modell ist nun in einer separaten Datei gespeichert und kann in eine API integriert verwendet werden.
Die Serverlogik
Um den Zugriff auf dieses Modell für Vorhersagen bereitzustellen, benötigen wir einen Servercode, der alle clientseitigen Anforderungen umleiten und verarbeiten kann. Python unterstützt Webentwicklungs-Frameworks und ein bekanntes ist Flask.
Es ist ein minimalistisches Framework, das es ermöglicht, einen Server mit wenigen Codezeilen einzurichten. Da es sich um ein Minimalpaket handelt, werden viele Funktionalitäten wie Authentifizierung und RESTful-Natur nicht explizit unterstützt. Diese können mit Erweiterungen eingebunden werden.
Eine weitere Option ist die Entscheidung für das neu veröffentlichte Framework FastAPI. Es ist viel schneller, skalierbar, gut dokumentiert und enthält viele integrierte Pakete. Lassen Sie uns zunächst mit dem Kolben fortfahren, um eine einfache Vorhersageroute einzurichten.
von Flask Import Flask
Essiggurke importieren
app = Flask(__name__)
mit open(Dateiname, 'rb') als Datei:
model = pickle.load (Datei)
@app.route('/predict', Methoden = ['GET', 'POST'])

def pred():
# Implementierung der Logik zum Abrufen von Parametern entweder durch Abfrage oder Nutzlast
Vorhersage = model.predict([erhaltene Parameter])
Rückgabe {'Ergebnis': Vorhersage}
Dies ist ein grober Code, um zu zeigen, wie man mit der Serverlogik vorgeht. Es gibt verschiedene Strategien, die Sie für eine bessere Umsetzung wählen können.
Auschecken: Leitfaden zum Bereitstellen von ML-Modellen mit Streamlit
Bereitstellungsdateien einrichten
Heroku benötigt eine Liste aller Abhängigkeiten, die von unserer Anwendung benötigt werden. Dies wird als Anforderungsdatei bezeichnet. Es ist eine Textdatei, die alle externen Bibliotheken auflistet, die die Anwendung verwendet. In diesem Beispiel würde der Dateiinhalt Folgendes enthalten:
Flasche
sklearn
numpy </p>
Pandas
Gunikorn
Die letzte Bibliothek, gunicorn, ermöglicht uns die Einrichtung der WSGI-Serverimplementierung, die die Schnittstelle für den Client und den Server bildet, der den HTTP-Verkehr abwickelt. Heroku fordert auch eine andere Datei namens Procfile an, die verwendet wird, um den Einstiegspunkt der App anzugeben. Bedenken Sie, dass die Serverlogikdatei unter dem Namen main.py gespeichert wird, dann lautet der in diese Datei einzufügende Befehl:
web: gunicorn main:app

„web“ ist die Art von Dyno, die wir bereitstellen, „gunicorn“ fungiert als Vermittler, um die Anfrage an den Servercode „main“ weiterzuleiten und in „main“ nach „app“ zu suchen. Die App verwaltet hier alle Routen.
Endgültige Bereitstellung
Alle Vorbereitungen sind getroffen, und jetzt ist es an der Zeit, die App in der Cloud auszuführen. Erstellen Sie ein Konto, wenn Sie sich nicht auf dem Heroku befinden, klicken Sie auf App erstellen und wählen Sie eine beliebige Region aus. Verbinden Sie danach Ihr GitHub-Konto und wählen Sie das Repo aus, das diese Dateien enthält: Servercode, model.pkl, requirements.txt und Procfile.
Danach klicken Sie einfach auf den Deploy-Zweig! Wenn es erfolgreich ist, besuchen Sie den generierten Link und Ihre App sollte live sein. Jetzt können Sie Anfragen an appname.herokuapp.com/predict route stellen und es sollte die Vorhersagen ausgeben. Erfahren Sie mehr über Modelle für maschinelles Lernen.
Fazit
Dies war eine Einführung in das, was Heroku ist, warum es erforderlich ist und wie ein Modell mithilfe von Flask bereitgestellt wird. Es gibt viele Hosting-Plattformen, die fortgeschrittenere Funktionen wie Datenpipelines und Streaming bieten, aber Heroku ist als kostenlose Plattform immer noch eine gute Wahl für Anfänger, die nur einen Vorgeschmack auf die Bereitstellung bekommen möchten.
Wenn Sie mehr über maschinelles Lernen erfahren möchten, sehen Sie sich das PG-Diplom in maschinellem Lernen und KI von IIIT-B & upGrad an, das für Berufstätige konzipiert ist und mehr als 450 Stunden strenge Schulungen, mehr als 30 Fallstudien und Aufgaben bietet, IIIT- B-Alumni-Status, mehr als 5 praktische, praktische Abschlussprojekte und Jobunterstützung bei Top-Unternehmen.
Welche Nachteile hat die Nutzung der Heroku-Plattform?
Heroku ist nicht ideal für große Unternehmen, da die Dokumentation der Plattform nicht umfangreich ist. Ein weiteres Problem ist das schreibgeschützte Dateisystem, das das Hochladen von sperrigen Dateien wie Filmen oder hochauflösenden Fotos erschwert. Heroku ist ein Platform-as-a-Service-Anbieter mit begrenzter Anpassungsfähigkeit. Heroku akzeptiert nur Zahlungen in USD und nicht in anderen Währungen, wie z. B. EUR. Für Geschäftsinhaber, die es vorziehen, in ihrer eigenen Währung zu bezahlen, könnte dies eine kleine Unannehmlichkeit sein. Darüber hinaus stellt Heroku innerhalb von CRE (Common Runtime Environment) keine statischen IP-Adressen bereit.
Wie unterscheidet sich Heroku von AWS?
Das Bereitstellungsverfahren in AWS ist nicht einfach und daher nicht besonders benutzerfreundlich in Bezug auf die Komplexität. Heroku bietet eine gebrauchsfertige Umgebung, die einfach zu bedienen ist. Heroku ist teurer als AWS, da es weniger menschliche Eingriffe erfordert. AWS kann hohe oder sehr hohe Rechenanforderungen bewältigen, während Heroku bescheidene Rechenanforderungen bewältigen kann. Heroku erfordert im Gegensatz zu AWS keine regelmäßige Wartung der Infrastruktur. AWS und Heroku sind beide blitzschnell, wenn es um die Bereitstellung geht.
Wie lange kann ich Heroku kostenlos nutzen?
Heroku-Konten verfügen über einen Pool an kostenlosen Prüfstandsstunden, die für kostenlose Apps verwendet werden können. Damit wird die 18-Stunden-Grenze für kostenlose Programme ersetzt, sodass diese bei Bedarf 24 Stunden am Tag laufen können. Neue Konten erhalten 550 kostenlose Prüfstandsstunden, mit zusätzlichen 450 Stunden, wenn Sie Ihre Identität mit einer Kreditkarte bestätigen. Heroku bietet einen kostenlosen Plan, um Ihnen beim Erlernen der Technologie und beim Einstieg zu helfen. Viele Heroku-Add-Ons bieten einen kostenlosen Plan, ebenso wie Heroku-Schaltflächen und Buildpacks.