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-Jobs und -Dienste 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 Jobs 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;
Copy

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.

Verbrauchstabellen-Zuordnung

INSTANCE_FAMILY

vCPU

Arbeitsspeicher (GiB)

Speicher (GiB)

GPU

GPU-Arbeitsspeicher pro GPU (GiB)

Beschreibung

CPU | XS

CPU_X64_XS

2

8

250

k.A.

k.A.

Kleinste verfügbare Instanz für Snowpark-Container. Ideal für Kosteneinsparungen und Einstieg.

CPU | S

CPU_X64_S

4

16

250

k.A.

k.A.

Ideal für Hosting mehrerer Dienste/Jobs bei gleichzeitiger Kosteneinsparung.

CPU | M

CPU_X64_M

8

32

250

k.A.

k.A.

Ideal für Full-Stack-Anwendung oder mehrere Dienste

CPU | L

CPU_X64_L

32

128

250

k.A.

k.A.

Für Anwendungen, die eine ungewöhnlich große Anzahl von CPUs, Arbeitsspeicher und Speicher benötigen.

High-Memory CPU | S

HIGHMEM_X64_S

8

64

250

k.A.

k.A.

Für Anwendungen mit sehr hohem Bedarf an Arbeitsspeicher.

High-Memory CPU | M

HIGHMEM_X64_M

32

256

250

k.A.

k.A.

Für Hosting mehrerer Anwendungen mit sehr hohem Bedarf an Arbeitsspeicher auf einem einzigen Rechner.

High-Memory CPU | L

HIGHMEM_X64_L

128

1024

250

k.A.

k.A.

Rechner mit größtem verfügbaren Arbeitsspeicher zur Verarbeitung großer In-Memory-Datenmengen.

GPU | S

GPU_NV_S

8

32

250

1 NVIDIA A10G

24

Kleinste verfügbare NVIDIA-GPU-Größe für Snowpark-Container für den Einstieg.

GPU | M

GPU_NV_M

48

192

250

4 NVIDIA A10G

24

Optimiert für intensive GPU-Nutzungsszenarios wie Computer Vision oder LLMs/VLMs

GPU | L

GPU_NV_L

192

2048

250

8 NVIDIA A100

40

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 oder Jobs 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 }
    
    Copy

    Wenn Sie einen Computepool anhalten, hält Snowflake alle Dienste an, aber die Jobs werden weiter ausgeführt, bis sie einen Endzustand (DONE oder FAILED) erreicht haben, wonach die Computepool-Knoten freigegeben werden.

    Ein angehaltener Computepool muss erst wieder fortgesetzt werden, bevor Sie einen neuen Dienst oder Job 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 oder Job 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
    propertiesToAlter := { MIN_NODES | MAX_NODES | AUTO_RESUME | AUTO_SUSPEND_SECS | COMMENT }
    
    Copy

    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 Job ausgeführt wurde, schlägt die Jobausführung fehl. Snowflake wird den Job nicht neu starten.

      Beispiel:

      ALTER COMPUTE POOL MYPOOL SET MIN_NODES = 2  MAX_NODES = 2;
      
      Copy
  • Entfernen: Verwenden Sie den Befehl DROP COMPUTE POOL, um einen Computepool zu entfernen.

    Beispiel:

    DROP COMPUTE POOL <name>
    
    Copy

    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 oder Jobs 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 oder Job 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 an, aber die Jobs werden weiter ausgeführt, bis sie einen Endzustand (DONE oder FAILED) erreicht haben, wonach 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 und Jobs angehalten werden.

    USAGE

    Ermöglicht das Erstellen von Diensten und Jobs 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 führt Snowflake Aktualisierungen an seinen älteren Computepools durch. Dieser Prozess umfasst wichtige Aufgaben wie Betriebssystem-Upgrades, Laufwerkerweiterungen oder das Beheben von Sicherheitslücken in den Computepool-Knoten.

Während dieser Wartungsarbeiten werden die Knoten des Computepools in regelmäßigen Abständen (alle paar Wochen) offline genommen und durch aktualisierte Knoten ersetzt. Ein Computepool-Knoten bleibt maximal einen Monat lang aktiv. Danach deaktiviert Snowflake den Knoten und ersetzt ihn durch einen neuen, aktualisierten Knoten. Wenn dies der Fall ist, geschieht Folgendes:

  • Alle Dienstinstanzen, die derzeit in diesen Computepools aktiv sind, werden automatisch auf den neuen Knoten neu erstellt.

  • Alle aktiven Jobs werden unterbrochen und müssen von den Kunden neu gestartet werden, sobald der Computepool wieder betriebsbereit ist.

Das erwartete Wartungsfenster beträgt etwa 30 Minuten.

Diese internen Infrastrukturaktualisierungen finden jeden Dienstag, Mittwoch, Donnerstag und Freitag in der Zeit von 8:00 bis 13:00 Uhr Ortszeit in der Region statt.

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.

Richtlinien und Einschränkungen

  • Berechtigung CREATE COMPUTE POOL: Wenn Sie mit der aktuellen Rolle keinen Computepool erstellen können, verwenden Sie die Rolle ACCOUNTADMIN, um die Berechtigung zu erteilen. Beispiel:

    GRANT CREATE COMPUTE POOL ON ACCOUNT TO ROLE <role_name> [WITH GRANT OPTION];
    
    Copy

    Weitere Informationen dazu finden Sie unter GRANT <Berechtigungen>.

  • Limit für Computepool-Knoten pro Konto. Für jede gegebene Instanz-Familie (siehe CREATE COMPUTE POOL) gibt es pro Konto eine Obergrenze für die Gesamtzahl der Knoten, die zu einem bestimmten Zeitpunkt aktiv sein können. Wenn eine Fehlermeldung wie Requested number of nodes <#> exceeds the node limit for the account angezeigt wird, haben Sie dieses Grenze erreicht. Weitere Informationen dazu erhalten Sie von Ihrem Konto-Ansprechpartner.