커스텀 컨테이너 사용

AI Platform Prediction이 학습된 머신러닝(ML) 모델로부터 온라인 예측을 제공하는 방법을 맞춤설정하기 위해서는 모델 버전을 만들 때 런타임 버전 대신 커스텀 컨테이너를 지정할 수 있습니다. 커스텀 컨테이너를 사용할 때 AI Platform Prediction은 표준 런타임 버전 코드를 실행하여 호환 가능한 모델 아티팩트로부터 예측을 제공하는 대신 각 예측 노드에서 사용자가 선택한 Docker 컨테이너를 실행합니다.

커스텀 컨테이너를 사용해야 할 수 있는 이유는 다음과 같습니다.

  • TensorFlow, scikit-learn, XGBoost 이외의 프레임워크를 사용하여 학습된 ML 모델로부터 예측을 제공합니다.
  • 예측 요청을 사전 처리하거나 모델로 생성된 예측을 사후 처리합니다.
  • 사용자가 선택한 프로그래밍 언어로 작성된 예측 서버를 실행합니다.
  • 예측 맞춤설정을 위해 사용하려는 종속 항목을 설치합니다.

이 가이드에서는 커스텀 컨테이너를 사용하는 모델 버전을 만드는 방법을 설명합니다. Docker 컨테이너 이미지를 만들고 설계하는 방법에 대해서는 자세히 설명하지 않습니다. 컨테이너 이미지를 만들고 AI Platform Prediction에 사용하는 방법에 대한 예시는 시작하기: 커스텀 컨테이너로 PyTorch 예측 제공을 참조하세요.

커스텀 컨테이너를 사용하려면 모델 버전에 리전 엔드포인트Compute Engine(N1) 머신 유형을 사용해야 합니다.

컨테이너 이미지 준비

커스텀 컨테이너를 사용하는 모델 버전을 만들려면 해당 컨테이너의 기초로 Docker 컨테이너 이미지를 제공해야 합니다. 이 컨테이너 이미지는 커스텀 컨테이너 요구사항에 설명된 요구사항을 충족해야 합니다.

신뢰하는 제3자가 만든 기존 컨테이너 이미지를 사용하려는 경우, 다음 섹션 중 하나 또는 모두를 건너뛸 수도 있습니다.

컨테이너 이미지 만들기

컨테이너 이미지 요구사항을 충족하는 Docker 컨테이너 이미지를 설계하고 빌드합니다.

Docker 컨테이너 이미지 설계 및 빌드에 대한 기초를 알아보려면 Docker 문서의 빠른 시작을 참조하세요.

컨테이너 이미지를 Artifact Registry에 푸시

컨테이너 이미지 게시 요구사항을 충족하는 Artifact Registry 저장소에 컨테이너 이미지를 푸시합니다.

Artifact Registry에 컨테이너 이미지를 푸시하는 방법을 알아보세요.

모델 및 모델 버전 만들기

나중에 모델에서 만드는 모든 모델 버전이 커스텀 컨테이너와 호환될 수 있도록 모델을 만들 때 몇 가지 구성 옵션을 지정합니다.

그런 후 모델 버전을 만들 때 대부분의 컨테이너 구성을 지정합니다.

모델 만들기

모델을 만들려면 모델 리소스 만들기 안내를 따르세요. 컨테이너 이미지가 저장된 Artifact Registry 저장소의 리전과 일치하는 리전 엔드포인트에서 모델을 만들어야 합니다. 자세한 내용은 컨테이너 이미지 게시 요구사항을 참조하세요.

모델 버전 만들기

커스텀 컨테이너 이미지를 사용하는 모델 버전을 만드는 경우 모델 버전에 지정하는 기타 필드 외에 다음 컨테이너별 API 필드를 구성합니다.

다음 섹션에서는 이러한 필드를 구성하는 방법을 설명합니다.

또한 다른 API 필드를 구성할 때와 컨테이너 특정 필드를 구성할 때의 차이가 무엇인지 주의하세요.

Version.container 구성

Version.container 필드에 ContainerSpec 메시지를 지정해야 합니다. 이 메시지 내에서 다음 하위 필드를 지정할 수 있습니다. gcloud beta ai-platform versions create 명령어를 사용하여 모델 버전을 만드는 경우, 명령줄 플래그를 사용하여 각 하위 필드를 지정할 수 있습니다.

image(필수)

컨테이너 이미지의 Artifact Registry URI입니다.

gcloud CLI 플래그: --image

command(선택사항)

