롤링 배포 - 아마존 SageMaker

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

롤링 배포

엔드포인트를 업데이트할 때 롤링 배포를 지정하여 트래픽을 기존 플릿에서 새 플릿으로 점진적으로 이동할 수 있습니다. 트래픽 이동 단계의 크기를 제어할 수 있을 뿐만 아니라 이전 플릿에서 인스턴스를 종료하기 전에 새 인스턴스에 문제가 있는지 모니터링하는 평가 기간을 지정할 수 있습니다. 롤링 배포를 사용하면 트래픽이 새 플릿으로 이동할 때마다 이전 플릿의 인스턴스가 정리되므로 엔드포인트를 업데이트하는 데 필요한 추가 인스턴스의 양이 줄어듭니다. 이는 수요가 많은 액셀러레이티드 인스턴스에 특히 유용합니다.

롤링 배포는 구성 가능한 배치 크기로 엔드포인트를 업데이트하여 이전 모델 버전 배포를 점차 새 버전으로 대체합니다. 롤링 배포의 트래픽 이동 동작은 블루/그린 배포의 선형 트래픽 이동 모드와 비슷하지만 롤링 배포는 블루/그린 배포에 비해 용량 요구 사항이 줄어드는 이점을 제공합니다. 롤링 배포를 사용하면 한 번에 활성화되는 인스턴스 수가 줄어들고 새 플릿에서 업데이트하려는 인스턴스 수를 더 세밀하게 제어할 수 있습니다. 모델이 크거나 인스턴스가 많은 대규모 엔드포인트가 있는 경우 블루/그린 배포 대신 롤링 배포를 사용하는 것을 고려해야 합니다.

다음 목록은 Amazon의 롤링 디플로이먼트의 주요 기능을 설명합니다. SageMaker

  • 베이킹 기간. 베이킹 기간은 다음 배치 단계로 진행하기 전에 새 플릿을 모니터링하는 데 필요한 정해진 시간입니다. 베이킹 기간 중에 사전 지정된 알람 중 하나라도 트립되면 모든 엔드포인트 트래픽이 이전 플릿으로 롤백됩니다. 베이킹 기간은 트래픽 변화를 영구적으로 적용하기 전에 업데이트에 대한 확신을 심어주는 데 도움이 됩니다.

  • 롤링 배치 크기. 트래픽 이동을 위한 각 배치의 크기 또는 각 일괄 처리에서 업데이트하려는 인스턴스의 수를 세밀하게 제어할 수 있습니다. 이 수치의 범위는 플릿 크기의 5~ 50% 에 달할 수 있습니다. 배치 크기를 인스턴스 수 또는 플릿의 전체 백분율로 지정할 수 있습니다.

  • 자동 롤백입니다. 새 플릿을 모니터링하는 데 SageMaker 사용하는 Amazon CloudWatch 경보를 지정할 수 있습니다. 업데이트된 코드 문제로 인해 경보가 끊어지면 가용성을 유지하기 위해 이전 플릿으로 자동 롤백이 SageMaker 시작되어 위험이 최소화됩니다.

참고

엔드포인트가 제외 페이지에 나열된 기능 중 하나를 사용하는 경우 롤링 배포를 사용할 수 없습니다.

작동 방식

롤링 배포 중에 모든 새 인스턴스를 한 번에 프로비저닝하지 않고도 기존 플릿에서 새 플릿으로 트래픽을 이동할 수 있는 인프라를 SageMaker 제공합니다. SageMaker 다음 단계를 사용하여 트래픽을 이동합니다.

  1. SageMaker 새 플릿에 첫 번째 인스턴스 배치를 프로비저닝합니다.

  2. 트래픽의 일부가 이전 인스턴스에서 새 인스턴스의 첫 번째 배치로 이동합니다.

  3. 베이킹 기간이 지난 후 트립된 Amazon CloudWatch 경보가 없으면 오래된 인스턴스를 일괄 SageMaker 정리합니다.

  4. SageMaker 배포가 완료될 때까지 계속해서 인스턴스를 일괄적으로 프로비저닝, 이동 및 정리합니다.

베이킹 기간 중 하나에 알람이 트립되면 트래픽이 지정된 크기의 배치로 이전 플릿으로 롤백됩니다. 또는 경보가 발생한 경우 트래픽의 100% 를 이전 플릿으로 다시 이동하도록 롤링 배포를 지정할 수 있습니다.

다음 다이어그램은 이전 단계에서 설명한 대로 성공적인 롤링 배포의 진행 상황을 보여줍니다.

롤링 디플로이먼트의 트래픽이 기존 플릿에서 새 플릿으로 성공적으로 이동하는 단계

롤링 배포를 생성하려면 원하는 배포 구성만 지정하면 됩니다. 그런 다음 새 인스턴스 프로비저닝, 기존 인스턴스 종료, 트래픽 이동 등을 자동으로 SageMaker 처리합니다. 기존 UpdateEndpoint및 및 명령을 통해 배포를 생성하고 관리할 수 있습니다. CreateEndpoint SageMaker API AWS Command Line Interface

사전 조건

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

또한 제외 페이지를 검토하여 엔드포인트가 롤링 배포의 요구 사항을 충족하는지 확인하세요.

