Amazon SageMaker 추론 오류인 ‘upstream timed out (110: Connection timed out) while reading response header from upstream’을 어떻게 해결할 수 있습니까?

3분 분량
0

Amazon SageMaker 엔드포인트를 배포하거나 BatchTransform 작업을 실행하면 연결 시간이 초과되면서 다음과 같은 오류가 발생합니다. "upstream timed out (110: Connection timed out) while reading response header from upstream, client: 169.xxx.xxx.xxx, server: , request: "POST /invocations HTTP/1.1", upstream: "http://unix:/tmp/gunicorn.sock/invocations" , host: "169.xxx.xxx.xxx:8080"

간략한 설명

이 오류는 NGINX와 웹 서버 간의 연결에 문제가 있음을 나타냅니다. 이 두 구성 요소는 사용자 자체 컨테이너를 사용하든 사전 구축된 컨테이너를 사용하든 관계없이 모델 컨테이너에서 실행됩니다. 이러한 구성 요소는 SageMaker 호스팅 또는 배치 변환과 직접 관련이 없습니다. 하지만 NGINX와 웹 서버 간의 연결 시간이 초과되면 SageMaker는 /invocations 엔드포인트에서 추론을 수신하지 못합니다.

이 문제를 해결하려면 다음을 수행합니다.

  1. 알고리즘 컨테이너의 지연 시간을 줄이거나 컨테이너의 제한 시간 한도를 늘립니다.
  2. Nginx.conf 제한 시간을 늘려 설정합니다.

해결 방법

알고리즘 컨테이너의 지연 시간을 줄이거나 제한 시간 한도를 늘립니다.

  • 호스팅 서비스에 대한 추론 코드를 실행하는 경우: 모델 컨테이너는 60초 이내에 요청에 응답해야 합니다. 모델 자체의 최대 처리 시간은 60초입니다. 모델에 50~60초의 처리 시간이 필요하다면 SDK 소켓 시간 제한을 70초로 설정합니다. 자세한 내용은 컨테이너의 추론 요청 응답 방법을 참조하세요.
  • 배치 변환에 대한 추론 코드를 실행하는 경우: ModelClientConfig를 사용하여 InvocationsTimeoutInSecondsInvocationsMaxRetries 파라미터를 구성합니다.

Amazon SageMaker는 컨테이너에서 CreateModelCreateTransformJob에 명시된 환경 변수를 설정합니다. 다음 API 파라미터를 조정하여 알고리즘 컨테이너의 지연 시간을 줄입니다. 예를 들어 입력이 분할 가능한 경우 변환 작업을 만들 때 MaxPayloadInMB 필드를 설정하여 각 요청의 페이로드 크기를 제한합니다.

  • MaxPayloadInMB: 컨테이너로 전송되는 페이로드의 최대 크기입니다. 컨테이너가 배치 변환을 신속하게 처리할 수 있는 경우 이 속성의 값을 늘립니다. 배치 변환이 예상보다 오래 걸리는 경우 이 속성의 값을 줄입니다.
  • MaxConcurrentTransforms: 기본값은 1입니다. 둘 이상의 NGINX 작업자가 있는 경우 이 설정을 늘립니다.
  • BatchStrategy: 미니 배치에 가능하면 많은 레코드를 넣으려면(최대 MaxPayloadInMB한도까지) [BatchStrategy]를 [MultiRecord]로 설정하고 [SplitType]을 [Line]으로 설정합니다.

Gunicorn을 구현하는 SageMaker 프레임워크 컨테이너를 사용하는 경우 다음 속성을 Docker 컨테이너에 환경 변수로 전달합니다.

  • SAGEMAKER _MODEL_SERVER_TIMEOUT: Gunicorn 서버의 제한 시간입니다. 연결이 종료되기 전에 요청 처리에 더 많은 시간을 허용하려면 이 값을 늘립니다.
  • SAGEMAKER _MODEL_SERVER_WORKERS: CPU 당 작업자 수입니다.

Nginx.conf 시간 제한 설정 값을 늘립니다.

Amazon SageMaker의 사전 빌드된 Docker 컨테이너 중 하나를 사용하는 경우 NGINX.conf 파일을 수정할 수 없습니다. 자체 Docker 컨테이너를 사용하는 경우에만 NGINX.conf를 수정할 수 있습니다.

NGINX 시간 제한은 Amazon SageMaker가 제한 시간 후에 연결을 종료하기 때문에 장애를 일으킬 수 있습니다. 컨테이너가 종료된 연결에서 읽거나 쓰려고 시도하면 요청이 실패합니다. 다음 중 하나 이상의 속성을 수정하여 네트워크 오버헤드를 수용하도록 합니다.

  • proxy_read_timeout: request.send 호출 후 NGINX가 모델의 응답을 기다리는 시간입니다. 연결을 종료하기 전에 Amazon SageMaker가 요청을 처리하는 데 더 많은 시간을 허용하려면 이 값을 늘립니다.
  • worker_processes: 인바운드 연결의 스레드 수입니다. 대부분의 경우 해당 값은 CPU 코어의 개수 이상이어야 합니다. 예를 들어 ml.m5.large와 같은 2코어 인스턴스 유형의 경우 이 속성을 2 이상으로 설정합니다.
  • worker_connections: 각 작업자 프로세스에 대한 최대 동시 연결 수입니다. 시작값을 1024로 설정하는 것이 좋습니다.

구성 설정에 대한 자세한 내용은 NGINX 설명서의 Module ngx_http_proxy_module을 참조하세요.


AWS 공식
AWS 공식업데이트됨 2년 전
댓글 없음

관련 콘텐츠