기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
다중 모델 엔드포인트를 위한 사용자 지정 컨테이너 계약
여러 모델을 처리하려면 필요에 따라 모델을 로드, 나열, 가져오기 및 로드 해제하기 위해 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에 반환해야 하며, 그러면 사용하지 않는 모델 로드 해제를 시작하여 리클레임합니다.