Zwischenspeichern von Pipeline-Schritten - Amazon SageMaker

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Zwischenspeichern von Pipeline-Schritten

Wenn Sie das Zwischenspeichern von Schrittsignaturen verwenden, versucht SageMaker Pipelines, einen früheren Lauf Ihres aktuellen Pipeline-Schritts mit denselben Werten für bestimmte Attribute zu finden. Falls dieser Fehler gefunden wird, SageMaker überträgt Pipelines die Ausgaben des vorherigen Laufs, anstatt den Schritt erneut zu berechnen. Die geprüften Attribute sind spezifisch für den Schritttyp und werden in Standard-Cache-Schlüsselattribute nach Pipeline-Schritttyp aufgeführt.

Sie müssen sich für das Step-Caching entscheiden – es ist standardmäßig deaktiviert. Wenn Sie das Step-Caching aktivieren, müssen Sie auch ein Timeout definieren. Dieses Timeout definiert, wie alt ein früherer Lauf sein kann, damit er als Kandidat für die Wiederverwendung in Frage kommt.

Beim Step-Caching werden nur erfolgreiche Läufe berücksichtigt – fehlgeschlagene Läufe werden niemals wiederverwendet. Wenn innerhalb des Timeout-Zeitraums mehrere erfolgreiche Läufe vorhanden sind, verwendet SageMaker Pipelines das Ergebnis für den letzten erfolgreichen Lauf. Wenn innerhalb des Timeout-Zeitraums keine erfolgreichen Läufe übereinstimmen, führt SageMaker Pipelines den Schritt erneut aus. Wenn der Executor eine vorherige Ausführung findet, die die Kriterien erfüllt, aber noch läuft, werden beide Schritte weiter ausgeführt und der Cache wird aktualisiert, wenn sie erfolgreich sind.

Das Zwischenspeichern von Schritten ist nur für einzelne Pipelines vorgesehen, sodass Sie einen Schritt aus einer anderen Pipeline nicht wiederverwenden können, selbst wenn eine Übereinstimmung mit der Schrittsignatur vorliegt.

Das Zwischenspeichern von Schritten ist für die folgenden Schritttypen verfügbar:

Schalten Sie das Step-Caching ein

Um die Zwischenspeicherung von Schritten zu aktivieren, müssen Sie der Schrittdefinition eine CacheConfig-Eigenschaft hinzufügen.

CacheConfig Eigenschaften verwenden das folgende Format in der Pipeline-Definitionsdatei:

{     "CacheConfig": {         "Enabled": false,         "ExpireAfter": "<time>"     } }

Das Enabled Feld gibt an, ob das Caching für den jeweiligen Schritt aktiviert ist. Sie können das Feld auf setzentrue, was angibt, dass versucht werden SageMaker soll, eine vorherige Ausführung des Schritts mit denselben Attributen zu finden. Oder Sie können das Feld auf setzenfalse, wodurch angegeben wird, dass der Schritt bei jeder Ausführung der Pipeline ausgeführt werden SageMaker soll. ExpireAfterist eine Zeichenfolge im ISO 8601-Dauerformat, die den Timeout-Zeitraum definiert. Bei der ExpireAfter Dauer kann es sich um einen Wert für ein Jahr, einen Monat, eine Woche, einen Tag, eine Stunde oder eine Minute handeln. Jeder Wert besteht aus einer Zahl, gefolgt von einem Buchstaben, der die Einheit der Dauer angibt. Beispielsweise:

  • „30d“ = 30 Tage

  • „5y“ = 5 Jahre

  • „T16m“ = 16 Minuten

  • „30DT5h“ = 30 Tage und 5 Stunden.

In der folgenden Diskussion wird das Verfahren zum Aktivieren des Caching für neue oder bereits bestehende Pipelines mithilfe des Amazon SageMaker Python SDK beschrieben.

Schalten Sie das Caching für neue Pipelines ein

Initialisieren Sie bei neuen Pipelines eine CacheConfig Instance mit enable_caching=True und geben Sie sie als Eingabe für Ihren Pipeline-Schritt an. Im folgenden Beispiel wird das Caching mit einem Timeout von 1 Stunde für einen Trainingsschritt aktiviert:

from sagemaker.workflow.pipeline_context import PipelineSession from sagemaker.workflow.steps import CacheConfig cache_config = CacheConfig(enable_caching=True, expire_after="PT1H") estimator = Estimator(..., sagemaker_session=PipelineSession()) step_train = TrainingStep( name="TrainAbaloneModel", step_args=estimator.fit(inputs=inputs), cache_config=cache_config )

Schalten Sie das Caching für bereits bestehende Pipelines ein

