Amazon SageMaker 엔드포인트의 지연 시간 문제를 해결하려면 어떻게 해야 하나요?
최종 업데이트 날짜: 2022년 10월 14일
Amazon SageMaker 엔드포인트를 호출할 때 지연 시간이 길어집니다.
간략한 설명
Amazon CloudWatch를 사용하여 단일 모델을 제공하는 SageMaker 엔드포인트의 지연 시간 지표인 ModelLatency 및 OverheadLatency를 모니터링할 수 있습니다.
- ModelLatency는 SageMaker에서 확인할 때 모델이 추론 요청에 응답하는 데 걸리는 시간입니다. 이 기간에는 요청을 보내고 응답을 가져오는 데 걸리는 로컬 통신 시간과 모델 컨테이너 내에서 추론을 완료하는 데 걸리는 시간이 포함됩니다.
- OverheadLatency는 SageMaker 오버헤드가 있는 호출 요청에 응답하는 데 걸리는 시간입니다. 이는 SageMaker가 요청을 수신한 시점부터 응답을 반환할 때까지의 기간에서 ModelLatency를 뺀 값입니다.
SageMaker 다중 모델 엔드포인트를 사용하는 경우 CloudWatch에서 다음과 같은 추가 지표를 사용할 수 있습니다.
- ModelLoadingWaitTime은 추론을 수행하기 전에 대상 모델이 다운로드되거나 로드될 때까지 호출 요청이 대기하는 시간입니다.
- ModelDownloadingTime은 Amazon Simple Storage Service(S3)에서 모델을 다운로드하는 데 걸리는 시간입니다.
- ModelLoadingTime은 컨테이너에서 모델을 로드하는 데 걸리는 시간입니다.
- ModelCacheHit은 모델이 이미 로드된 엔드포인트로 전송되는 InvokeEndpoint 요청의 수입니다.
다중 모델 엔드포인트는 수명 주기 동안 모델을 로드 및 언로드합니다. CloudWatch에 게시된 LoadedModelCount 지표를 사용하여 엔드포인트에 대해 로드된 모델의 수를 확인할 수 있습니다.
해결 방법
높은 ModelLatency
ModelLatency는 SageMaker가 모델 컨테이너에 호출 요청을 보낸 다음 결과를 수신하는 데 걸리는 시간입니다. 즉, 다음과 같은 방법으로 이 지연 시간을 줄일 수 있습니다.
- SageMaker 엔드포인트 외부에서 모델을 벤치마크하여 성능을 테스트합니다.
- 해당 모델이 SageMaker Neo에서 지원되는 경우 해당 모델을 컴파일할 수 있습니다. SageMaker Neo는 1/10의 메모리를 사용하여, 정확도 손실 없이 최대 2배 빠른 성능으로 실행되도록 모델을 최적화합니다.
- AWS Inferentia에서 지원하는 모델일 경우, AWS GPU 기반 인스턴스에 비해 최대 3배 더 높은 처리량과 최대 45% 더 낮은 추론당 비용을 제공하는 Inferentia에 맞게 모델을 컴파일할 수 있습니다.
- CPU 인스턴스를 사용하고 모델이 GPU 가속을 지원하는 경우 GPU 인스턴스 또는 Amazon Elastic Inference를 사용하여 인스턴스에 GPU 가속을 추가할 수 있습니다.
참고: 추론 코드는 코드가 추론을 처리하는 방식에 따라 모델 지연 시간에 영향을 줄 수 있습니다. 코드가 지연되면 지연 시간이 늘어납니다. - 엔드포인트가 과도하게 사용되는 경우 모델 지연 시간이 길어질 수 있습니다. 엔드포인트에 Auto Scaling을 추가하여 인스턴스에 사용할 수 있는 인스턴스 수를 동적으로 늘리거나 줄일 수 있습니다.
높은 OverheadLatency
OverheadLatency는 SageMaker가 요청에 응답하는 데 걸리는 시간이며 ModelLatency를 포함하지 않습니다. OverheadLatency는 여러 요인으로 인해 발생할 수 있습니다. 요청 및 응답의 페이로드 크기, 요청 빈도, 요청의 인증 또는 권한 부여 등이 이러한 요인에 포함됩니다.
엔드포인트를 처음 호출할 때 콜드 스타트로 인해 지연 시간이 증가할 수 있습니다. 이는 첫 번째 호출 요청에서 예상됩니다. 이 문제를 방지하려면 엔드포인트에 테스트 요청을 보내 사전 워밍할 수 있습니다. 요청 빈도가 낮을 경우에도 OverheadLatency가 증가할 수 있다는 점에 유의하세요.