기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
canary 트래픽 이동 사용
캐너리 트래픽 시프팅을 사용하면 기존 플릿이 나머지 트래픽을 처리하는 동안 새 플릿에서 엔드포인트 트래픽의 일부를 테스트할 수 있습니다. 이 테스트 단계는 모든 트래픽을 새 플릿으로 옮기기 전에 새 플릿의 기능을 검증하는 안전 가드레일입니다. 블루/그린 배포의 이점은 여전히 남아 있으며, 추가된 캐너리 기능을 통해 새 (그린) 플릿이 트래픽을 100% 처리하기 전에 추론 기능을 제공할 수 있는지 확인할 수 있습니다.
그린 플릿에서 트래픽을 수신하기 위해 켜지는 부분을 캐너리라고 하며, 이 캐너리의 크기를 선택할 수 있습니다. 참고로 캐너리의 크기는 새 플릿 용량의 50% 이하여야 합니다. 베이킹 기간이 종료되고 사전 지정된 Amazon CloudWatch 경보 트립이 없으면 나머지 트래픽은 이전(파란색) 플릿에서 녹색 플릿으로 전환됩니다. 업데이트된 모델과 관련된 모든 문제는 캐너리에만 영향을 미치므로 캐너리 트래픽 시프팅은 배포 중에 더 안전하게 배포할 수 있습니다.
다음 다이어그램은 캐너리 트래픽 시프팅이 블루 플릿과 그린 플릿 간의 트래픽 분산을 관리하는 방법을 보여줍니다.
일단 그린 플릿을 SageMaker 프로비저닝하면 들어오는 트래픽의 일부(예: 25%)를 canary로 SageMaker 라우팅합니다. 그런 다음 베이킹 기간이 시작되어 CloudWatch 경보가 그린 플릿의 성능을 모니터링합니다. 이 기간 동안에는 블루 플릿과 그린 플릿이 모두 부분적으로 활성화되어 트래픽을 수신합니다. 베이킹 기간 동안 경보가 트립되면 는 롤백을 SageMaker 시작하고 모든 트래픽은 파란색 플릿으로 돌아갑니다. 알람이 하나도 발생하지 않으면 모든 트래픽이 그린 플릿으로 시프팅하고 최종 베이킹 기간으로 들어갑니다. 경보를 트립하지 않고 최종 베이킹 기간이 완료되면 녹색 플릿은 모든 트래픽을 처리하고 파란색 플릿을 SageMaker 종료합니다.
사전 조건
canary 트래픽 이동을 사용하여 배포를 설정하기 전에 Amazon CloudWatch 경보를 생성하여 엔드포인트의 지표를 모니터링해야 합니다. 베이킹 기간 중에 경보가 활성화되어 있고 알람이 하나라도 발생하면 모든 엔드포인트 트래픽이 블루 플릿으로 롤백됩니다. 엔드포인트에서 경보를 설정하는 CloudWatch 방법을 알아보려면 사전 조건 페이지를 참조하세요자동 롤백 구성 및 모니터링. CloudWatch 경보에 대한 자세한 내용은 Amazon 사용 설명서의 Amazon CloudWatch 경보 사용을 참조하세요. CloudWatch
캐너리 트래픽 시프팅 구성
배포 준비가 되고 엔드포인트에 대한 Amazon CloudWatch 경보를 설정한 후에는 의 Amazon SageMaker UpdateEndpoint API 또는 update-endpoint 명령을 사용하여 배포를 AWS CLI 시작할 수 있습니다.
엔드포인트를 업데이트하는 방법(API)
다음 예제는 canary 트래픽 이동을 사용하여 엔드포인트를 업데이트하는 방법을 UpdateEndpoint API 보여줍니다.
import boto3 client = boto3.client("sagemaker") response = client.update_endpoint( EndpointName="
<your-endpoint-name>
", EndpointConfigName="<your-config-name>
", DeploymentConfig={ "BlueGreenUpdatePolicy": { "TrafficRoutingConfiguration": { "Type": "CANARY", "CanarySize": { "Type": "CAPACITY_PERCENT", "Value": 30 }, "WaitIntervalInSeconds": 600 }, "TerminationWaitInSeconds": 600, "MaximumExecutionTimeoutInSeconds": 1800 }, "AutoRollbackConfiguration": { "Alarms": [ { "AlarmName": "<your-cw-alarm>
" } ] } } )
캐너리 트래픽 시프팅 옵션을 구성하려면 다음을 수행합니다.
EndpointName
의 경우 업데이트할 기존 엔드포인트의 이름을 사용합니다.EndpointConfigName
에는 사용할 엔드포인트 구성 이름을 사용합니다.DeploymentConfig
및BlueGreenUpdatePolicy
의TrafficRoutingConfiguration
에서Type
파라미터를CANARY
로 설정합니다. 이렇게 지정하면 배포가 캐너리리 트래픽 시프팅을 사용하게 됩니다.CanarySize
필드에서 및Type
및Value
파라미터를 수정하여 캐너리의 크기를 변경할 수 있습니다.Type
에는CAPACITY_PERCENT
를 사용합니다. 이것은 그린 플릿 중에서 캐너리로 사용하고 싶은 비율을 의미합니다. 그런 다음에는Value
를30
으로 설정합니다. 이 예제에서는 그린 플릿 용량의 30%를 캐너리로 사용합니다. 참고로 캐너리의 크기는 그린 플릿 용량의 50% 이하여야 합니다.WaitIntervalInSeconds
에는600
을 사용합니다. 파라미터는 각 간격 전환 사이에 지정된 시간(초) 동안 기다리 SageMaker 도록 지시합니다. 이 간격은 캐너리 베이킹 기간의 지속 시간입니다. 앞의 예에서 는 canary 이동 후 10분 동안 기 SageMaker 다린 다음 두 번째 및 최종 트래픽 이동을 완료합니다.TerminationWaitInSeconds
에는600
을 사용합니다. 이 파라미터는 그린 플릿이 완전히 활성화된 후 지정된 시간(초) 동안 기다렸다가 블루 플릿의 인스턴스를 종료 SageMaker 하도록 지시합니다. 이 예제에서는 블루 플릿을 종료하기 전에 최종 베이킹 기간 후 10분 동안 SageMaker 기다립니다.MaximumExecutionTimeoutInSeconds
에는1800
을 사용합니다. 이 파라미터는 시간이 초과되기 전에 배포를 실행할 수 있는 최대 시간을 설정합니다. 위 예제에서는 배포를 완료하는 데 걸리는 시간이 30분으로 제한되어 있습니다.의
Alarms
필드AutoRollbackConfiguration
내에서 이름별로 CloudWatch 경보를 추가할 수 있습니다. 사용하려는 각 알람에 대해AlarmName:
항목을 하나씩 생성합니다.<your-cw-alarm>
기존 블루/그린 업데이트 정책으로 엔드포인트를 업데이트하는 방법(API)
CreateEndpoint API 를 사용하여 엔드포인트를 생성할 때 향후 엔드포인트 업데이트에 재사용할 배포 구성을 선택적으로 지정할 수 있습니다. 이전 UpdateEndpoint API 예제와 동일한 DeploymentConfig
옵션을 사용할 수 있습니다. 동작에는 CreateEndpoint API 변경 사항이 없습니다. 배포 구성을 지정해도 엔드포인트에서 블루/그린 업데이트가 자동으로 수행되지는 않습니다.
이전 배포 구성을 사용하는 옵션은 를 사용하여 엔드포인트UpdateEndpointAPI를 업데이트할 때 발생합니다. 엔드포인트를 업데이트할 때 RetainDeploymentConfig
옵션을 사용하여 엔드포인트를 생성할 때 지정한 배포 구성을 유지할 수 있습니다.
를 호출할 때 를 RetainDeploymentConfig
로 UpdateEndpoint API설정True
하여 원래 엔드포인트 구성의 DeploymentConfig
옵션을 유지합니다.
response = client.update_endpoint( EndpointName="
<your-endpoint-name>
", EndpointConfigName="<your-config-name>
", RetainDeploymentConfig=True )
엔드포인트를 업데이트하는 방법(CLI)
를 사용하는 경우 AWS CLI다음 예제에서는 update-endpoint 명령을 사용하여 블루/그린 canary 배포를 시작하는 방법을 보여줍니다.
update-endpoint --endpoint-name
<your-endpoint-name>
--endpoint-config-name<your-config-name>
--deployment-config '"BlueGreenUpdatePolicy": {"TrafficRoutingConfiguration": {"Type": "CANARY", "CanarySize": {"Type": "CAPACITY_PERCENT", "Value": 30}, "WaitIntervalInSeconds": 600}, "TerminationWaitInSeconds": 600, "MaximumExecutionTimeoutInSeconds": 1800}, "AutoRollbackConfiguration": {"Alarms": [{"AlarmName": "<your-alarm>
"}]}'
캐너리 트래픽 시프팅 옵션을 구성하려면 다음을 수행합니다.
endpoint-name
에는 업데이트할 엔드포인트의 이름을 사용합니다.endpoint-config-name
에는 사용할 엔드포인트 구성 이름을 사용합니다.의 경우 BlueGreenUpdatePolicy JSON 객체를
deployment-config
사용합니다.
참고
JSON 객체를 파일에 저장하려면 AWS CLI 사용 설명서의 AWS CLI 스켈레톤 및 입력 파라미터 생성을 참조하세요.