

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

# 파이프라인 캐싱 단계
<a name="pipelines-caching"></a>

Amazon SageMaker Pipelines에서 단계 캐싱을 사용하여 파이프라인을 다시 실행할 때 시간과 리소스를 절약할 수 있습니다. 단계 캐싱은 단계의 구성과 입력이 동일할 때 (재컴퓨팅 대신) 이전에 성공한 단계 실행의 출력을 재사용합니다. 이를 통해 동일한 파라미터로 파이프라인 재실행 전반에서 일관된 결과를 얻을 수 있습니다. 다음 주제에서는 파이프라인에 대한 단계 캐싱을 구성하고 활성화하는 방법을 보여줍니다.

단계 서명 캐싱을 사용하는 경우 Pipelines은 특정 속성에 대해 값이 동일한 현재 파이프라인 단계의 이전 실행을 찾으려고 합니다. 발견된 경우 Pipelines은 단계를 다시 계산하는 대신 이전 실행의 출력을 전파합니다. 검사된 속성은 단계 유형별로 다르며 [파이프라인 단계 유형별 기본 캐시 키 속성](pipelines-default-keys.md)에 나열되어 있습니다.

단계 캐싱은 기본적으로 해제되어 있으므로 반드시 옵트인해야 합니다. 단계 캐싱을 활성화할 때는 제한 시간도 정의해야 합니다. 이 제한 시간은 이전 실행이 재사용 대상으로 남아 있을 수 있는 기간을 정의합니다.

단계 캐싱은 성공한 실행만 고려하며 실패한 실행은 재사용하지 않습니다. 제한 시간 내에 여러 번 성공적으로 실행한 경우 Pipelines은 가장 최근에 성공한 실행의 결과를 사용합니다. 제한 시간 내에 일치하는 성공 실행이 없는 경우 Pipelines은 단계를 재실행합니다. 실행기가 조건을 충족하지만 아직 진행 중인 이전 실행을 찾은 경우 두 단계 모두 계속 실행되고 성공하면 캐시를 업데이트합니다.

단계 캐싱은 개별 파이프라인에서만 범위가 지정되므로 단계 서명이 일치하더라도 다른 파이프라인의 단계를 재사용할 수 없습니다.

