Fehlerbehebung bei Amazon SageMaker Pipelines - Amazon SageMaker AI

Fehlerbehebung 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, die das Zeichen identifiziert, bei dem die JSON-Datei falsch formatiert ist. Um dieses Problem zu beheben, überprüfen Sie die mit dem SageMaker AI Python SDK erstellten Schritte 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:

  • Der ARN der Entität, die von der Pipeline gestartet wurde, z. B. der Auftrags-ARN von SageMaker AI, der Modell-ARN oder der Modellpaket-ARN.

  • 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-Schnittstelle anzeigen. Weitere Informationen zum Anzeigen der Protokolle in Studio finden Sie unter Anzeige der Details eines Pipeline-Laufs.

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-AI-Aufträge ausführen. Informationen dazu, wie Sie sicherstellen können, dass Ihre Berechtigungen ordnungsgemäß eingerichtet sind, finden Sie unter IAM-Zugriffsverwaltung.

Fehler bei der Auftragsausführung

Bei der Ausführung Ihrer Schritte können aufgrund von Problemen in den Skripten, die die Funktionalität Ihrer SageMaker-AI-Aufträge definieren, Probleme auftreten. Jeder Job hat eine Reihe von CloudWatch-Protokollen. Informationen zum Anzeigen dieser Protokolle in Studio finden Sie unter Anzeige der Details eines Pipeline-Laufs. Informationen zur Verwendung von CloudWatch-Protokollen mit SageMaker AI finden Sie unter CloudWatch-Protokolle für Amazon SageMaker AI.

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 in der Dockerfile

Sie können das Skript entweder in den Container kopieren oder es über das Argument (Ihrer Schätzfunktion-Entität) oder das entry_point-Argument (Ihrer Prozessoreinheit) code ü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=(.*?);'} ], )