캐너리 트래픽 시프팅 - 아마존 SageMaker

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

캐너리 트래픽 시프팅

캐너리 트래픽 시프팅을 사용하면 기존 플릿이 나머지 트래픽을 처리하는 동안 새 플릿에서 엔드포인트 트래픽의 일부를 테스트할 수 있습니다. 이 테스트 단계는 모든 트래픽을 새 플릿으로 옮기기 전에 새 플릿의 기능을 검증하는 안전 가드레일입니다. 블루/그린 배포의 이점은 여전히 남아 있으며, 추가된 캐너리 기능을 통해 새 (그린) 플릿이 트래픽을 100% 처리하기 전에 추론 기능을 제공할 수 있는지 확인할 수 있습니다.

그린 플릿에서 트래픽을 수신하기 위해 켜지는 부분을 캐너리라고 하며, 이 캐너리의 크기를 선택할 수 있습니다. 참고로 캐너리의 크기는 새 플릿 용량의 50% 이하여야 합니다. 베이킹 기간이 끝나고 사전 지정된 Amazon CloudWatch 알람이 발생하지 않으면 나머지 트래픽은 기존 (파란색) 플릿에서 녹색 플릿으로 이동합니다. 업데이트된 모델과 관련된 모든 문제는 캐너리에만 영향을 미치므로 캐너리 트래픽 시프팅은 배포 중에 더 안전하게 배포할 수 있습니다.

다음 다이어그램은 캐너리 트래픽 시프팅이 블루 플릿과 그린 플릿 간의 트래픽 분산을 관리하는 방법을 보여줍니다.

이전 플릿에서 새 플릿으로 시프팅되는 2단계 캐너리 트래픽의 성공적인 시프팅

그린 플릿을 SageMaker 프로비저닝한 후에는 들어오는 트래픽의 일부 (예: 25%) 를 카나리아로 SageMaker 라우팅합니다. 그런 다음 베이킹 기간이 시작되며, 이 기간 동안 CloudWatch 알람이 그린 플릿의 성능을 모니터링합니다. 이 기간 동안에는 블루 플릿과 그린 플릿이 모두 부분적으로 활성화되어 트래픽을 수신합니다. 베이킹 기간 중에 경보가 하나라도 끊기면 롤백이 SageMaker 시작되고 모든 트래픽이 파란색 플릿으로 돌아갑니다. 알람이 하나도 발생하지 않으면 모든 트래픽이 그린 플릿으로 시프팅하고 최종 베이킹 기간으로 들어갑니다. 경보가 울리지 않고 최종 베이킹 기간이 끝나면 녹색 플릿이 모든 트래픽을 처리하고 블루 플릿을 종료합니다. SageMaker

필수 조건

카나리아 트래픽 시프팅을 사용하여 배포를 설정하기 전에 Amazon CloudWatch 경보를 생성하여 엔드포인트에서 지표를 모니터링해야 합니다. 베이킹 기간 중에 경보가 활성화되어 있고 알람이 하나라도 발생하면 모든 엔드포인트 트래픽이 블루 플릿으로 롤백됩니다. 엔드포인트에서 CloudWatch 경보를 설정하는 방법을 알아보려면 사전 요구 사항 페이지를 참조하십시오. 자동 롤백 구성 및 모니터링 CloudWatch 경보에 대한 자세한 내용은 Amazon 사용 CloudWatch 설명서의 Amazon CloudWatch 경보 사용을 참조하십시오.

캐너리 트래픽 시프팅 구성

배포할 준비가 되고 엔드포인트에 대한 Amazon CloudWatch 경보를 설정한 후에는 Amazon SageMaker UpdateEndpointAPI 또는 에서 update-endpoint 명령을 사용하여 AWS CLI 배포를 시작할 수 있습니다.

엔드포인트를 업데이트하는 방법(API)

