Problembehebung bei Amazon SageMaker Pipelines - 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.

Problembehebung bei Amazon SageMaker Pipelines

Bei der Verwendung von Amazon SageMaker Pipelines können aus verschiedenen Gründen Probleme auftreten. Dieses Thema enthält Informationen zu häufigen Fehlern und zu deren Behebung.

Probleme mit der Pipeline-Definition

Ihre Pipeline-Definition ist möglicherweise nicht richtig formatiert. Dies kann dazu führen, dass Ihre Ausführung fehlschlägt oder Ihr Job ungenau ist. Diese Fehler können bei der Erstellung der Pipeline oder bei einer Ausführung erkannt werden. Wenn Ihre Definition nicht validiert wird, gibt Pipelines eine Fehlermeldung zurück, in der das Zeichen angegeben wird, bei dem die JSON Datei falsch formatiert ist. Um dieses Problem zu beheben, überprüfen Sie die mit SageMaker Python erstellten Schritte SDK auf ihre Richtigkeit.

Sie können Schritte nur einmal in eine Pipeline-Definition aufnehmen. Aus diesem Grund können Schritte nicht als Teil eines Bedingungsschritts und einer Pipeline in derselben Pipeline existieren.

Pipeline-Protokolle werden untersucht

Sie können den Status Ihrer Schritte mit dem folgenden Befehl anzeigen:

execution.list_steps()

Jeder Schritt enthält die folgenden Informationen:

  • Die ARN Entität, die von der Pipeline gestartet wurde, z. B. SageMaker Job ARNARN, Modell oder ModellpaketARN.

  • Die Fehlerursache beinhaltet eine kurze Erläuterung des Schritts, der fehlschlägt.

  • Wenn es sich bei dem Schritt um einen Bedingungsschritt handelt, beinhaltet er, ob die Bedingung als wahr oder falsch bewertet wird. 

  • Wenn bei der Ausführung eine frühere Jobausführung wiederverwendet wird, wird die Quellausführung CacheHit aufgeführt. 

Sie können die Fehlermeldungen und Protokolle auch in der Amazon SageMaker Studio-Oberfläche anzeigen. Weitere Informationen zum Anzeigen der Protokolle in Studio finden Sie unter Die Details eines Pipeline-Laufs anzeigen.

Fehlende Berechtigungen

Für die Rolle, die die Pipeline-Ausführung erstellt, und für die Schritte, mit denen die einzelnen Jobs in Ihrer Pipeline-Ausführung erstellt werden, sind die richtigen Berechtigungen erforderlich. Ohne diese Berechtigungen können Sie Ihre Pipeline-Ausführung möglicherweise nicht wie erwartet einreichen oder Ihre SageMaker Jobs ausführen. Informationen dazu, wie Sie sicherstellen können, dass Ihre Berechtigungen ordnungsgemäß eingerichtet sind, finden Sie unter IAMVerwaltung des Zugriffs.

Fehler bei der Auftragsausführung

Bei der Ausführung Ihrer Schritte können Probleme auftreten, die auf Probleme in den Skripten zurückzuführen sind, die die Funktionalität Ihrer SageMaker Jobs definieren. Jeder Job hat eine Reihe von CloudWatch Protokollen. Informationen zum Anzeigen dieser Protokolle in Studio finden Sie unterDie Details eines Pipeline-Laufs anzeigen. Informationen zur Verwendung von CloudWatch Protokollen mit SageMaker finden Sie unterProtokollgruppen und Streams, die Amazon SageMaker an Amazon CloudWatch Logs sendet.

Fehler in der Eigenschaftendatei

Möglicherweise treten Probleme auf, wenn Sie Eigenschaftendateien mit Ihrer Pipeline falsch implementieren. Informationen dazu, wie Sie sicherstellen können, dass Ihre Implementierung von Eigenschaftendateien erwartungsgemäß funktioniert, finden Sie unter Daten zwischen Schritten weitergeben.

Probleme beim Kopieren des Skripts in den Container im Dockerfile

Sie können das Skript entweder in den Container kopieren oder es über das entry_point Argument (Ihrer Schätzer-Entität) oder das code Argument (Ihrer Prozessoreinheit) übergeben, wie im folgenden Codebeispiel gezeigt.

step_process = ProcessingStep( name="PreprocessAbaloneData", processor=sklearn_processor, inputs = [ ProcessingInput( input_name='dataset', source=..., destination="/opt/ml/processing/code", ) ], outputs=[ ProcessingOutput(output_name="train", source="/opt/ml/processing/train", destination = processed_data_path), ProcessingOutput(output_name="validation", source="/opt/ml/processing/validation", destination = processed_data_path), ProcessingOutput(output_name="test", source="/opt/ml/processing/test", destination = processed_data_path), ], code=os.path.join(BASE_DIR, "process.py"), ## Code is passed through an argument cache_config = cache_config, job_arguments = ['--input', 'arg1'] ) sklearn_estimator = SKLearn( entry_point=os.path.join(BASE_DIR, "train.py"), ## Code is passed through the entry_point framework_version="0.23-1", instance_type=training_instance_type, role=role, output_path=model_path, # New sagemaker_session=sagemaker_session, # New instance_count=1, # New base_job_name=f"{base_job_prefix}/pilot-train", metric_definitions=[ {'Name': 'train:accuracy', 'Regex': 'accuracy_train=(.*?);'}, {'Name': 'validation:accuracy', 'Regex': 'accuracy_validation=(.*?);'} ], )