Um die Zwischenspeicherung für bereits vorhandene, bereits definierte Pipelines zu aktivieren, aktivieren Sie die Eigenschaft enable_caching für den Schritt und setzen Sie expire_after auf einen Timeout-Wert. Zuletzt aktualisieren Sie die Pipeline mit pipeline.upsert() oder pipeline.update(). Sobald Sie es erneut ausführen, aktiviert das folgende Codebeispiel das Caching mit einem Timeout von 1 Stunde für einen Trainingsschritt:

from sagemaker.workflow.pipeline_context import PipelineSession from sagemaker.workflow.steps import CacheConfig from sagemaker.workflow.pipeline import Pipeline cache_config = CacheConfig(enable_caching=True, expire_after="PT1H") estimator = Estimator(..., sagemaker_session=PipelineSession()) step_train = TrainingStep( name="TrainAbaloneModel", step_args=estimator.fit(inputs=inputs), cache_config=cache_config ) # define pipeline pipeline = Pipeline( steps=[step_train] ) # additional step for existing pipelines pipeline.update() # or, call upsert() to update the pipeline # pipeline.upsert()

Alternativ können Sie die Cache-Konfiguration aktualisieren, nachdem Sie die (bereits vorhandene) Pipeline definiert haben, sodass ein kontinuierlicher Codelauf möglich ist. Das folgende Codebeispiel demonstriert diese Methode:

# turn on caching with timeout period of one hour pipeline.steps[0].cache_config.enable_caching = True pipeline.steps[0].cache_config.expire_after = "PT1H" # additional step for existing pipelines pipeline.update() # or, call upsert() to update the pipeline # pipeline.upsert()

Ausführlichere Codebeispiele und eine Diskussion darüber, wie sich Python-SDK-Parameter auf das Caching auswirken, finden Sie unter Caching-Konfiguration in der Amazon SageMaker Python SDK-Dokumentation.

Deaktivieren des Schritt-Caching

Ein Pipeline-Schritt wird nicht erneut ausgeführt, wenn Sie Attribute ändern, die Standard-Cache-Schlüsselattribute nach Pipeline-Schritttyp für seinen Schritttyp nicht aufgeführt sind. Sie können jedoch entscheiden, dass der Pipeline-Schritt trotzdem erneut ausgeführt werden soll. In diesem Fall müssen Sie das Step-Caching deaktivieren.

Um das Zwischenspeichern von Schritten zu deaktivieren, setzen Sie das Enabled Attribut in der CacheConfig Eigenschaft der Schrittdefinition in der Schrittdefinition auf false, wie im folgenden Codeausschnitt gezeigt:

{     "CacheConfig": {         "Enabled": false,         "ExpireAfter": "<time>"     } }

Beachten Sie, dass das Attribut ExpireAfter ignoriert wird, wenn Enabled gleich false ist.

Um das Caching für einen Pipeline-Schritt mithilfe des Amazon SageMaker Python SDK zu deaktivieren, definieren Sie die Pipeline Ihres Pipeline-Schritts, schalten Sie die enable_caching Eigenschaft aus und aktualisieren Sie die Pipeline.

Sobald Sie es erneut ausführen, deaktiviert das folgende Codebeispiel das Caching für einen Trainingsschritt:

from sagemaker.workflow.pipeline_context import PipelineSession from sagemaker.workflow.steps import CacheConfig from sagemaker.workflow.pipeline import Pipeline cache_config = CacheConfig(enable_caching=False, expire_after="PT1H") estimator = Estimator(..., sagemaker_session=PipelineSession()) step_train = TrainingStep( name="TrainAbaloneModel", step_args=estimator.fit(inputs=inputs), cache_config=cache_config ) # define pipeline pipeline = Pipeline( steps=[step_train] ) # update the pipeline pipeline.update() # or, call upsert() to update the pipeline # pipeline.upsert()

Sie können die enable_caching Eigenschaft auch deaktivieren, nachdem Sie die Pipeline bereits definiert haben, sodass ein kontinuierlicher Code ausgeführt werden kann. Das folgende Codebeispiel veranschaulicht diese Lösung:

# turn off caching for the training step pipeline.steps[0].cache_config.enable_caching = False # update the pipeline pipeline.update() # or, call upsert() to update the pipeline # pipeline.upsert()

Ausführlichere Codebeispiele und eine Diskussion darüber, wie sich Python-SDK-Parameter auf das Caching auswirken, finden Sie unter Caching-Konfiguration in der Amazon SageMaker Python SDK-Dokumentation.

Standard-Cache-Schlüsselattribute nach Pipeline-Schritttyp

