Stabile Endpunkte und API-Referenz¶
Auf dieser Seite finden Sie die technischen Spezifikationen für die externe Nutzung Ihrer Inferenzdienste und die Verwendung des Snowflake Gateway zur Verwaltung von Upgrades und Hochverfügbarkeit von Produktionsmodellen.
Stabile Endpunkte mit Snowflake Gateway¶
Das standardmäßige SPCS-Eingangssystem hat eine enge Verbindung zwischen einem Dienst und seinem Hostnamen. Wenn ein Dienst neu erstellt wird, geht der zugehörige Hostname verloren. Das Snowflake Gateway löst dieses Problem, indem es einen permanenten Hostnamen bereitstellt, der bei der Erstellung zugewiesen wird und sich während der Lebensdauer des Gateway-Objekts nicht ändert.
Wichtige Funktionen¶
Stabile URL: Behalten Sie eine permanente URL bei, während Sie das Gateway auf verschiedene zugrunde liegende Dienste verweisen, wenn sich Ihre Modelle weiterentwickeln. Änderungen werden normalerweise innerhalb einer Minute umgesetzt.
Datenverkehr aufteilen: Leiten Sie Anforderungen an mehrere Endpunkte auf der Grundlage von zugewiesenen Prozentsätzen weiter, was die Blue/Green-Bereitstellung oder Canary-Bereitstellung einfacher macht.
Automatisches Failover: Leitet den Datenverkehr von einem nicht verfügbaren oder nicht funktionsfähigen Endpunkt automatisch zu anderen funktionsfähigen Zielen um.
Verhalten von Gateway-Failovers¶
Das Gateway respektiert den relativen Prozentsatz der angegebenen funktionsfähigen Endpunkte und löst automatisch ein Failover aus, wenn:
Ein Dienst angehalten wird (und „auto_resume“ „false“ ist) oder sein Computepool angehalten wird (bis dieser wieder verfügbar ist).
Ein Dienst besteht den zugehörigen Bereitschaftstest nicht oder wird ganz gelöscht.
Der Besitzende des Gateway verliert die Berechtigung USAGE oder die Berechtigung OWNERSHIP für einen Zieldienstendpunkt.
Bemerkung
Für den Datenverkehr wird nie ein Failover zu einem Endpunkt mit einer Aufteilung von 0 % ausgeführt. Ein Ziel muss mindestens 1 % haben, um für das Failover in Frage zu kommen.
Verwalten von Modell-Upgrades¶
1. Erstellen und Ändern eines Gateway¶
Sie können festlegen, wie der Datenverkehr zwischen Modellversionen mithilfe einer YAML-basierten Spezifikation innerhalb eines SQL-Befehls verteilt wird.
-- Create a gateway to split traffic between V1 (90%) and V2 (10%)
CREATE OR REPLACE GATEWAY my_model_gateway
FROM SPECIFICATION $$
spec:
type: traffic_split
split_type: custom
targets:
- type: endpoint
value: my_db.my_schema.model_v1_service!inference
weight: 90
- type: endpoint
value: my_db.my_schema.model_v2_service!inference
weight: 10
$$;
-- Change the gateway to split traffic differently V1 (60%) and V2 (40%)
ALTER GATEWAY split_gateway
FROM SPECIFICATION $$
spec:
type: traffic_split
split_type: custom
targets:
- type: endpoint
value: my_db.my_schema.model_v1_service!inference
weight: 60
- type: endpoint
value: my_db.my_schema.model_v2_service!inference
weight: 40
$$;
Regeln für Spezifikationen: Der Typ muss „traffic_split“ sein, „split_type“ muss benutzerdefiniert sein, und alle Zielgewichtungen müssen in der Summe genau 100 ergeben. Standardmäßig kann ein Gateway zu maximal 5 Endpunkten weiterleiten.
2. Behandlung der Schemaentwicklung¶
Wenn eine neue Version des Modells (V2) andere Eingabe-Features erfordert als V1, folgen Sie dieser Strategie, um Unterbrechungen durch Anfragen zu vermeiden:
Update der Obermenge: Aktualisieren Sie Ihre Clientanwendung, um alle Features zu senden, die sowohl von V1 als auch V2 benötigt werden. Das Snowflake-Modell, das implizit bereitgestellt wird, ignoriert unnötige Features.
Schrittweise Aufteilung: Stellen Sie V2 bereit und verwenden Sie ALTER GATEWAY, um den Prozentsatz des Datenverkehrs langsam von V1 auf V2 zu verschieben.
Clientbereinigung: Sobald 100 % des Datenverkehrs an V2 weitergeleitet wurden, aktualisieren Sie den Client, um die jetzt veralteten V1-Features zu entfernen.
Wichtig
Gateway-Routing mit Obermengen-Features wird derzeit im Format „dataframe_records“ unterstützt. Unterstützung für „dataframe_split“ ist demnächst verfügbar.
3. HTTP-Endpunkt¶
Jedes Gateway-Objekt enthält den Namen seines Endpunkts, den Sie mit der folgenden Abfrage ermitteln können:
DESC GATEWAY split_gateway ->> select "ingress_url" as endpoint from $1
Der Endpunkt des Gateways ist https://.<endpoint>/. Um bestimmte Methoden des Modells über das Gateway aufzurufen, verwenden Sie den Namen der Methode als Pfad zur URL (z. B. https://<endpoint>/<method-name> ). In einer URL werden Unterstriche (_) im Methodennamen durch Bindestriche (-) in der URL ersetzt. So wird beispielsweise der Name des Dienstes „predict_prob“ in „prediction-proba“ in der URL geändert.
Für Benutzende von Private Link verwenden Sie „privatelink_ingress_url“ anstelle von „ingress_url“.
Anforderungs- und Antwortprotokolle¶
Das Gateway unterstützt dasselbe Datenformat, wie auf der Seite Echtzeit-Inferenz beschrieben.
Übergabe zusätzlicher Metadaten¶
In einigen Szenarien müssen Sie möglicherweise zusätzliche Daten übergeben (z. B. Datensatz-IDs oder Primärschlüssel), die nicht Teil der Eingabesignatur des Modells sind, aber für die die nachgelagerte Protokollierung oder die Verknüpfung mit Ground-Truth-Labels benötigt werden. Um dies zu verarbeiten, unterstützt Snowflake ein optionales Feld auf oberster Ebene mit der Bezeichnung „extra_columns“.
Beispiel¶
Mit „dataframe_split“ fügen Sie „extra_columns“ als Feld der obersten Ebene neben der DataFrame-Nutzlast ein:
payload = {
"dataframe_split": {
"index": [0, 1],
"columns": [
"customer_id",
"age",
"monthly_spend",
"primary_key",
],
"data": [
[101, 32, 85.5, "001"],
[102, 45, 120.0, "002"],
]
},
"extra_columns": ["primary_key"]
}
oder mit „dataframe_records“:
payload = {
"dataframe_records": [
{
"customer_id": 101,
"age": 32,
"monthly_spend": 85.5,
"primary_key": "001",
},
{
"customer_id": 102,
"age": 45,
"monthly_spend": 120.0,
"primary_key": "002",
},
],
"extra_columns": ["primary_key"]
}
Richtlinien für „extra_columns“¶
Optional: Sie können „extra_columns“ ganz weglassen, wenn Sie es nicht benötigen.
Keine Kollisionen: Die in „extra_columns“ aufgeführten Spaltennamen dürfen nicht mit den Spalten kollidieren, die Ihre Modellmethode als Eingaben erwartet. Halten Sie Modelleingaben und zusätzliche Spalten konzeptionell getrennt.
Beschränkung der Nutzlastgröße: Die gesamte Anforderungsnutzlast (einschließlich „extra_columns“ und alle Datenzeilen) ist auf 1 MB begrenzt. Wenn Sie diese Beschränkung überschreiten:
Reduzieren Sie die Batchgröße (weniger Zeilen pro Anforderung), oder
Entfernen oder kürzen Sie zusätzliche Spalten, die nicht unbedingt erforderlich sind.