기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
배치 변환을 사용한 사용자 지정 추론 코드
이 섹션에서는 Amazon SageMaker AI가 배치 변환을 위해 자체 추론 코드를 실행하는 Docker 컨테이너와 상호 작용하는 방법을 설명합니다. 이 정보를 사용하여 추론 코드를 작성하고 Docker 이미지를 생성합니다.
주제
SageMaker AI가 추론 이미지를 실행하는 방법
컨테이너를 실행 파일로 실행하도록 구성하려면 Dockerfile에서 ENTRYPOINT
지침을 사용합니다. 다음 사항에 유의하세요.
-
배치 변환의 경우 SageMaker AI는 사용자를 대신하여 모델을 호출합니다. SageMaker AI는 컨테이너를 다음과 같이 실행합니다.
docker run
image
serve일괄 변환에 대한 입력은 작은 파일로 분할하여 병렬로 처리할 수 있는 형식이어야 합니다. 이러한 형식에는 CSV, JSON
, JSON Lines , TFRecord , RecordIO 가 포함됩니다. SageMaker AI는 이미지 이름 뒤에
serve
인수를 지정하여 컨테이너의 기본CMD
문을 재정의합니다.serve
인수는 또한 Dockerfile에서CMD
명령을 사용하여 입력한 인수 또한 재정의합니다. -
exec
지침의ENTRYPOINT
양식을 사용하는 것이 좋습니다.ENTRYPOINT ["executable", "param1", "param2"]
예시:
ENTRYPOINT ["python", "k_means_inference.py"]
-
SageMaker AI는 컨테이너의
CreateModel
및CreateTransformJob
에 지정된 환경 변수를 설정합니다. 또한 다음 환경 변수가 채워집니다.-
SAGEMAKER_BATCH
는 배치 변환에서 컨테이너가 실행될 때true
로 설정됩니다. -
SAGEMAKER_MAX_PAYLOAD_IN_MB
는 HTTP를 통해 컨테이너로 전송될 크기가 가장 큰 페이로드로 설정됩니다. -
SAGEMAKER_BATCH_STRATEGY
는 컨테이너가 호출당 단일 레코드를 받을 때는SINGLE_RECORD
로, 컨테이너가 페이로드에 맞는 대로 많은 수의 레코드를 받을 때는MULTI_RECORD
로 설정됩니다. -
SAGEMAKER_MAX_CONCURRENT_TRANSFORMS
는 동시에 열 수 있는 최대/invocations
요청 수로 설정됩니다.
참고
마지막 환경 변수 3개는 사용자가 생성한 API 직접 호출에서 가져옵니다. 사용자가 이러한 환경 변수의 값을 설정하지 않은 경우에는 해당 환경 변수가 전달되지 않습니다. 이러한 경우 기본값 또는 (
/execution-parameters
에 대한 응답으로) 알고리즘에서 요청한 값이 사용됩니다. -
-
(
CreateTransformJob
요청에 GPU 기반 ML 컴퓨팅 인스턴스를 지정하여) 모델 추론에 GPU 디바이스를 사용하려는 경우 컨테이너가 nvidia-docker와 호환 가능한지 확인해야 합니다. 이미지가 포함된 NVIDIA 드라이버를 번들화하지 마세요. nvidia-docker에 대한 추가 정보는 NVIDIA/nvidia-docker를 참조하세요. -
init
초기화기는 훈련 및 서비스 인수와 혼동되므로 SageMaker AI 컨테이너의 진입점으로 사용할 수 없습니다.
SageMaker AI가 모델 아티팩트를 로드하는 방법
CreateModel
요청에서 컨테이너 정의는 ModelDataUrl
파라미터를 포함하며, 이 파라미터는 모델 아티팩트가 저장되는 Amazon S3의 위치를 식별합니다. SageMaker AI를 사용하여 추론을 실행할 때이 정보를 사용하여 모델 아티팩트를 복사할 위치를 결정합니다. 결과물은 추론 코드에서 사용할 Docker 컨테이너의 /opt/ml/model
디렉터리에 복사됩니다.
ModelDataUrl
파라미터는 tar.gz 파일을 가리켜야 합니다. 그렇지 않으면 SageMaker AI가 파일을 다운로드할 수 없습니다. SageMaker AI에서 모델을 훈련하면 아티팩트가 Amazon S3에 단일 압축 tar 파일로 저장됩니다. 다른 프레임워크에서 모델을 훈련시키는 경우 Amazon S3에 모델 아티팩트를 압축된 tar 파일로 저장해야 합니다. SageMaker AI는 배치 변환 작업이 시작되기 전에이 tar 파일의 압축을 풀고 컨테이너의 /opt/ml/model
디렉터리에 저장합니다.
컨테이너의 요청 처리 방법
컨테이너는 포트 8080에서 호출 및 ping 요청에 응답하는 웹 서버를 구현해야 합니다. 배치 변환의 경우 SageMaker AI에 동적 런타임 구성을 제공하기 위해 실행 파라미터 요청을 구현하는 알고리즘을 설정할 수 있습니다. SageMaker AI는 다음 엔드포인트를 사용합니다.
-
ping
-컨테이너의 상태를 주기적으로 확인하는 데 사용됩니다. SageMaker AI는 호출 요청을 보내기 전에 HTTP200
상태 코드와 ping 요청이 성공할 때까지 빈 본문을 기다립니다. 호출 요청을 보낼 때 ping 요청을 사용하여 모델을 메모리에 로드함으로써 추론을 생성할 수도 있습니다. -
(선택 사항)
execution-parameters
-런타임 중 알고리즘이 작업에 대한 최적의 튜닝 파라미터를 제공하도록 허용합니다. 알고리즘은 컨테이너에 사용 가능한 메모리 및 CPU를 기반으로 작업에 적합한MaxConcurrentTransforms
,BatchStrategy
,MaxPayloadInMB
값을 선택합니다.
간접 호출 요청을 호출하기 전에 SageMaker AI는 실행 파라미터 요청을 간접 호출하려고 시도합니다. 일괄 변환 작업을 생성할 때 MaxConcurrentTransforms
, BatchStrategy
, MaxPayloadInMB
사용자는 파라미터의 값을 제공할 수 있습니다. SageMaker AI는 다음 우선 순위를 사용하여 이러한 파라미터의 값을 결정합니다.
-
CreateTransformJob
요청을 생성할 때 제공한 파라미터 값. -
SageMaker AI가 실행 파라미터 엔드포인트를 호출할 때 모델 컨테이너가 반환하는 값>
-
기본 파라미터 값(다음 표 참조).
파라미터 기본값 MaxConcurrentTransforms
1
BatchStrategy
MULTI_RECORD
MaxPayloadInMB
6
GET
execution-parameters 요청에 대한 응답은 JSON 객체와 MaxConcurrentTransforms
, BatchStrategy
, MaxPayloadInMB
파라미터에 대한 키입니다. 다음은 유효한 응답의 예입니다.
{ “MaxConcurrentTransforms”: 8, “BatchStrategy": "MULTI_RECORD", "MaxPayloadInMB": 6 }
컨테이너의 추론 요청 응답 방법
추론을 얻기 위해 Amazon SageMaker AI는 추론 컨테이너에 POST 요청을 보냅니다. POST 요청 본문에는 Amazon S3의 데이터가 포함되어 있습니다. Amazon SageMaker AI는 요청을 컨테이너에 전달하고 컨테이너의 추론 결과를 반환하여 Amazon S3에 대한 응답의 데이터를 저장합니다.
추론 요청을 수신하려면 컨테이너에 포트 8080에서 수신하는 웹 서버가 있어야 하고 /invocations
엔드포인트에 대한 POST 요청을 수락해야 합니다. ModelClientConfig
를 통해 추론 요청 제한 시간 및 최대 재시도 횟수를 구성할 수 있습니다.
컨테이너의 상태 확인(핑) 요청 응답 방법
컨테이너에 대한 가장 간단한 요구 사항은 HTTP 200 상태 코드 및 비어 있는 본문을 포함하여 응답하는 것입니다. 이는 SageMaker AI에 컨테이너가 /invocations
엔드포인트에서 추론 요청을 수락할 준비가 되었음을 나타냅니다.
최소 기준이 컨테이너가 정적 200을 반환하는 반면 컨테이너 개발자는 이 기능을 사용하여 더욱 자세한 확인을 수행할 수 있습니다. /ping
시도의 요청 제한 시간은 2초입니다.