

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Pipelines 단계
<a name="build-and-manage-steps"></a>

Pipelines은 여러 단계로 구성되어 있습니다. 이 단계는 파이프라인이 수행하는 작업과 속성을 사용하여 단계 간의 관계를 정의합니다. 다음 페이지에서는 단계 유형, 속성 및 이들 간의 관계를 설명합니다.

**Topics**
+ [단계 추가](build-and-manage-steps-types.md)
+ [통합 추가](build-and-manage-steps-integration.md)
+ [단계 속성](#build-and-manage-properties)
+ [단계 병렬화](#build-and-manage-parallelism)
+ [단계 간 데이터 종속성](#build-and-manage-data-dependency)
+ [단계 간 사용자 지정 종속성](#build-and-manage-custom-dependency)
+ [단계의 사용자 지정 이미지](#build-and-manage-images)

## 단계 속성
<a name="build-and-manage-properties"></a>

`properties` 속성을 사용하여 파이프라인의 단계 간에 데이터 종속성을 추가합니다. Pipelines은 이러한 데이터 종속성을 사용하여 파이프라인 정의에서 DAG를 구성합니다. 이러한 속성은 자리 표시자 값으로 참조될 수 있으며 런타임에 확인됩니다.

Pipelines 단계의 `properties` 속성은 해당 SageMaker AI 작업 유형에 대한 `Describe` 직접 호출에서 반환된 객체와 일치합니다. 각 작업 유형에 대해 `Describe`호출은 다음과 같은 응답 객체를 반환합니다.
+ `ProcessingStep` – [DescribeProcessingJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeProcessingJob.html)
+ `TrainingStep` – [DescribeTrainingJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeTrainingJob.html)
+ `TransformStep` – [DescribeTransformJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeTransformJob.html)

데이터 종속성 생성 중에 각 단계 유형에 대해 참조할 수 있는 속성을 확인하려면 [Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable)의 [데이터 종속성 - 속성 참조](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#data-dependency-property-reference)를 참조하세요.**

## 단계 병렬화
<a name="build-and-manage-parallelism"></a>

단계가 다른 단계에 종속되지 않는 경우 파이프라인 실행 즉시 실행됩니다. 하지만 너무 많은 파이프라인 단계를 병렬로 실행하면 가용 리소스가 빠르게 고갈될 수 있습니다. `ParallelismConfiguration`을 사용하여 파이프라인 실행의 동시 단계 수를 제어할 수 있습니다.

다음 예제에서는 `ParallelismConfiguration`을 사용하여 동시 단계 제한을 5로 설정합니다.

```
pipeline.create(
    parallelism_config=ParallelismConfiguration(5),
)
```

## 단계 간 데이터 종속성
<a name="build-and-manage-data-dependency"></a>

단계 간 데이터 관계를 지정하여 DAG의 구조를 정의합니다. 단계 간에 데이터 종속성을 만들려면 한 단계의 속성을 파이프라인의 다른 단계에 입력으로 전달합니다. 입력을 받는 단계는 입력을 제공하는 단계가 실행을 완료할 때까지 시작되지 않습니다.

데이터 종속성은 다음 형식의 JSONPath 표기법을 사용합니다. 이 형식은 JSON 속성 파일을 통과합니다. 즉, 파일에서 원하는 중첩 속성에 도달하는 데 필요한 만큼 {{<property>}} 인스턴스를 추가할 수 있습니다. JSONPath 표기법에 대한 자세한 내용은 [JSONPath 리포지토리](https://github.com/json-path/JsonPath)를 참조하세요.

```
{{<step_name>}}.properties.{{<property>}}.{{<property>}}
```

다음은 처리 단계의 `ProcessingOutputConfig`속성을 사용하여 Amazon S3 버킷을 지정하는 방법을 보여줍니다.

```
step_process.properties.ProcessingOutputConfig.Outputs["train_data"].S3Output.S3Uri
```

데이터 종속성을 생성하려면 다음과 같이 버킷을 훈련 단계로 전달하세요.

```
from sagemaker.workflow.pipeline_context import PipelineSession

sklearn_train = SKLearn(..., sagemaker_session=PipelineSession())

step_train = TrainingStep(
    name="CensusTrain",
    step_args=sklearn_train.fit(inputs=TrainingInput(
        s3_data=step_process.properties.ProcessingOutputConfig.Outputs[
            "train_data"].S3Output.S3Uri
    ))
)
```

데이터 종속성 생성 중에 각 단계 유형에 대해 참조할 수 있는 속성을 확인하려면 [Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable)의 [데이터 종속성 - 속성 참조](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#data-dependency-property-reference)를 참조하세요.**

## 단계 간 사용자 지정 종속성
<a name="build-and-manage-custom-dependency"></a>

데이터 종속성을 지정하면 Pipelines은 단계 간의 데이터 연결을 제공합니다. 또는 Pipelines을 직접 사용하지 않고도 한 단계에서 이전 단계의 데이터에 접근할 수 있습니다. 이 경우 다른 단계 실행이 완료될 때까지 단계를 시작하지 않도록 Pipelines에 알리는 사용자 지정 종속성을 만들 수 있습니다. 단계의 `DependsOn`속성을 지정하여 사용자 지정 종속성을 생성합니다.

예를 들어, 다음은 `A`단계와 `B`단계가 모두 실행된 후에만 시작되는 `C`단계를 정의합니다.

```
{
  'Steps': [
    {'Name':'A', ...},
    {'Name':'B', ...},
    {'Name':'C', 'DependsOn': ['A', 'B']}
  ]
}
```

종속 항목이 순환 종속성을 만드는 경우 Pipelines에서 검증 예외가 발생합니다.

다음 예제는 처리 단계 실행이 끝난 후 시작되는 훈련 단계를 생성합니다.

```
processing_step = ProcessingStep(...)
training_step = TrainingStep(...)

training_step.add_depends_on([processing_step])
```

다음 예제에서는 서로 다른 두 처리 단계의 실행이 완료될 때까지 시작되지 않는 훈련 단계를 만듭니다.

```
processing_step_1 = ProcessingStep(...)
processing_step_2 = ProcessingStep(...)

training_step = TrainingStep(...)

training_step.add_depends_on([processing_step_1, processing_step_2])
```

다음은 사용자 지정 종속성을 생성하는 다른 방법을 제공합니다.

```
training_step.add_depends_on([processing_step_1])
training_step.add_depends_on([processing_step_2])
```

다음 예제에서는 한 처리 단계에서 입력을 받고 다른 처리 단계가 실행을 마칠 때까지 기다리는 훈련 단계를 만듭니다.

```
processing_step_1 = ProcessingStep(...)
processing_step_2 = ProcessingStep(...)

training_step = TrainingStep(
    ...,
    inputs=TrainingInput(
        s3_data=processing_step_1.properties.ProcessingOutputConfig.Outputs[
            "train_data"
        ].S3Output.S3Uri
    )

training_step.add_depends_on([processing_step_2])
```

다음 예제에서는 단계의 사용자 지정 종속성에 대한 문자열 목록을 검색하는 방법을 보여줍니다.

```
custom_dependencies = training_step.depends_on
```

## 단계의 사용자 지정 이미지
<a name="build-and-manage-images"></a>

 파이프라인에서 단계를 생성할 때 사용 가능한 SageMaker AI [딥 러닝 컨테이너 이미지](https://github.com/aws/deep-learning-containers/blob/master/available_images.md)를 모두 사용할 수 있습니다.

파이프라인 단계가 있는 자체 컨테이너를 사용할 수도 있습니다. Studio Classic 내에서 이미지를 만들 수 없으므로 Pipelines에서 이미지를 사용하기 전에 다른 방법을 사용하여 이미지를 만들어야 합니다.

파이프라인 단계를 생성할 때 자체 컨테이너를 사용하려면 예측기 정의에 이미지 URI를 포함합니다. SageMaker AI에서 자체 컨테이너를 사용하는 방법에 대한 자세한 내용은 [Using Docker Containers with SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/docker-containers.html)를 참조하세요.