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 die Zwischenspeicherung von Schrittsignaturen verwenden, versucht SageMaker Pipelines, eine vorherige Ausführung Ihres aktuellen Pipeline-Schritts mit denselben Werten für bestimmte Attribute zu finden. Falls gefunden, propagiert SageMaker Pipelines die Ausgaben der vorherigen Ausführung, anstatt den Schritt neu 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 Ausführungen vorhanden sind, verwendet SageMaker Pipelines das Ergebnis für die letzte erfolgreiche Ausführung. Wenn im Timeout-Zeitraum keine erfolgreichen Ausführungen ü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, wodurch angewiesen wird SageMaker , zu versuchen, eine vorherige Ausführung des Schritts mit denselben Attributen zu finden. Oder Sie können das Feld auf setzen, was anweistfalse, den Schritt jedes Mal auszuführen SageMaker , wenn die Pipeline ausgeführt wird. ExpireAfter ist 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 Cachings für neue oder bereits vorhandene Pipelines mithilfe des Amazon SageMaker Python SDK beschrieben.

Schalten Sie das Caching für neue Pipelines ein

Initialisieren Sie bei neuen Pipelines eine CacheConfig Instanz 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 mit dem Amazon SageMaker Python SDK zu deaktivieren, definieren Sie die Pipeline Ihres Pipeline-Schritts, deaktivieren Sie die -enable_cachingEigenschaft 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 zum Erstellen 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

  • DebugRuleConfigurations

  • 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

    • HyperParameterRanges

    • InputDataConfig

    • StaticHyperParameters

    • TuningObjective

  • TrainingJobDefinitions

  • AutoMLJobConfig . 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

  • AutoMLJobObjective

  • InputDataConfig

  • ProblemType

  • DataProcessing

  • Umgebung

  • ModelName

  • TransformInput

  • ClarifyCheckConfig

  • CheckJobConfig

  • SkipCheck

  • RegisterNewBaseline

  • ModelPackageGroupName

  • SuppliedBaselineConstraints

  • QualityCheckConfig

  • CheckJobConfig

  • SkipCheck

  • RegisterNewBaseline

  • ModelPackageGroupName

  • SuppliedBaselineConstraints

  • SuppliedBaselineStatistics

  • ClusterId

  • StepConfig

Zugriffskontrolle für zwischengespeicherte Daten

Wenn eine SageMaker Pipeline ausgeführt wird, speichert sie die Parameter und Metadaten im Cache, die SageMaker den von der Pipeline gestarteten Aufträgen zugeordnet sind, und speichert sie zur Wiederverwendung in nachfolgenden Ausführungen. 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 Protokolle

  • 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 aus einem bestimmten SageMaker Auftrag vollständig entfernen möchte, muss er die Berechtigungen für jeden der relevanten Services entfernen, die Zugriff auf die Daten gewähren.