기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon SageMaker Pipelines을 사용할 때 여러 가지 이유로 문제가 발생할 수 있습니다. 이 항목에서는 일반적인 오류와 해결 방법에 대한 정보를 제공합니다.
파이프라인 정의 문제
파이프라인 정의의 형식이 올바르지 않을 수 있습니다. 이로 인해 실행이 실패하거나 작업이 정확하지 않을 수 있습니다. 이러한 오류는 파이프라인이 생성되거나 실행이 발생할 때 발견될 수 있습니다. 정의가 검증되지 않는 경우 Pipelines은 JSON 파일 형식이 잘못된 문자를 식별하는 오류 메시지를 반환합니다. 이 문제를 해결하려면 SageMaker AI Python SDK를 사용하여 생성된 단계의 정확성을 검토하세요.
파이프라인 정의에는 단계를 한 번만 포함할 수 있습니다. 따라서 단계는 조건 단계 및 파이프라인의 일부로 동일한 파이프라인에 존재할 수 없습니다.
파이프라인 로그 검사
다음 명령을 사용하여 단계의 상태를 볼 수 있습니다.
execution.list_steps()
각 단계에는 다음 정보가 포함됩니다.
-
SageMaker AI 작업 ARN, 모델 ARN 또는 모델 패키지 ARN과 같이 파이프라인에서 시작된 개체의 ARN입니다.
-
실패 이유에는 단계 실패에 대한 간략한 설명이 포함됩니다.
-
단계가 조건 단계인 경우 조건의 true 또는 false 평가 여부가 포함됩니다.
-
실행에서 이전 작업 실행을 재사용하는 경우
CacheHit
에 소스 실행이 나열됩니다.
Amazon SageMaker Studio 인터페이스에서 오류 메시지와 로그를 볼 수도 있습니다. 스튜디오에서 로그를 확인하는 방법에 대한 자세한 내용은 파이프라인 실행 세부 정보 보기섹션을 참조하세요.
권한 누락
파이프라인 실행을 생성하는 역할과 파이프라인 실행에서 각 작업을 생성하는 단계에 올바른 권한이 필요합니다. 이러한 권한이 없으면 파이프라인 실행을 제출하거나 SageMaker AI 작업을 예상대로 실행하지 못할 수 있습니다. 권한이 제대로 설정되었는지 확인하려면 IAM 액세스 관리섹션을 참조하세요.
작업 실행 오류
SageMaker AI 작업의 기능을 정의하는 스크립트의 문제로 인해 단계를 실행할 때 문제가 발생할 수 있습니다. 각 작업에는 일련의 CloudWatch 로그가 있습니다.스튜디오에서 이러한 로그를 보려면 파이프라인 실행 세부 정보 보기섹션을 참조하세요. SageMaker AI에서 CloudWatch 로그를 사용하는 방법에 대한 자세한 내용은 섹션을 참조하세요Amazon SageMaker AI가 Amazon CloudWatch Logs로 전송하는 로그 그룹 및 스트림.
속성 파일 오류
파이프라인으로 속성 파일을 잘못 구현하면 문제가 발생할 수 있습니다. 속성 파일 구현이 예상대로 작동하도록 하려면 단계 간 데이터 전달섹션을 참조하세요.
Dockerfile의 컨테이너에 스크립트 복사 문제
다음 코드 샘플에 나와 있는 것처럼 스크립트를 컨테이너에 복사하거나 추정기 엔터티의 entry_point
인수 또는 프로로세서 엔터티의 code
인수를 통해 전달할 수 있습니다.
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=(.*?);'}
],
)