Service Management und Skalierung¶
Sobald ein Modell bei Snowpark Container Services (SPCS) eingesetzt wird, müssen Sie dessen Lebenszyklus, Ressourcenverbrauch und Zuverlässigkeit verwalten. Auf dieser Seite werden Standardoperationen, Beobachtbarkeit und die Konfiguration der hohen Verfügbarkeit für Produktionsworkloads behandelt.
Verwalten von Diensten¶
Snowpark Container-Dienste bieten eine SQL-Weboberfläche für die Verwaltung von Diensten. Sie können die Befehle DESCRIBE SERVICE und ALTER SERVICE für SPCS-Dienste verwenden, die von Snowflake Model Serving erstellt wurden, genauso wie für die Verwaltung aller anderen SPCS-Dienste. Sie können beispielsweise Folgendes tun:
Ändern Sie MIN_INSTANCES und andere Eigenschaften eines Dienstes
Einen Dienst verwerfen (löschen)
Einen Dienst für ein anderes Konto freigeben
Änderung der Eigentümerschaft eines Services (der neue Eigentümer muss READ-Zugriff auf das Modell haben)
Bemerkung
Wenn der Eigentümer eines Dienstes aus irgendeinem Grund den Zugriff auf das zugrunde liegende Modell verliert, funktioniert der Dienst nach einem Neustart nicht mehr. Er läuft weiter, sobald er neu gestartet wird.
Um die Reproduzierbarkeit und Fehlersuchbarkeit zu gewährleisten, dürfen Sie die Spezifikation eines bestehenden Inferenzdienstes nicht ändern. Sie können jedoch die Spezifikation kopieren, sie anpassen und die angepasste Spezifikation verwenden, um Ihren eigenen Dienst zum Hosten des Modells zu erstellen. Diese Methode schützt jedoch nicht davor, dass das zugrunde liegende Modell gelöscht wird. Außerdem wird die Herkunft nicht verfolgt. Es ist am besten, Snowflake Model Serving die Erstellung von Diensten zu gestatten.
Skalieren von Diensten¶
Bemerkung
Ab snowflake-ml-python 1.25.0 können Sie die Skalierungsgrenzen für Ihren Inferenzdienst definieren, indem Sie „min_instances“ und „max_instances“ innerhalb der Methode „create_service“ festlegen.
Funktionsweise der automatischen Skalierung¶
Der Dienst wird mit der in „min_instances“ angegebenen Anzahl von Knoten initialisiert und dynamisch innerhalb Ihres definierten Bereichs skaliert, der auf dem Echtzeit-Datenverkehr und der Hardware-Auslastung basiert.
Skalierung auf Null (automatisches Anhalten): Wenn „min_instances“ auf 0 (Standard) gesetzt ist, wird der Dienst automatisch ausgesetzt, wenn 30 Minuten lang kein Datenverkehr festgestellt wird.
Skalierungslatenz: Skalierungstrigger werden normalerweise nach einer Minute aktiviert, nachdem die erforderliche Bedingung erfüllt ist. Beachten Sie, dass die gesamte Einrichtungszeit diese Trigger-Periode zuzüglich der Zeit enthält, die für die Bereitstellung und Initialisierung neuer Dienstinstanzen benötigt wird.
Best Practices für die Konfiguration¶
Parameter |
Empfohlene Strategie |
|---|---|
min_instances |
Legen Sie für Produktionsworkloads 1 oder mehr fest, um eine sofortige Verfügbarkeit sicherzustellen und Verzögerungen beim Kaltstart zu vermeiden. |
max_instances |
Stellen Sie dies ein, um Spitzenlasten zu erfüllen und gleichzeitig eine Obergrenze für den Ressourcenverbrauch und die Kosten einzuhalten. |
Aussetzen von Diensten¶
Der Standardwert „min_instances=0“ ermöglicht es dem Dienst, nach 30 Minuten Inaktivität automatisch anzuhalten. Eingehende Anforderungen lösen ein Fortsetzen aus, wobei die Gesamtverzögerung durch die Verfügbarkeit des Computepools und die Ladezeit des Modells (Startverzögerung) bestimmt wird.
Um einen Service manuell anzuhalten oder fortzusetzen, verwenden Sie den Befehl ALTER SERVICE.
Löschen von Modellen¶
Sie können Modelle und Modellversionen wie gewohnt über die SQL-Weboberfläche oder die Python-API verwalten, mit der Einschränkung, dass ein Modell oder eine Modellversion, das/die von einem Dienst verwendet wird (unabhängig davon, ob es/sie läuft oder ausgesetzt ist), nicht gelöscht werden kann. Um ein Modell oder eine Version zu löschen, müssen Sie zuerst den Dienst löschen.
Überwachen von Diensten¶
Wenn Sie Modelle in Snowpark Container Services ausführen, können Sie den Zustand des Dienstes überwachen und Probleme beheben, indem Sie auf Containerprotokolle und Metriken zugreifen. Modellbereitstellungsdienste erstellen Protokolle, die Ihnen helfen können, das Verhalten von Diensten zu verstehen, Fehler zu diagnostizieren und die Leistung zu optimieren.
Umfassende Informationen zur Überwachung von SPCS-Diensten, einschließlich Zugriff auf Metriken und Protokolle, finden Sie unter Überwachen von Diensten.
In Snowsight¶
Sie können Modellbereitstellungsdienste in Snowsight überwachen:
Wählen Sie im Navigationsmenü Monitoring » Services & jobs aus.
Wählen Sie auf der Registerkarte Services Ihren Dienst aus, um die Seite mit den Dienstdetails anzuzeigen.
Auf der Registerkarte Overview werden Informationen zum Dienst angezeigt, darunter Computepool, Endpunkte und die Anzahl der Instanzen.
Die Registerkarten Logs, Metrics und Events bieten Protokolle, Leistungsmetriken und Dienstereignisse (z. B. Bereitstellung von Instanzen und Herunterfahren). Filtern Sie die Ergebnisse wie erforderlich nach Instanz und Containername.
Zugreifen auf Dienstprotokolle¶
Sie können mit einer der folgenden Methoden auf die Protokolle Ihres Modells zugreifen, das Dienste bereitstellt:
Verwenden der Diensthilfsfunktion¶
Die Bereitstellung von Modellen enthält eine integrierte Hilfsfunktion, die Protokolle aus der Ereignistabelle für aktive oder angehaltene Dienste abruft:
Direktes Abfragen der Ereignistabelle¶
Wenn Sie eine Ereignistabelle für Ihr Konto konfiguriert haben, können Sie diese direkt abfragen, um Dienstprotokolle abzurufen:
Verwenden der Systemfunktion (nur Ausführung von Instanzen)¶
Für das Echtzeit-Debugging von aktiven Containern können Sie die Funktion SYSTEM$GET_SERVICE_LOGS verwenden:
Bemerkung
Der Containername für Modellinferenzdienste lautet „model-inference“. Zur Fehlerbehebung bei der Image-Erstellung verwenden Sie „model-build“ als Containernamen.
Zugreifen auf Dienstmetriken¶
Modellbereitstellungsdienste geben Kennzahlen zu Leistung und Integrität aus, mit denen Sie die Auslastung von Ressourcen, die Anforderungsraten, die Latenz und andere operative Eigenschaften überwachen können. Diese Metriken werden in der Ereignistabelle erfasst und können abgefragt werden, um die Leistung des Dienstes im Laufe der Zeit zu analysieren.
Weitere Informationen zu SPCS-Dienstmetriken finden Sie unter Zugriff auf Ereignistabelle für Dienstmetriken.
Verwenden der Diensthilfsfunktion¶
Modellbereitstellungsdienste enthalten eine integrierte Hilfsfunktion, die Metriken aus der Ereignistabelle für aktive oder angehaltene Dienste abruft:
Direktes Abfragen der Ereignistabelle¶
Sie können die Ereignistabelle direkt abfragen, um bestimmte Metriken abzurufen und zu filtern:
Fehlertoleranz¶
In jedem verteilten System treten Fehler auf. Für geschäftskritische Workloads liegt es an den Benutzenden, den Dienst so zu konfigurieren, dass er gegenüber Knoten- und Zonenfehlern Ausfallsicherheit bietet.
Ausfallsicherheit gegenüber Knotenfehlern¶
Um Standard-Knotenausfälle zu tolerieren, empfiehlt Snowflake eine Überbereitstellung von 50 % oder die Beibehaltung von mindestens 3 Instanzen (je nachdem, welcher Wert höher ist).
Beispiel: Wenn Sie 4 Instanzen benötigen, um Spitzenlasten zu unterstützen, sollten Sie 6 Instanzen bereitstellen
Ausfallsicherheit gegenüber Zonenfehlern¶
Für geschäftskritische Workloads, die Ausfallsicherheit gegen einen vollständigen Zonenausfall erfordern, können Sie einen verteilten Computepool beim Erstellen eines Dienstes verwenden. Verteilte Computepools werden mit dem Parameter PLACEMENT_GROUP erstellt, der auf DISTRIBUTED gesetzt ist. Weitere Informationen zu verteilten Computepools finden Sie unter Platzierung des Computepools.
Konfigurationsanleitung¶
Konvertieren eines bestehenden Pools¶
Warnung
Sie können diese Einstellung bei einem aktiven Pool nicht ändern. Sie müssen ihn zuerst anhalten.
Zurücksetzen eines bestehenden Pools¶
Warnung
Sie können diese Einstellung bei einem aktiven Pool nicht ändern. Sie müssen ihn zuerst anhalten.
Überprüfung¶
Um zu bestätigen, dass Ihr Pool für HA korrekt konfiguriert ist, überprüfen Sie die Spalte „placement_group“: