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

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

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

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

참고

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

CPU 지원되는 다중 모델 엔드포인트에 대해 컨테이너APIs에서 다음을 구성할 수 있습니다.

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

모델 나열 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는 처음에에 대한 값을 제공하지 API 않고 List Models를 호출할 수 있습니다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이 로드되지 않으면 404가 반환API됩니다.

모델 언로드 API

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

DELETE /models/{model_name}
참고

model_name이 로드되지 않으면 404가 반환API됩니다.

모델 호출 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이 로드되지 않으면 404가 반환API됩니다.

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