단계 캐싱은 다음 단계 유형에 사용할 수 있습니다.
+ [처리](build-and-manage-steps-types.md#step-type-processing)
+ [학습](build-and-manage-steps-types.md#step-type-training)
+ [튜닝](build-and-manage-steps-types.md#step-type-tuning)
+ [AutoML](build-and-manage-steps-types.md#step-type-automl)
+ [변환](build-and-manage-steps-types.md#step-type-transform)
+ [`ClarifyCheck`](build-and-manage-steps-types.md#step-type-clarify-check)
+ [`QualityCheck`](build-and-manage-steps-types.md#step-type-quality-check)
+ [EMR](build-and-manage-steps-types.md#step-type-emr)

**Topics**
+ [단계 캐싱을 활성화합니다.](pipelines-caching-enabling.md)
+ [단계 캐싱 비활성화](pipelines-caching-disabling.md)
+ [파이프라인 단계 유형별 기본 캐시 키 속성](pipelines-default-keys.md)
+ [캐시된 데이터 액세스 제어](pipelines-access-control.md)

# 단계 캐싱을 활성화합니다.
<a name="pipelines-caching-enabling"></a>

단계 캐싱을 켜려면 단계 정의에 `CacheConfig` 속성을 추가해야 합니다. `CacheConfig` 속성은 파이프라인 정의 파일에서 다음 형식을 사용합니다.

```
{
    "CacheConfig": {
        "Enabled": false,
        "ExpireAfter": "<time>"
    }
}
```

이 `Enabled`필드는 특정 단계에서 캐싱이 켜져 있는지 여부를 나타냅니다. 필드를 `true`로 설정하면 SageMaker AI가 동일한 속성을 가진 이전 단계 실행을 찾으려고 시도하도록 지시할 수 있습니다. 또는 필드를 `false`로 설정하여 파이프라인이 실행될 때마다 SageMaker AI가 단계를 실행하도록 지시할 수 있습니다. `ExpireAfter`는 제한 기간을 정의하는 [ISO 8601 기간](https://en.wikipedia.org/wiki/ISO_8601#Durations) 형식의 문자열입니다. `ExpireAfter` 기간은 년, 월, 주, 일, 시간 또는 분 값일 수 있습니다. 각 값은 숫자 다음에 기간 단위를 나타내는 문자로 구성됩니다. 예제:
+ "30d" = 30일
+ "5y" = 5년
+ "T16m" = 16분
+ "30dT5h" = 30일 5시간.

다음 설명에서는 Amazon SageMaker Python SDK를 사용하여 새 파이프라인 또는 기존 파이프라인에 대한 캐싱을 활성화하는 절차를 설명합니다.

**새 파이프라인 캐싱 활성화**

새 파이프라인의 경우 `enable_caching=True`를 사용하여 `CacheConfig`인스턴스를 초기화하고 이를 파이프라인 단계의 입력으로 제공합니다. 다음 예시에서는 훈련 단계에 1시간의 제한 시간을 두고 캐싱을 활성화합니다.

```
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
)
```

**기존 파이프라인 캐싱 활성화**

사전 정의된 기존 파이프라인의 캐싱을 활성화려면 해당 단계의 `enable_caching`속성을 켜고 `expire_after`를 시간 제한 값으로 설정합니다. 마지막으로 `pipeline.upsert()`또는 `pipeline.update()`를 사용하여 파이프라인을 업데이트합니다. 다시 실행하면 다음 코드 예제가 훈련 단계에 대해 1시간의 제한 시간을 두고 캐싱을 활성화합니다.

```
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()
```

또는 (기존) 파이프라인을 이미 정의한 후 캐시 구성을 업데이트하여 한 번의 연속 코드 실행을 허용합니다. 다음 코드 샘플은 이 방법을 보여줍니다.

```
# 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()
```

Python SDK 파라미터가 캐싱에 미치는 영향에 대한 자세한 코드 예제와 설명은 Amazon SageMaker Python SDK 설명서의 [캐싱 구성](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#caching-configuration)을 참조하세요.

# 단계 캐싱 비활성화
<a name="pipelines-caching-disabling"></a>

단계 유형 [파이프라인 단계 유형별 기본 캐시 키 속성](pipelines-default-keys.md)에 나열되지 않은 속성을 변경해도 파이프라인 단계는 재실행되지 않습니다. 하지만 어쨌든 파이프라인 단계를 다시 실행하기로 결정할 수도 있습니다. 이 경우 단계 캐싱을 비활성화해야 합니다.

단계 캐싱을 비활성화하려면 다음 코드 스니펫과 같이 단계 정의의 `CacheConfig`단계 정의 속성에 있는 `Enabled`속성을 `false`로 설정합니다.

```
{
    "CacheConfig": {
        "Enabled": false,
        "ExpireAfter": "<time>"
    }
}
```

참고로, `Enabled`가 `false`인 경우 `ExpireAfter`속성은 무시됩니다.

Amazon SageMaker Python SDK를 사용하여 파이프라인 단계의 캐싱을 해제하려면 파이프라인 단계의 파이프라인을 정의하고 `enable_caching`속성을 비활성화한 다음 파이프라인을 업데이트하세요.

다시 실행하면 다음 코드 예제가 훈련 단계에 대한 캐싱을 해제합니다.

```
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()
```

또는 파이프라인을 이미 정의한 후 `enable_caching`속성을 비활성화하면 한 번의 연속 코드 실행이 가능합니다. 다음 코드 샘플은 이 방법을 보여줍니다.

```
# 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()
```

Python SDK 파라미터가 캐싱에 미치는 영향에 대한 자세한 코드 예제와 설명은 Amazon SageMaker Python SDK 설명서의 [캐싱 구성](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#caching-configuration)을 참조하세요.

# 파이프라인 단계 유형별 기본 캐시 키 속성
<a name="pipelines-default-keys"></a>

이전 파이프라인 단계를 재사용할지 또는 단계를 다시 실행할지 결정할 때 Pipelines은 특정 속성이 변경되었는지 확인합니다. 속성 세트가 제한 시간 내에 이전의 모든 실행과 다른 경우 단계가 다시 실행됩니다. 이러한 속성에는 입력 아티팩트, 앱 또는 알고리즘 사양, 환경 변수가 포함됩니다. 다음 목록은 각 파이프라인 단계 유형과 변경될 경우 단계 재실행을 시작하는 속성을 보여줍니다. 다음 속성을 생성하는 데 사용되는 Python SDK 파라미터에 대한 자세한 내용은 Amazon SageMaker Python SDK 설명서의 [캐싱 구성](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#caching-configuration)을 참조하세요.

## [처리 단계](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateProcessingJob.html)
<a name="collapsible-caching-section-1"></a>
+ AppSpecification
+ 환경
+ ProcessingInputs. 이 속성에는 사전 처리 스크립트에 대한 정보가 포함되어 있습니다.

  

## [훈련 단계](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html)
<a name="collapsible-caching-section-2"></a>
+ AlgorithmSpecification
+ CheckpointConfig
+ DebugHookConfig
+ DebugRuleConfigurations
+ 환경
+ HyperParameters
+ InputDataConfig. 이 속성에는 훈련 스크립트에 대한 정보가 포함되어 있습니다.

  

## [튜닝 단계](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateHyperParameterTuningJob.html)
<a name="collapsible-caching-section-3"></a>
+ HyperParameterTuningJobConfig
+ TrainingJobDefinition. 이 속성은 여러 하위 속성으로 구성되며, 이로 인해 단계가 다시 실행되지는 않습니다. 재실행이 발생할 수 있는 하위 속성(변경된 경우)은 다음과 같습니다.
  + AlgorithmSpecification
  + HyperParameterRanges
  + InputDataConfig
  + StaticHyperParameters
  + TuningObjective
+ TrainingJobDefinitions

  

## [AutoML 단계](https://docs.aws.amazon.com//sagemaker/latest/APIReference/API_AutoMLJobConfig.html)
<a name="collapsible-caching-section-4"></a>
+ AutoMLJobConfig. 이 속성은 여러 하위 속성으로 구성되며, 이로 인해 단계가 다시 실행되지는 않습니다. 재실행이 발생할 수 있는 하위 속성(변경된 경우)은 다음과 같습니다.
  + CompletionCriteria
  + CandidateGenerationConfig
  + DataSplitConfig
  + Mode
+ AutoMLJobObjective
+ InputDataConfig
+ ProblemType

  

## [변환 단계](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTransformJob.html)
<a name="collapsible-caching-section-5"></a>
+ DataProcessing
+ 환경
+ ModelName
+ TransformInput

  

## [ClarifyCheck 단계](build-and-manage-steps-types.md#step-type-clarify-check)
<a name="collapsible-caching-section-6"></a>
+ ClarifyCheckConfig
+ CheckJobConfig
+ SkipCheck
+ RegisterNewBaseline
+ ModelPackageGroupName
+ SuppliedBaselineConstraints

  

## [QualityCheck 단계](build-and-manage-steps-types.md#step-type-quality-check)
<a name="collapsible-caching-section-7"></a>
+ QualityCheckConfig
+ CheckJobConfig
+ SkipCheck
+ RegisterNewBaseline
+ ModelPackageGroupName
+ SuppliedBaselineConstraints
+ SuppliedBaselineStatistics

  

## [EMR 단계](https://docs.aws.amazon.com/sagemaker/latest/dg/build-and-manage-steps.html#step-type-emr)
<a name="collapsible-caching-section-8"></a>
+ ClusterId
+ StepConfig

  

# 캐시된 데이터 액세스 제어
<a name="pipelines-access-control"></a>

SageMaker AI 파이프라인이 실행되면 파이프라인에서 시작한 SageMaker AI 작업과 관련된 파라미터 및 메타데이터를 캐시하고 후속 실행에서 재사용할 수 있도록 저장합니다. 이 메타데이터는 캐시된 파이프라인 단계 외에도 다양한 소스를 통해 접근할 수 있으며 다음과 같은 유형을 포함합니다.
+ `Describe*Job` 요청
+ CloudWatch Logs
+ CloudWatch Events
+ CloudWatch 지표
+ SageMaker AI 검색

목록에 있는 각 데이터 원본에 대한 접근은 고유한 IAM 권한 세트에 의해 제어된다는 점에 유의하세요. 한 데이터 소스에 대한 특정 역할의 액세스 권한을 제거해도 다른 데이터 소스에 대한 액세스 수준에는 영향을 주지 않습니다. 예를 들어 계정 관리자는 호출자 역할에서 `Describe*Job`요청에 대한 IAM 권한을 제거할 수 있습니다. 호출자는 더 이상 `Describe*Job`요청을 할 수 없지만, 파이프라인을 실행할 권한이 있으면 캐시된 단계가 있는 파이프라인 실행에서 메타데이터를 검색할 수 있습니다. 계정 관리자가 특정 SageMaker AI 작업의 메타데이터에 대한 접근 권한을 완전히 제거하려는 경우 데이터에 대한 액세스를 제공하는 관련 서비스 각각에 대한 권한을 제거해야 합니다.