Bei der Entscheidung, ob ein früherer Pipeline-Schritt wiederverwendet oder der Schritt erneut ausgeführt werden soll, prüft SageMaker Pipelines, ob sich bestimmte Attribute geändert haben. Wenn sich der Attributsatz von allen vorherigen Läufen innerhalb des Timeout-Zeitraums unterscheidet, wird der Schritt erneut ausgeführt. Zu diesen Attributen gehören Eingabeartefakte, App- oder Algorithmusspezifikationen und Umgebungsvariablen.

In der folgenden Liste sind die einzelnen Pipeline-Schritttypen und die Attribute aufgeführt, die, falls sie geändert werden, eine erneute Ausführung des Schritts auslösen. Weitere Informationen darüber, welche Python-SDK-Parameter zur Erstellung der folgenden Attribute verwendet werden, finden Sie unter Caching-Konfiguration in der Amazon SageMaker Python SDK-Dokumentation.

  • AppSpecification

  • Umgebung

  • ProcessingInputs. Dieses Attribut enthält Informationen zum Vorverarbeitungsskript.

  • AlgorithmSpecification

  • CheckpointConfig

  • DebugHookConfig

  • DebugRuleKonfigurationen

  • Umgebung

  • HyperParameters

  • InputDataConfig. Dieses Attribut enthält Informationen über das Trainingsskript.

  • HyperParameterTuningJobConfig

  • TrainingJobDefinition. Dieses Attribut besteht aus mehreren untergeordneten Attributen, von denen nicht alle dazu führen, dass der Schritt erneut ausgeführt wird. Die untergeordneten Attribute, für die eine erneute Ausführung erforderlich sein könnte (falls sie geändert werden), sind:

    • AlgorithmSpecification

    • HyperParameterBereiche

    • InputDataConfig

    • StaticHyperParameter

    • TuningObjective

  • TrainingJobDefinitionen

  • AutoML. JobConfig Dieses Attribut besteht aus mehreren untergeordneten Attributen, von denen nicht alle dazu führen, dass der Schritt erneut ausgeführt wird. Die untergeordneten Attribute, für die eine erneute Ausführung erforderlich sein könnte (falls sie geändert werden), sind:

    • CompletionCriteria

    • CandidateGenerationConfig

    • DataSplitConfig

    • Mode

  • AutoML JobObjective

  • InputDataConfig

  • ProblemType

  • DataProcessing

  • Umgebung

  • ModelName

  • TransformInput

  • ClarifyCheckConfig

  • CheckJobConfig

  • SkipCheck

  • RegisterNewBasislinie

  • ModelPackageGroupName

  • SuppliedBaselineEinschränkungen

  • QualityCheckConfig

  • CheckJobConfig

  • SkipCheck

  • RegisterNewBasislinie

  • ModelPackageGroupName

  • SuppliedBaselineEinschränkungen

  • SuppliedBaselineStatistiken

  • ClusterId

  • StepConfig

Zugriffskontrolle für zwischengespeicherte Daten

Wenn eine SageMaker Pipeline ausgeführt wird, speichert sie die Parameter und Metadaten, die mit den von der Pipeline gestarteten SageMaker Jobs verknüpft sind, im Cache und speichert sie zur Wiederverwendung in nachfolgenden Läufen. Auf diese Metadaten kann zusätzlich zu zwischengespeicherten Pipeline-Schritten über eine Vielzahl von Quellen zugegriffen werden. Sie umfassen die folgenden Typen:

  • Describe*Job-Anforderungen

  • CloudWatch Logs

  • CloudWatch Ereignisse

  • CloudWatch Metriken

  • SageMaker Suchen

Beachten Sie, dass der Zugriff auf jede Datenquelle in der Liste durch ihre eigenen IAM-Berechtigungen gesteuert wird. Das Entfernen des Zugriffs einer bestimmten Rolle auf eine Datenquelle hat keinen Einfluss auf die Zugriffsebene für die anderen. Beispielsweise könnte ein Kontoadministrator der Rolle eines Anrufers IAM-Berechtigungen für Describe*Job Anfragen entziehen. Der Anrufer kann zwar keine Describe*Job Anfragen mehr stellen, aber er kann trotzdem die Metadaten aus einer Pipeline-Ausführung mit zwischengespeicherten Schritten abrufen, sofern er die Erlaubnis hat, die Pipeline auszuführen. Wenn ein Kontoadministrator den Zugriff auf die Metadaten eines bestimmten SageMaker Jobs vollständig entfernen möchte, muss er die Berechtigungen für jeden der relevanten Dienste entfernen, die Zugriff auf die Daten gewähren.