TorchServe Erklärt: 5 Schritte Zum Bereitstellen Von Modellen in Der Produktionsumgebung

Inhalt:
TorchServe wurde im April 2020 eingeführt und hat eine Entwicklungszeit von mehr als zwei Jahren hinter sich. Es ist reifer und stabiler geworden. Dieser Artikel bietet eine umfassende Einführung in TorchServe.
Dieser Artikel wurde zuerst auf dem offiziellen WeChat-Konto veröffentlicht:PyTorch-Entwickler-Community
Weitere praktische Methoden zur Modellbereitstellung mit PyTorch finden Sie unter openbayes.com Erhalten
TorchServe ist die bevorzugte Lösung für die Bereitstellung von Modellen in Produktionsumgebungen in PyTorch.Es ist ein gut funktionierendes und erweiterbares Tool, das Modelle mit einer HTTP- oder HTTPS-API kapselt.
Das Frontend von TorchServe ist in Java implementiert und kann verschiedene Aufgaben übernehmen, darunter die Zuweisung von Workern für die Bereitstellung von Modellen und die Verantwortung für die Kommunikation zwischen Clients und Servern. Sein Python-Backend ist hauptsächlich für die Handhabung des Inferenzdienstes verantwortlich.
Abbildung 1: Übersicht über den TorchServe-Leistungsoptimierungsprozess
Darüber hinaus unterstützt es auch AB-Tests, dynamisches Batching, Protokollierung sowie verschiedene Modellbereitstellungen und Versionierung von Metriken.Die 4 öffentlichen APIs umfassen:
* Inferenz-API:Lauscht auf Port 8080, ist standardmäßig über localhost zugänglich, kann in der TorchServe-Konfiguration konfiguriert werden und unterstützt das Abrufen von Vorhersagen vom Modell.
* Erklärung API:Verwenden Sie Captum im Hintergrund, um eine Beschreibung des bereitgestellten Modells bereitzustellen und auf Port 8080 zu lauschen.
* Verwaltungs-API:Ermöglicht das Registrieren, Aufheben der Registrierung und Beschreiben von Modellen. Darüber hinaus können Benutzer die Anzahl der Mitarbeiter, denen das Modell bereitgestellt wird, erhöhen oder verringern.
* Metrik-API:Standardmäßig lauscht es auf Port 8082, sodass Benutzer das bereitgestellte Modell überwachen können.
TorchServe unterstützt Batch-Inferenz und stellt Modelle für mehrere Worker bereit.Ermöglicht Benutzern, Modellbereitstellungen zu skalieren und Spitzenverkehr zu bewältigen. Diese Erweiterung kann über die Management-API und Einstellungen in der Konfigurationsdatei erfolgen. Darüber hinaus kann die Metrics-API die Modellbereitstellung anhand von Standard- und benutzerdefinierten Metriken überwachen.
Andere erweiterte Einstellungen, wie die Länge der Warteschlange für den Empfang von Anfragen, die maximale Wartezeit für einen Stapel von Eingaben und andere Eigenschaften,Beide können über eine Konfigurationsdatei konfiguriert werden (die beim Start an TorchServe übergeben werden kann).
Die Schritte zum Bereitstellen eines Modells mit TorchServe umfassen:
1. Installieren Sie TorchServe, Modellarchivierer und andere Abhängigkeiten
2. Wählen Sie einen geeigneten Standardhandler (z. B. Bildklassifizierung) oder erstellen Sie einen benutzerdefinierten Handler
3. Verwenden Sie Torcharchive, um Modellartefakte und Handler in einem zu packen .beschädigen Datei und legen Sie sie in den Modellspeicher
4. Beginnen Sie mit der Bereitstellung des Modells
5. Führen Sie eine Inferenz durch
TorchServe-Projektadresse:
TorchServe-Schlüsselkonzepte: Handler
Das TorchServe-Backend verwendet einen Handler, um das Modell zu laden, die empfangenen Daten vorzuverarbeiten, Inferenzen auszuführen und die Antwort nachzuverarbeiten. Der Handler in TorchServe ist ein PPython-Skript, die gesamte Modellinitialisierung, Vorverarbeitung, Inferenz und Nachbearbeitungslogik sind darin enthalten.
TorchServe bietet außerdem einen sofort einsatzbereiten Handler für Anwendungen wie Bildklassifizierung, Segmentierung, Objekterkennung und Textklassifizierung. Darüber hinaus unterstützt es auch benutzerdefinierte Handler für den Fall, dass der Standardhandler den aktuellen Fall nicht unterstützt.
Benutzerdefinierte Handler bieten große Flexibilität.Dies könnte TorchServe zu einem Multi-Framework-Serving-Tool machen.Mit benutzerdefinierten Handlern können Sie ein Modell mit benutzerdefinierter Logik initialisieren und dem Modell auch das Laden von Modellen aus anderen Frameworks (wie ONNX) ermöglichen.
Der TorchServe-Handler besteht aus vier Hauptfunktionen,Funktionen , initialisieren , Schlussfolgerung Und Vorverarbeitung, jede Funktion gibt eine Liste zurück.
Der folgende Codeausschnitt ist ein Beispiel für einen benutzerdefinierten Handler. Der benutzerdefinierte Handler erbt den BaseHandler in TorchServe.Kann jede Hauptfunktion überschreiben.Dieses Beispiel zeigt, wie der Handler zum Laden des Detectron2-Modells und zum Lösen des Figurenerkennungsproblems verwendet wird. Das Modell wurde nach Torchscript exportiert und verwendet mod.halb() Führen Sie die FP16-Inferenz aus.
bearbeiten
TorchServe-Schlüsselkonzepte: Metriken
Beim Bereitstellen eines Modells in einer Produktionsumgebung ist es wichtig, seine Leistung zu überwachen. TorchServe sammelt regelmäßig Metriken auf Systemebene und ermöglicht das Hinzufügen benutzerdefinierter Metriken.
Zu den Metriken auf Systemebene gehören die CPU-Auslastung, der verfügbare und verwendete Speicherplatz und Arbeitsspeicher auf dem Host sowie die Anzahl der Anfragen mit unterschiedlichen Antwortcodes.(z. B. 200–300, 400–500 und über 500). Benutzerdefinierte Metriken können mithilfe der Custom Metrics API hinzugefügt werden.
API für benutzerdefinierte Metriken:
TorchServe zeichnet diese beiden Metriksätze in unterschiedlichen Protokolldateien auf. Standardmäßig werden Metriken in folgenden Formaten erfasst:
Systemmetriken: log_directory/ts_metrics.log
Benutzerdefinierte Metriken:Protokollverzeichnis/model_metrics.log
Die Metrics-API von TorchServe lauscht standardmäßig auf Port 8082 und ermöglicht Benutzern, erfasste Metriken abzufragen und zu überwachen. Der standardmäßige Metrik-Endpunkt gibt Metriken im Prometheus-Format zurück. Sie können Metriken mit Curl-Anfragen abfragen oder den Prometheus-Server auf den Endpunkt richten und Grafana für das Dashboard verwenden.
Verwenden Sie curl, um Metriken abzufragen:
curl http://127.0.0.1:8082/metrics
Beispiel für den Export protokollierter Metriken nach Prometheus mithilfe von mtail:https://github.com/google/mtail
Durch die Verfolgung dieser Kennzahlen im Dashboard können Sie Leistungseinbußen überwachen, die sporadisch auftreten oder bei Offline-Benchmark-Läufen schwer zu erkennen sind.
Was kommt als nächstes
Oben geht es ausschließlich um TorchServe. Im nächsten Abschnitt verwenden wir ein konkretes Beispiel.Erläutern Sie die spezifischen Faktoren, die sich auf die Bereitstellung von Modellen in Produktionsumgebungen auswirken, und wie Sie TorchServe zum Optimieren der Animated Drawings APP verwenden.
Weitere Lernmaterialien und praktische Tutorials finden Sie auf dem offiziellen Konto:PyTorch-Entwickler-Community. Um das Tutorial in Aktion anzusehen, besuchen Sie openbayes.com Praktische Bedienung.