롤링 배치 크기를 결정하세요.

엔드포인트를 업데이트하기 전에 트래픽을 새 플릿으로 점진적으로 전환하는 데 사용할 배치 크기를 결정하세요.

롤링 배포의 경우 플릿 용량의 5~ 50% 에 해당하는 배치 크기를 지정할 수 있습니다. 배치 크기를 크게 선택하면 배포가 더 빨리 완료됩니다. 하지만 업데이트하는 동안에는 엔드포인트에 더 많은 용량이 필요하므로 대략 배치 크기 오버헤드가 발생한다는 점을 염두에 두세요. 더 작은 배치 크기를 선택하면 배포 시간이 더 오래 걸리지만 배포 중에 사용하는 용량이 줄어듭니다.

롤링 배포 배포 구성

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

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

다음 예제는 Boto3 클라이언트의 update_endpoint 메서드를 사용하여 롤링 배포로 엔드포인트를 업데이트하는 방법을 보여줍니다. SageMaker

롤링 배포를 구성하려면 다음 예제와 필드를 사용하세요.

  • EndpointName의 경우 업데이트할 기존 엔드포인트의 이름을 사용합니다.

  • EndpointConfigName에는 사용할 엔드포인트 구성 이름을 사용합니다.

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

  • DeploymentConfig 아래에서 RollingUpdatePolicy 객체에 대해 다음 필드를 지정합니다.

    • MaximumExecutionTimeoutInSeconds - 전체 배포에 대한 시간 제한. 이 제한을 초과하면 타임아웃이 발생합니다. 이 필드에 지정할 수 있는 최대값은 28800초, 즉 8시간입니다.

    • WaitIntervalInSeconds— 베이킹 기간의 길이로, 새 플릿의 각 배치에 대한 알람을 SageMaker 모니터링하는 기간.

    • MaximumBatchSize - 사용하려는 배치의 Value(인스턴스 수 또는 플릿의 전체 비율)과 Type 또는 각 배치의 크기를 지정합니다.

    • RollbackMaximumBatchSize - 이 객체를 사용하여 경보가 발생한 경우에 대비한 롤백 전략을 지정합니다. 사용하려는 배치의 Type(인스턴스 수 또는 플릿의 전체 비율)과 Value 또는 각 배치의 크기를 지정합니다. 이러한 필드를 지정하지 않거나 값을 엔드포인트의 100% 로 설정하는 경우 블루/그린 롤백 전략을 SageMaker 사용하여 알람이 트립되면 모든 트래픽을 이전 플릿으로 롤백합니다.

import boto3 client = boto3.client("sagemaker") response = client.update_endpoint( EndpointName="<your-endpoint-name>", EndpointConfigName="<your-config-name>", DeploymentConfig={ "AutoRollbackConfiguration": { "Alarms": [ { "AlarmName": "<your-cw-alarm>" }, ] }, "RollingUpdatePolicy": { "MaximumExecutionTimeoutInSeconds": number, "WaitIntervalInSeconds": number, "MaximumBatchSize": { "Type": "INSTANCE_COUNT" | "CAPACITY_PERCENTAGE" (default), "Value": number }, "RollbackMaximumBatchSize": { "Type": "INSTANCE_COUNT" | "CAPACITY_PERCENTAGE" (default), "Value": number }, } } )

엔드포인트를 업데이트한 후에는 롤링 배포 상태를 확인하고 엔드포인트의 상태를 확인하는 것이 좋습니다. SageMaker 콘솔에서 엔드포인트의 상태를 검토하거나 를 사용하여 엔드포인트의 상태를 검토할 수 있습니다. DescribeEndpointAPI

에서 반환한 VariantStatus 객체의 Status 필드에는 엔드포인트의 현재 배포 또는 운영 상태가 표시됩니다. DescribeEndpoint API 가능한 상태와 그 의미에 대한 자세한 내용은 을 참조하십시오 ProductionVariantStatus.

롤링 배포를 시도했는데 엔드포인트의 상태가 UpdateRollbackFailed라면 다음 섹션의 문제 해결 도움말을 참조하세요.

장애 처리

롤링 배포가 실패하고 자동 롤백도 실패하는 경우 엔드포인트는 UpdateRollbackFailed의 상태 그대로 유지될 수 있습니다. 이 상태는 서로 다른 엔드포인트 구성이 엔드포인트 뒤의 인스턴스에 배포되고 엔드포인트는 기존 엔드포인트 구성과 새 엔드포인트 구성이 혼합된 상태로 서비스된다는 것을 의미합니다.

를 다시 호출하여 엔드포인트를 정상 상태로 되돌릴 수 있습니다. UpdateEndpointAPI 원하는 엔드포인트 구성 및 배포 구성 (롤링 배포, 블루/그린 배포 또는 둘 다 선택 안 함) 을 지정하여 엔드포인트를 업데이트하세요.

DescribeEndpointAPI호출하여 엔드포인트의 상태를 다시 확인할 수 있으며, 이는 VariantStatus 객체에 Status 필드로 반환됩니다. 업데이트가 성공하면 엔드포인트의 StatusInService로 돌아갑니다.