컨테이너의 ENTRYPOINT를 우선 적용하기 위한 실행 파일 및 인수의 배열입니다. 이 필드의 형식을 지정하는 방법과 args 필드와 상호작용하는 방법을 자세히 알아보려면 ContainerSpec API 참조를 확인하세요.

gcloud CLI 플래그: --command

args(선택사항)

컨테이너의 CMD를 우선 적용하기 위한 실행 파일 및 인수의 배열입니다. 이 필드의 형식을 지정하고 command 필드와 상호작용하는 방법을 자세히 알아보려면 ContainerSpec API 참조를 확인하세요.

gcloud CLI 플래그: --args

ports(선택사항)

포트 배열입니다. AI Platform Prediction은 나열된 첫 번째 포트 또는 8080(기본값)으로 컨테이너에 활성 확인, 상태 확인, 예측 요청을 전송합니다. 추가 포트를 지정해도 효과가 없습니다.

gcloud CLI 플래그: --ports

env(선택사항)

컨테이너의 진입점 명령어와 commandargs 필드가 참조할 수 있는 환경 변수의 배열입니다. 다른 필드가 이러한 환경 변수를 참조할 수 있는 방법을 자세히 알아보려면 ContainerSpec API 참조를 확인하세요.

gcloud CLI 플래그: --env-vars

Version.container.env 필드에 설정한 변수 외에도 AI Platform Prediction은 사용자 구성에 따라 몇 가지 다른 변수를 설정합니다. 이러한 필드 및 컨테이너의 진입점 명령어에서 이러한 환경 변수를 사용하는 방법에 대해 자세히 알아보세요.

다음 예시에서는 Google Cloud CLI를 사용하여 모델 버전을 만들 때 이러한 필드를 지정하는 방법을 보여줍니다.

gcloud beta ai-platform versions create VERSION \
  --region=REGION \
  --model=MODEL \
  --machine-type=n1-standard-4 \
  --image=IMAGE_URI \
  --command=executable,param1,param2 \
  --args=param3,param4 \
  --ports=8081 \
  --env-vars \
    VAR1='value 1' \
    VAR2='value 2'

다음을 바꿉니다.

Version.routes 구성

Version.routes 필드에 RouteMap 메시지를 지정할 수 있습니다. 이 메시지 내에서 다음 하위 필드를 지정할 수 있습니다. gcloud beta ai-platform versions create 명령어를 사용하여 모델 버전을 만드는 경우, 명령줄 플래그를 사용하여 각 하위 필드를 지정할 수 있습니다.

health(선택사항)

AI Platform Prediction이 상태 확인을 전송하도록 하려는 컨테이너의 HTTP 서버 경로입니다.

이 필드를 지정하지 않으면 기본적으로 /v1/models/MODEL/versions/VERSION으로 지정됩니다. 여기서 MODELVERSION은 각각 모델 및 모델 버전의 이름으로 바뀝니다.

gcloud CLI 플래그: --health-route

predict(선택사항)

AI Platform Prediction이 예측 요청을 전달하도록 하려는 컨테이너의 HTTP 서버 경로입니다.

이 필드를 지정하지 않으면 기본적으로 /v1/models/MODEL/versions/VERSION:predict으로 지정됩니다. 여기서 MODELVERSION은 각각 모델 및 모델 버전의 이름으로 바뀝니다.

gcloud CLI 플래그: --predict-route

다음 예시에서는 gcloud CLI를 사용하여 모델 버전을 만들 때 이러한 필드를 지정하는 방법을 보여줍니다.

gcloud beta ai-platform versions create VERSION \
  --region=REGION \
  --model=MODEL \
  --machine-type=n1-standard-4 \
  --image=IMAGE_URI \
  --command=executable,param1,param2 \
  --args=param3,param4 \
  --ports=8081 \
  --env-vars \
    VAR1='value 1' \
    VAR2='value 2' \
  --health-route=/health \
  --predict-route=/predict

다음을 바꿉니다.

예측 요청 전송

모델 버전에 온라인 예측 요청을 전송하려면 온라인 예측 가이드를 따르세요. 이 프로세스는 커스텀 컨테이너 사용 여부에 관계없이 동일하게 작동합니다.

하지만 커스텀 컨테이너를 사용할 때는 각 예측 요청의 본문이 런타임 버전을 사용하는 모델 버전의 요청 본문 요구사항을 충족할 필요가 없습니다. 따라서 가능한 경우 표준 형식의 요청 본문이 필요하도록 컨테이너를 설계하는 것이 좋습니다. 커스텀 컨테이너의 예측 요청 및 응답 요구사항에 대해 자세히 알아보세요.

다음 단계