다중 모델 엔드포인트를 위한 사용자 지정 컨테이너 계약 - Amazon SageMaker AI

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

다중 모델 엔드포인트를 위한 사용자 지정 컨테이너 계약

여러 모델을 처리하려면 컨테이너가 Amazon SageMaker AI가 필요에 따라 모델을 로드, 나열, 가져오기 및 언로드하기 위해 컨테이너와 통신할 수 있는 APIs 세트를 지원해야 합니다. model_name는 새 API 세트에서 키 입력 파라미터로 사용됩니다. 고객 컨테이너는 매핑 키로 model_name을 사용하여 로드된 모델을 추적해야 합니다. 또한 model_name는 불투명 식별자로, InvokeEndpoint API에 전달된 TargetModel 파라미터의 값이 아닐 수도 있습니다. InvokeEndpoint 요청의 원래 TargetModel 값은 X-Amzn-SageMaker-Target-Model 헤더로서 API의 컨테이너에 전달되어 로깅 목적으로 사용할 수 있습니다.

참고

GPU 지원 인스턴스에 대한 다중 모델 엔드포인트는 현재 SageMaker AI의 NVIDIA Triton 추론 서버 컨테이너에서만 지원됩니다. 이 컨테이너는 아래에 정의된 계약을 이미 구현하고 있습니다. 고객은 추가 작업 없이 다중 모델 GPU 엔드포인트와 함께 이 컨테이너를 직접 사용할 수 있습니다.

CPU 지원 다중 모델 엔드포인트를 위해 컨테이너에서 다음 API를 구성할 수 있습니다.

모델 API 로드

고객 컨테이너의 메모리에 본문의 url 필드에 존재하는 특정 모델을 로드하고 할당된 model_name으로 이를 추적하도록 컨테이너에게 지시합니다. 모델이 로드된 후에는 컨테이너가 이 model_name을 사용하여 추론 요청을 처리 할 준비가 되어 있어야 합니다.

POST /models HTTP/1.1 Content-Type: application/json Accept: application/json { "model_name" : "{model_name}", "url" : "/opt/ml/models/{model_name}/model", }
참고

model_name이 이미 로드된 경우 이 API는 409를 반환해야 합니다. 메모리 부족 또는 다른 리소스로 인해 모델을 로드할 수 없는 경우이 API는 507 HTTP 상태 코드를 SageMaker AI에 반환해야 합니다. 그러면 미사용 모델 언로드가 시작되어 회수됩니다.

모델 API 나열

고객 컨테이너의 메모리에 로드된 모델의 목록을 반환합니다.

GET /models HTTP/1.1 Accept: application/json Response = { "models": [ { "modelName" : "{model_name}", "modelUrl" : "/opt/ml/models/{model_name}/model", }, { "modelName" : "{model_name}", "modelUrl" : "/opt/ml/models/{model_name}/model", }, .... ] }

이 API는 페이지 매김도 지원합니다.

GET /models HTTP/1.1 Accept: application/json Response = { "models": [ { "modelName" : "{model_name}", "modelUrl" : "/opt/ml/models/{model_name}/model", }, { "modelName" : "{model_name}", "modelUrl" : "/opt/ml/models/{model_name}/model", }, .... ] }

SageMaker AI는 처음에에 대한 값을 제공하지 않고 List Models API를 호출할 수 있습니다next_page_token. 응답의 일부로 반환된 nextPageToken 필드는 후속 모델 나열 호출에서 next_page_token의 값으로 제공됩니다. nextPageToken가 반환되지 않으면 반환할 모델이 더 이상 없다는 의미입니다.

모델 API 가져오기

이것은 model_name 엔터티에 대한 간단한 읽기 API입니다.

GET /models/{model_name} HTTP/1.1 Accept: application/json { "modelName" : "{model_name}", "modelUrl" : "/opt/ml/models/{model_name}/model", }
참고

model_name이 로드되지 않은 경우 이 API는 404를 반환해야 합니다.

모델 API 언로드

SageMaker AI 플랫폼에 메모리에서 모델을 언로드하도록 고객 컨테이너에 지시하도록 지시합니다. 이렇게 하면 새 모델을 로드하는 프로세스를 시작할 때 플랫폼에 의해 결정된대로 후보 모델의 퇴거가 개시됩니다. model_name에 프로비저닝된 리소스는 이 API가 응답을 반환할 때 컨테이너에서 회수되어야 합니다.

DELETE /models/{model_name}
참고

model_name이 로드되지 않은 경우 이 API는 404를 반환해야 합니다.

모델 API 간접 호출

제공된 특정 model_name에서 예측 요청을 만듭니다. SageMaker AI 런타임 InvokeEndpoint 요청은 호출에 지정된 모델의 상대 경로를 취하는 새 헤더X-Amzn-SageMaker-Target-Model로를 지원합니다. SageMaker AI 시스템은 CreateModel API 호출의 일부로 제공되는 접두사를 모델의 상대 경로와 결합하여 모델의 절대 경로를 구성합니다.

POST /models/{model_name}/invoke HTTP/1.1 Content-Type: ContentType Accept: Accept X-Amzn-SageMaker-Custom-Attributes: CustomAttributes X-Amzn-SageMaker-Target-Model: [relativePath]/{artifactName}.tar.gz
참고

model_name이 로드되지 않은 경우 이 API는 404를 반환해야 합니다.

또한 GPU 인스턴스에서 메모리 또는 기타 리소스 부족으로 인해가 InvokeEndpoint 실패하는 경우이 API는 507 HTTP 상태 코드를 SageMaker AI에 반환해야 합니다. 그러면 미사용 모델 언로드가 시작되어 회수됩니다.