Snowpark Container Services: Verwenden von Computepools¶
Ein Computepool ist eine Sammlung von einem oder mehreren virtuellen VM-Knoten (virtuelle Maschinen), auf denen Snowflake Ihre Snowpark Container Services-Dienste (einschließlich Jobdienste) ausführt. Sie erstellen einen Computepool mit dem Befehl CREATE COMPUTE POOL. Sie geben den Computepool dann beim Erstellen eines Dienstes oder beim Ausführen eines Jobdienstes an.
Erstellen von Computepools¶
Ein Computepool ist ein Konstrukt auf Kontoebene, analog zu einem virtuellen Snowflake-Warehouse. Der Sichtbarkeitsbereich des Namens des Computepools ist Ihr Konto. Das heißt, Sie können nicht mehrere Computepools mit demselben Namen in Ihrem Konto haben.
Für das Erstellen eines Computepools sind mindestens folgende Informationen erforderlich:
Maschinentyp, der für die Knoten des Computepool bereitgestellt werden soll
Mindestanzahl von Knoten, mit denen der Computepool gestartet wird
Maximale Anzahl von Knoten, auf die der Computepool skaliert werden kann (Snowflake verwaltet die Skalierung)
Wenn Sie eine erhebliche Verarbeitungslast oder plötzliche Aktivitätsspitzen bei den Diensten erwarten, die Sie in Ihrem Computepool ausführen möchten, können Sie eine Mindestknotenanzahl von größer als 1 festlegen. Dieser Ansatz stellt sicher, dass zusätzliche Knoten bei Bedarf sofort verfügbar sind, anstatt auf den Start der automatischen Skalierung zu warten.
Das Festlegen eines maximalen Knotenlimits verhindert, dass durch die automatische Skalierung von Snowflake eine unerwartet große Anzahl von Knoten zu Ihrem Computepool hinzugefügt wird. Dies kann in Szenarios wie unerwarteten Lastspitzen oder Problemen in Ihrem Code, die Snowflake dazu veranlassen könnten, eine größere Anzahl von Computepool-Knoten als ursprünglich geplant zuzuweisen, von entscheidender Bedeutung sein.
Der folgende CREATE COMPUTE POOL-Befehl erstellt einen Ein-Knoten-Computepool:
CREATE COMPUTE POOL tutorial_compute_pool
MIN_NODES = 1
MAX_NODES = 1
INSTANCE_FAMILY = CPU_X64_XS;
INSTANCE_FAMILY identifiziert den Maschinentyp, den Sie für Computerknoten im Computepool bereitstellen möchten. Die Angabe von INSTANCE_FAMILY beim Erstellen eines Computepools ist vergleichbar mit der Angabe der Warehouse-Größe (XSMALL, SMALL, MEDIUM, LARGE usw.) beim Erstellen eines Warehouses. In der folgenden Tabelle sind die verfügbaren Maschinentypen aufgeführt.
INSTANCE_FAMILY, Snowflake Service Consumption Table-Zuordnung
vCPU
Arbeitsspeicher (GiB)
Speicher (GiB)
Beschränkung der Bandbreite (Gbps)
GPU
GPU-Arbeitsspeicher pro GPU (GiB)
Knotenbeschränkung
Beschreibung
CPU_X64_XS, . CPU | XS
1
6
100
Bis zu 12,5
k.A.
k.A.
50
Kleinste verfügbare Instanz für Snowpark-Container. Ideal für Kosteneinsparungen und Einstieg.
CPU_X64_S, . CPU | S
3
13
100
Bis zu 12,5
k.A.
k.A.
50
Ideal für Hosting mehrerer Dienste/Jobs bei gleichzeitiger Kosteneinsparung.
CPU_X64_M, . CPU | M
6
28
100
Bis zu 12,5
k.A.
k.A.
50
Ideal für Full-Stack-Anwendung oder mehrere Dienste
CPU_X64_L, . CPU | L
28
116
100
12,5
k.A.
k.A.
50
Für Anwendungen, die eine ungewöhnlich große Anzahl von CPUs, Arbeitsspeicher und Speicher benötigen.
HIGHMEM_X64_S, . High-Memory CPU | S
6
58
100
AWS: Bis zu 12,5, Azure: 8
k.A.
k.A.
50
Für Anwendungen mit sehr hohem Bedarf an Arbeitsspeicher.
HIGHMEM_X64_M, . High-Memory CPU | M . (nurAWS)
28
240
100
12,5
k.A.
k.A.
50
Für Hosting mehrerer Anwendungen mit sehr hohem Bedarf an Arbeitsspeicher auf einem einzigen Rechner.
HIGHMEM_X64_M, . High-Memory CPU | M . (nur Azure)
28
244
100
16
k.A.
k.A.
50
Für Hosting mehrerer Anwendungen mit sehr hohem Bedarf an Arbeitsspeicher auf einem einzigen Rechner.
HIGHMEM_X64_L, . High-Memory CPU | L . ( nurAWS)
124
984
100
50
k.A.
k.A.
20
Rechner mit größtem verfügbaren AWS-Arbeitsspeicher zur Verarbeitung großer In-Memory-Datenmengen.
HIGHMEM_X64_L, . High-Memory CPU | L . (nur Azure)
92
654
100
32
k.A.
k.A.
20
Azure-Rechner mit größtem verfügbaren Arbeitsspeicher zur Verarbeitung großer In-Memory-Datenmengen verfügbar ist.
GPU_NV_S, . GPU | S . (nurAWS)
6
27
100
Bis zu 10
1 NVIDIA A10G
24
10
Kleinste verfügbare NVIDIA-GPU-Größe für Snowpark-Container für den Einstieg.
GPU_NV_M, . GPU | M . (nur AWS)
44
178
100
40
4 NVIDIA A10G
24
10
Optimiert für intensive GPU-Nutzungsszenarios wie Computer Vision oder LLMs/VLMs
GPU_NV_L, . GPU | L . (nur AWS)
92
1112
100
400
8 NVIDIA A100
40
Auf Anfrage
Größte GPU-Instanz für spezialisierte und fortgeschrittene GPU-Fälle wie LLMs und Clustering usw.
GPU_NV_XS, . GPU | XS . (nur Azure)
3
26
100
8
1 NVIDIA T4
16
10
Unsere kleinste Azure NVIDIA GPU-Größe, die für Snowpark-Container verfügbar ist, um den Einstieg zu erleichtern.
GPU_NV_SM, . GPU | SM . (nur Azure)
32
424
100
40
1 NVIDIA A10
24
10
Eine kleinere Azure NVIDIA GPU-Größe ist für Snowpark Container verfügbar, um den Einstieg zu erleichtern.
GPU_NV_2M, . GPU | 2M . (nur Azure)
68
858
100
80
2 NVIDIA A10
24
5
Optimiert für intensive GPU-Nutzungsszenarios wie Computer Vision oder LLMs/VLMs
GPU_NV_3M, . GPU | 3M . (nur Azure)
44
424
100
40
2 NVIDIA A100
80
Auf Anfrage
Optimiert für speicherintensive GPU-Nutzungsszenarios wie Computer Vision oder LLMs/VLMs.
GPU_NV_SL, . GPU | SL . (nur Azure)
92
858
100
80
4 NVIDIA A100
80
Auf Anfrage
Größte GPU-Instanz für spezialisierte und fortgeschrittene GPU-Fälle wie LLMs und Clustering usw.
Weitere Informationen zu verfügbaren Instanzfamilien finden Sie unter CREATE COMPUTE POOL.
Automatisches Skalieren von Computepool-Knoten¶
Nachdem Sie einen Computepool erstellt haben, startet Snowflake die Mindestanzahl von Knoten und erstellt automatisch zusätzliche Knoten bis zur zulässigen Höchstzahl. Dies wird als automatische Skalierung oder Autoskalierung bezeichnet. Neue Knoten werden zugewiesen, wenn die aktiven Knoten keinen weiteren Workload mehr aufnehmen können. Angenommen, dass auf zwei Knoten in Ihrem Computepool zwei Dienstinstanzen ausgeführt werden. Wenn Sie einen anderen Dienst innerhalb desselben Computepools ausführen, kann der zusätzliche Ressourcenbedarf dazu führen, dass Snowflake einen weiteren Knoten startet.
Wenn jedoch für eine bestimmte Dauer keine Dienste auf einem Knoten ausgeführt werden, entfernt Snowflake den Knoten automatisch, wobei sichergestellt ist, dass der Computepool auch nach dem Entfernen die Mindestanzahl von Knoten beibehält.
Verwalten von Computepools¶
Snowpark Container Services bietet die folgenden Befehle zum Verwalten von Computepools:
Überwachen: Verwenden Sie den Befehl SHOW COMPUTE POOLS, um Informationen zu Computepools zu erhalten.
Betrieb: Verwenden Sie den Befehl ALTER COMPUTE POOL, um den Status eines Computepools zu ändern.
ALTER COMPUTE POOL <name> { SUSPEND | RESUME | STOP ALL }
Wenn Sie einen Computepool anhalten, hält Snowflake alle Dienste außer den Jobdiensten an. Die Jobdienste werden weiter ausgeführt, bis sie einen Endzustand (DONE oder FAILED) erreicht haben, woraufhin die Computepool-Knoten freigegeben werden.
Ein angehaltener Computepool muss erst wieder fortgesetzt werden, bevor Sie einen neuen Dienst starten können. Wenn der Computepool für automatisches Fortsetzen konfiguriert ist (mit der Eigenschaft AUTO_RESUME auf TRUE), aktiviert Snowflake den Pool automatisch wieder, wenn ein Dienst an ihn übermittelt wird. Andernfalls müssen Sie den Befehl ALTER COMPUTE POOL ausführen, um den Computepool manuell fortzusetzen.
Ändern: Verwenden Sie den Befehl ALTER COMPUTE POOL, um die Eigenschaften des Computepools zu ändern.
ALTER COMPUTE POOL <name> SET propertiesToAlter = <value> propertiesToAlter := { MIN_NODES | MAX_NODES | AUTO_RESUME | AUTO_SUSPEND_SECS | COMMENT }
Wenn Sie MAX_NODES verringern, beachten Sie die folgenden möglichen Auswirkungen:
Snowflake muss möglicherweise eine oder mehrere Dienstinstanzen beenden und sie auf anderen verfügbaren Knoten im Computepool neu starten. Wenn MAX_NODES zu niedrig eingestellt ist, kann Snowflake möglicherweise bestimmte Dienstinstanzen nicht planen.
Wenn auf dem beendeten Knoten noch eine Jobdienst ausgeführt wurde, schlägt die Jobausführung fehl. Snowflake wird den Jobdienst nicht neu starten.
Beispiel:
ALTER COMPUTE POOL MYPOOL SET MIN_NODES = 2 MAX_NODES = 2;
Entfernen: Verwenden Sie den Befehl DROP COMPUTE POOL, um einen Computepool zu entfernen.
Beispiel:
DROP COMPUTE POOL <name>
Sie müssen erst alle aktiven Dienste beenden, bevor Sie einen Computepool löschen können.
Auflisten von Computepools und Anzeigen von Eigenschaften: Verwenden Sie die Befehle SHOW COMPUTE POOLS und DESCRIBE COMPUTE POOL. Beispiele dazu finden Sie unter Computepools anzeigen.
Lebenszyklus von Computepools¶
Ein Computepool kann einen der folgenden Status aufweisen:
IDLE: Der Computepool hat die gewünschte Anzahl von Knoten für virtuelle Maschinen (VM), aber es sind keine Dienste geplant. In diesem Zustand kann die automatische Skalierung den Computepool aufgrund mangelnder Aktivität auf die Mindestgröße verkleinern.
ACTIVE: Im Computepool wird mindestens ein Dienst ausgeführt oder es ist mindestens ein Dienst für die Ausführung geplant. Der Pool kann je nach Auslastung oder Benutzeraktionen erweitert (bis zur maximalen Anzahl von Knoten) oder verkleinert (bis zur minimalen Anzahl von Knoten) werden.
SUSPENDED: Der Pool enthält derzeit keine aktiven VM-Knoten, aber wenn die Computepool-Eigenschaft AUTO_RESUME auf TRUE gesetzt ist, wird der Pool automatisch fortgesetzt, wenn ein Dienst geplant wird.
Die folgenden Status sind transient:
STARTING: Wenn Sie einen Computepool erstellen oder fortsetzen, weist der Computepool den Status STARTING so lange auf, bis mindestens ein Knoten bereitgestellt wurde.
STOPPING: Wenn Sie einen Computepool anhalten (mit ALTER COMPUTE POOL), weist der Computepool den Status STOPPING so lange auf, bis Snowflake alle Knoten im Computepool freigegeben hat. Wenn Sie einen Computepool anhalten, hält Snowflake alle Dienste außer den Jobdiensten an. Die Jobdienste werden weiter ausgeführt, bis sie einen Endzustand (DONE oder FAILED) erreicht haben, woraufhin die Computepool-Knoten freigegeben werden.
RESIZING: Wenn Sie einen Computepool erstellen, weist er zunächst den Status STARTING auf. Sobald ein Knoten bereitgestellt wurde, wechselt er in den Status RESIZING, bis die Mindestanzahl von Knoten (wie in CREATE COMPUTE POOLangegeben) bereitgestellt wurde. Wenn Sie einen Computepool (ALTER COMPUTE POOL) ändern und die Mindest- und Höchstwerte für die Knoten aktualisieren, wechselt der Pool in den Status RESIZING, bis die Mindestanzahl von Knoten bereitgestellt wurde. Beachten Sie, dass ein Computepool auch bei der automatische Skalierung zunächst in den Status RESIZING wechselt.
Berechtigungen von Computepools¶
Wenn Sie einen Computepool verwenden, gilt das folgende Berechtigungsmodell:
Um einen Computepool in einem Konto zu erstellen, benötigt die aktuelle Rolle die Berechtigung CREATE COMPUTE POOL für das Konto. Wenn Sie einen Pool erstellen, haben Sie als Eigentümer die Berechtigung OWNERSHIP, die Ihnen die volle Kontrolle über diesen Computepool gewährt. Wenn Sie die Berechtigung OWNERSHIP für einen Computepool haben, bedeutet dies nicht, dass Sie über Berechtigungen für andere Computepools verfügen.
Für das Verwalten von Computepools werden die folgenden Berechtigungen unterstützt:
Berechtigung
Verwendung
MODIFY
Ermöglicht das Ändern aller Eigenschaften des Computepools, einschließlich Ändern der Größe.
MONITOR
Ermöglicht das Anzeigen der Computepool-Nutzung, einschließlich der Beschreibung der Computepool-Eigenschaften.
OPERATE
Ermöglicht das Ändern des Status des Computepools (Anhalten, Fortsetzen). Darüber hinaus können alle geplanten Dienste (einschließlich Jobdienste) angehalten werden.
USAGE
Ermöglicht das Erstellen von Diensten im Computepool. Beachten Sie Folgendes: Wenn ein Computepool angehaltenen wurde und seine AUTO_RESUME-Eigenschaft auf „true“ gesetzt ist, kann eine Rolle mit der Berechtigung USAGE für den Computepool implizit das Fortsetzen des Computepools auslösen kann, wenn sie einen Dienst startet oder fortsetzt, auch wenn diese Rolle nicht über die Berechtigung OPERATE verfügt.
OWNERSHIP
Gewährt volle Kontrolle über den Computepool. Diese Berechtigung kann für ein bestimmtes Objekt immer nur einer Rolle erteilt sein.
ALL [ PRIVILEGES ]
Erteilt alle Berechtigungen für den Computepool, außer OWNERSHIP.
Wartung von Computepools¶
Im Rahmen der routinemäßigen internen Infrastrukturwartung aktualisiert Snowflake regelmäßig ältere Serverknoten, um optimale Leistung und Sicherheit zu gewährleisten. Dazu gehören Upgrades des Betriebssystems, Verbesserungen der Treiber und Korrekturen im Bereich Sicherheit. Bei der Wartung werden veraltete Knoten alle paar Wochen durch aktualisierte ersetzt, wobei jeder Knoten bis zu einem Monat lang aktiv ist.
Wartungsfenster¶
Geplante Wartungsarbeiten finden jeden Montag bis Donnerstag von 23 Uhr bis 5 Uhr morgens Ortszeit in der Region statt, in der sie durchgeführt werden, mit einem erwarteten Zeitfenster von 6 Stunden.
Unterbrechung des Service¶
Während der Wartung werden alle Dienstinstanzen in den betroffenen Serverpools automatisch auf den neuen Knoten neu erstellt. Die laufenden Dienste werden unterbrochen und müssen von den Kunden neu gestartet werden, sobald die Wartung abgeschlossen ist.
Achtung
Serviceunterbrechungen während eines Wartungsfensters oder kritischer Updates fallen nicht unter den Service Level, der in der Support-Richtlinie und dem Service Level Agreement von Snowflake festgelegt ist.
Bewährte Verfahren zur Minimierung von Ausfallzeiten¶
Verwenden Sie Techniken für hohe Verfügbarkeit und stellen Sie sicher, dass jeder Dienst über mehrere Instanzen verfügt, die auf mehrere Serverknoten verteilt werden können, um einzelne Ausfallursachen (Single Points of Failure) zu vermeiden.
Überwachen Sie die Zeitpläne für die Wartung und planen Sie kritische Aufgaben außerhalb der Wartungsfenster.
Implementieren Sie automatisierte Prozeduren für den Neustart von Jobdiensten.
Führen Sie regelmäßig Backups oder Checkpoints durch.
Planen von Diensten in einem Computepool¶
Zum Zeitpunkt des Erstellens eines Dienstes können Sie entscheiden, dass mehrere Instanzen ausgeführt werden, um die eingehende Verarbeitungslast zu verwalten. Snowflake verwendet die folgenden allgemeinen Richtlinien für die Planung Ihrer Dienstinstanzen auf Computepool-Knoten:
Alle Container einer Dienstinstanz werden immer auf einem einzigen Computepool-Knoten ausgeführt. Das heißt, eine Dienstinstanz erstreckt sich nie über mehrere Knoten.
Wenn Sie mehrere Dienstinstanzen ausführen, kann Snowflake diese Dienstinstanzen auf demselben Knoten oder auf verschiedenen Knoten innerhalb des Computepools ausführen. Bei dieser Entscheidung berücksichtigt Snowflake alle spezifizierten harten Ressourcenanforderungen (z. B. Arbeitsspeicher und GPU), wie sie in der Dienstspezifikationsdatei (siehe Feld containers.resources) definiert sind.
Angenommen, jeder Knoten in Ihrem Computepool verfügt über 8 GB Arbeitsspeicher. Wenn Ihre Dienstspezifikation 6 GB Arbeitsspeicher anfordert und Sie sich beim Erstellen eines Dienstes dafür entscheiden, zwei Instanzen auszuführen, kann Snowflake nicht beide Instanzen auf demselben Knoten ausführen. In diesem Fall plant Snowflake jede Instanz auf einem separaten Knoten innerhalb des Computepools, um die Anforderungen bezüglich des Arbeitsspeichers zu erfüllen.
Bemerkung
Snowflake unterstützt Stagingbereiche zur Verwendung durch Anwendungscontainer. Der interne Stagingbereich von Snowflake ist einer der unterstützten Speicher-Volume-Typen.
Für eine optimale Leistung beschränkt Snowflake jetzt die Gesamtzahl der Stagingbereiche-Bereitstellungen auf acht pro Serverknoten, unabhängig davon, ob diese Volumes zur gleichen Instanz, zum gleichen Service oder zu verschiedenen Services gehören.
Wenn die Beschränkung auf einem Knoten erreicht ist, verwendet Snowflake diesen Knoten nicht mehr, um neue Dienstinstanzen zu starten, die einen Stagingbereich verwenden. Wenn das Limit auf allen Knoten im Serverpool erreicht ist, kann Snowflake Ihre Dienstinstanz nicht mehr starten. In diesem Szenario gibt Snowflake bei der Ausführung des Befehls SHOW SERVICE CONTAINERS IN SERVICE den Status PENDING mit der Meldung „Nicht durchführbar wegen unzureichender Ressourcen“ zurück.
Um diese Beschränkung im Stagingbereich eines Knotens zu berücksichtigen, können Sie in einigen Fällen die maximale Anzahl der Knoten, die Sie für einen Computepool anfragen, erhöhen. Dadurch wird sichergestellt, dass zusätzliche Knoten für Snowflake verfügbar sind, um Ihre Dienstinstanzen zu starten.
Richtlinien und Einschränkungen¶
Berechtigung CREATE COMPUTE POOL: Wenn Sie mit der aktuellen Rolle keinen Computepool erstellen können, wenden Sie sich an Ihren Kontoadministrator, um die Berechtigung zu erhalten. Beispiel:
GRANT CREATE COMPUTE POOL ON ACCOUNT TO ROLE <role_name> [WITH GRANT OPTION];
Weitere Informationen dazu finden Sie unter GRANT <Berechtigungen>.
Limit für Computepool-Knoten pro Konto. Die Anzahl der Knoten, die Sie in Ihrem Konto erstellen können (unabhängig von der Anzahl der Serverknoten), ist auf 120 beschränkt. Außerdem gibt es eine Beschränkung für die Anzahl der Knoten, die für jede Instanzfamilie zulässig sind (siehe die Spalte Knotengrenze in der Tabelle Instanzfamilie). Wenn eine Fehlermeldung wie
Requested number of nodes <#> exceeds the node limit for the account
angezeigt wird, haben Sie diese Grenzen erreicht. Weitere Informationen dazu erhalten Sie von Ihrem Konto-Ansprechpartner.