다음 UpdateEndpointAPI 예시는 카나리아 트래픽 시프팅으로 엔드포인트를 업데이트하는 방법을 보여줍니다.

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에는 사용할 엔드포인트 구성 이름을 사용합니다.

  • DeploymentConfigBlueGreenUpdatePolicyTrafficRoutingConfiguration에서 Type 파라미터를 CANARY로 설정합니다. 이렇게 지정하면 배포가 캐너리리 트래픽 시프팅을 사용하게 됩니다.

  • CanarySize 필드에서 및 TypeValue 파라미터를 수정하여 캐너리의 크기를 변경할 수 있습니다. Type에는 CAPACITY_PERCENT를 사용합니다. 이것은 그린 플릿 중에서 캐너리로 사용하고 싶은 비율을 의미합니다. 그런 다음에는 Value30으로 설정합니다. 이 예제에서는 그린 플릿 용량의 30%를 캐너리로 사용합니다. 참고로 캐너리의 크기는 그린 플릿 용량의 50% 이하여야 합니다.

  • WaitIntervalInSeconds에는 600을 사용합니다. 파라미터는 각 간격 이동 사이에 지정된 시간 (초) 동안 SageMaker 대기하도록 지시합니다. 이 간격은 캐너리 베이킹 기간의 지속 시간입니다. 위 예제에서는 카나리아 이동 후 10분간 SageMaker 기다린 후 두 번째이자 마지막 트래픽 이동을 완료합니다.

  • TerminationWaitInSeconds에는 600을 사용합니다. 이 파라미터는 그린 플릿이 완전히 활성화된 후 지정된 시간 (초) SageMaker 까지 기다린 후 블루 플릿의 인스턴스를 종료하도록 지시합니다. 이 예시에서는 최종 베이킹 기간이 지난 후 10분간 SageMaker 기다린 후 블루 플릿을 종료합니다.

  • MaximumExecutionTimeoutInSeconds에는 1800을 사용합니다. 이 파라미터는 시간이 초과되기 전에 배포를 실행할 수 있는 최대 시간을 설정합니다. 위 예제에서는 배포를 완료하는 데 걸리는 시간이 30분으로 제한되어 있습니다.

  • AutoRollbackConfiguration에서는 Alarms 필드 내에서 이름별로 CloudWatch 알람을 추가할 수 있습니다. 사용하려는 각 알람에 대해 AlarmName: <your-cw-alarm> 항목을 하나씩 생성합니다.

기존의 블루/그린 업데이트 정책(API)으로 엔드포인트를 업데이트하는 방법

CreateEndpointAPI를 사용하여 엔드포인트를 생성할 때 향후 엔드포인트 업데이트에 재사용할 배포 구성을 선택적으로 지정할 수 있습니다. 이전 UpdateEndpoint API 예제와 동일한 DeploymentConfig 옵션을 사용할 수 있습니다. CreateEndpoint API 동작에는 변경 사항이 없습니다. 배포 구성을 지정해도 엔드포인트에서 블루/그린 업데이트가 자동으로 수행되지는 않습니다.

이전 배포 구성을 사용하는 옵션은 UpdateEndpointAPI를 사용하여 엔드포인트를 업데이트할 때 발생합니다. 엔드포인트를 업데이트할 때 RetainDeploymentConfig 옵션을 사용하여 엔드포인트를 생성할 때 지정한 배포 구성을 유지할 수 있습니다.

UpdateEndpointAPI를 호출할 때는 원래 엔드포인트 구성의 DeploymentConfig 옵션을 RetainDeploymentConfig True 유지하도록 로 설정하십시오.

response = client.update_endpoint( EndpointName="<your-endpoint-name>", EndpointConfigName="<your-config-name>", RetainDeploymentConfig=True )

엔드포인트를 업데이트하는 방법(CLI)

를 사용하는 경우 다음 예제는 update-endpoint 명령을 사용하여 블루/그린 카나리아 배포를 시작하는 방법을 보여줍니다. AWS CLI

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에는 사용할 엔드포인트 구성 이름을 사용합니다.

  • 의 경우 JSON 객체를 사용하십시오. deployment-config BlueGreenUpdatePolicy

참고

JSON 객체를 파일로 저장하려면 사용 안내서의 AWS CLI 스켈레톤 및 입력 매개변수 생성을 참조하십시오.AWS CLI