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

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

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

여러 모델을 처리하려면 필요에 따라 모델을 로드, 나열, 가져오기 및 로드 해제하기 위해 Amazon SageMaker AI가 컨테이너와 통신할 수 있도록 컨테이너에서 일련의 API를 지원해야 합니다. 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는 처음에 next_page_token에 대한 값을 제공하지 않고 모델 API 나열을 직접적으로 호출할 수 있습니다. 응답의 일부로 반환된 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 Runtime 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에 반환해야 하며, 그러면 사용하지 않는 모델 로드 해제를 시작하여 리클레임합니다.