온라인 예측용 머신 유형 선택

AI Platform 예측은 모델 버전에 전송된 온라인 예측 요청을 처리하기 위해 노드를 할당합니다. 모델 버전을 배포할 때 AI Platform 예측에서 이러한 노드에 사용하는 가상 머신 유형을 맞춤설정할 수 있습니다.

머신 유형은 다음과 같은 요소에 따라 구분됩니다.

컴퓨팅 리소스가 더 많은 머신 유형을 선택하면 더 짧은 지연 시간으로 예측을 수행하거나 동시에 더 많은 예측 요청을 처리할 수 있습니다.

사용 가능한 머신 유형

Compute Engine(N1) 머신 유형과 mls1-c1-m2 머신 유형은 온라인 예측에 대한 일반 안정화 버전입니다. mls1-c4-m2 머신 유형은 베타 버전으로 제공됩니다.

다음 표에서는 사용 가능한 머신 유형을 비교합니다.

이름 가용성 vCPU 메모리(GB) GPU 지원 ML 프레임워크 지원 최대 모델 크기
mls1-c1-m2(전역 엔드포인트의 기본값) 일반 안정화 버전 1 2 N TensorFlow, XGBoost, scikit-learn(커스텀 코드가 있는 파이프라인 포함), 커스텀 예측 루틴 500MB
mls1-c4-m2 베타 4 2 N TensorFlow, XGBoost, scikit-learn(커스텀 코드가 있는 파이프라인 포함), 커스텀 예측 루틴 500MB
n1-standard-2(리전 엔드포인트의 기본값) 일반 안정화 버전 2 7.5 Y TensorFlow, XGBoost, scikit-learn 2GB
n1-standard-4 일반 안정화 버전 4 15 Y TensorFlow, XGBoost, scikit-learn 2GB
n1-standard-8 일반 안정화 버전 8 30 Y TensorFlow, XGBoost, scikit-learn 2GB
n1-standard-16 일반 안정화 버전 16 60 Y TensorFlow, XGBoost, scikit-learn 2GB
n1-standard-32 일반 안정화 버전 32 120 Y TensorFlow, XGBoost, scikit-learn 2GB
n1-highmem-2 일반 안정화 버전 2 13 Y TensorFlow, XGBoost, scikit-learn 2GB
n1-highmem-4 일반 안정화 버전 4 26 Y TensorFlow, XGBoost, scikit-learn 2GB
n1-highmem-8 일반 안정화 버전 8 52 Y TensorFlow, XGBoost, scikit-learn 2GB
n1-highmem-16 일반 안정화 버전 16 104 Y TensorFlow, XGBoost, scikit-learn 2GB
n1-highmem-32 일반 안정화 버전 32 208 Y TensorFlow, XGBoost, scikit-learn 2GB
n1-highcpu-2 일반 안정화 버전 2 1.8 Y TensorFlow, XGBoost, scikit-learn 2GB
n1-highcpu-4 일반 안정화 버전 4 3.6 Y TensorFlow, XGBoost, scikit-learn 2GB
n1-highcpu-8 일반 안정화 버전 8 7.2 Y TensorFlow, XGBoost, scikit-learn 2GB
n1-highcpu-16 일반 안정화 버전 16 14.4 Y TensorFlow, XGBoost, scikit-learn 2GB
n1-highcpu-32 일반 안정화 버전 32 28.8 Y TensorFlow, XGBoost, scikit-learn 2GB

각 머신 유형의 가격 책정에 대해 알아보세요. Compute Engine 문서에서 Compute Engine(N1) 머신 유형의 세부 사양에 대해 자세히 알아보세요.

머신 유형 지정

모델 버전을 만들 때 머신 유형 선택을 지정할 수 있습니다. 머신 유형을 지정하지 않으면 모델 버전은 기본적으로 리전 엔드포인트를 사용하는 경우 n1-standard-2을 사용하고 전역 엔드포인트를 사용하면 mls1-c1-m2을 사용합니다.

다음 안내에서는 모델 버전을 만들 때 머신 유형을 지정하는 방법을 설명합니다. n1-standard-4 머신 유형이 안내의 예시로 사용됩니다. 모델 버전을 만들기 위한 전체 프로세스에 대해 알아보려면 모델 배포 가이드를 참조하세요.

Cloud Console

버전 만들기 페이지에서 머신 유형 드롭다운 목록을 열고 표준 > n1-standard-4를 선택합니다.

gcloud

Cloud Storage에 모델 아티팩트를 업로드하고 모델 리소스를 만든 후에 n1-standard-4 머신 유형을 사용하는 모델 버전을 만들 수 있습니다.

gcloud ai-platform versions create version_name \
  --model model_name \
  --origin gs://model-directory-uri \
  --runtime-version 2.3 \
  --python-version 3.7 \
  --framework ml-framework-name \
  --region us-central1 \
  --machine-type n1-standard-4

Python

이 예시에서는 Python용 Google API 클라이언트 라이브러리를 사용합니다. 다음 코드 샘플을 실행하기 전에 인증을 설정해야 합니다.

Cloud Storage에 모델 아티팩트를 업로드하고 모델 리소스를 만든 후 모델의 projects.models.versions.create 메서드로 요청을 보내고 요청 본문에 machineType 필드를 지정합니다.

from google.api_core.client_options import ClientOptions
from googleapiclient import discovery

endpoint = 'https://us-central1-ml.googleapis.com'
client_options = ClientOptions(api_endpoint=endpoint)
ml = discovery.build('ml', 'v1', client_options=client_options)

request_dict = {
    'name': 'version_name',
    'deploymentUri': 'gs://model-directory-uri',
    'runtimeVersion': '2.3',
    'pythonVersion': '3.7',
    'framework': 'ML_FRAMEWORK_NAME',
    'machineType': 'n1-standard-4'
}
request = ml.projects().models().versions().create(
    parent='projects/project-name/models/model_name',
    body=request_dict
)
response = request.execute()

온라인 예측에 GPU 사용

일부 구성의 경우 선택적으로 GPU를 추가하여 각 예측 노드를 가속화할 수 있습니다. GPU를 사용하려면 몇 가지 요구사항을 고려해야 합니다.

  • Compute Engine(N1) 머신 유형에서만 GPU를 사용할 수 있습니다. 기존(MLS1) 머신 유형은 GPU를 지원하지 않습니다.
  • TensorFlow 저장된 모델을 배포할 경우에만 GPU를 사용할 수 있습니다. scikit-learn 또는 XGBoost 모델에는 GPU를 사용할 수 없습니다.
  • 각 GPU 유형의 가용성은 모델에 사용하는 리전에 따라 다릅니다. 리전에서 사용할 수 있는 GPU 유형을 알아보세요.
  • 모델 버전에 한 가지 유형의 GPU만 사용할 수 있으며 사용 중인 머신 유형에 따라 추가할 수 있는 GPU 수에 제한이 있습니다. 다음 표에서는 이러한 제한사항을 설명합니다.

다음 표에서는 온라인 예측에 사용 가능한 GPU와 각 Compute Engine 머신 유형에 사용할 수 있는 각 GPU 유형의 수를 보여줍니다.

각 머신 유형에 유효한 GPU 수
머신 유형 NVIDIA Tesla K80 NVIDIA Tesla P4 NVIDIA Tesla P100 NVIDIA Tesla T4 NVIDIA Tesla V100
n1-standard-2 1, 2, 4, 8 1, 2, 4 1, 2, 4 1, 2, 4 1, 2, 4, 8
n1-standard-4 1, 2, 4, 8 1, 2, 4 1, 2, 4 1, 2, 4 1, 2, 4, 8
n1-standard-8 1, 2, 4, 8 1, 2, 4 1, 2, 4 1, 2, 4 1, 2, 4, 8
n1-standard-16 2, 4, 8 1, 2, 4 1, 2, 4 1, 2, 4 2, 4, 8
n1-standard-32 4, 8 2, 4 2, 4 2, 4 4, 8
n1-highmem-2 1, 2, 4, 8 1, 2, 4 1, 2, 4 1, 2, 4 1, 2, 4, 8
n1-highmem-4 1, 2, 4, 8 1, 2, 4 1, 2, 4 1, 2, 4 1, 2, 4, 8
n1-highmem-8 1, 2, 4, 8 1, 2, 4 1, 2, 4 1, 2, 4 1, 2, 4, 8
n1-highmem-16 2, 4, 8 1, 2, 4 1, 2, 4 1, 2, 4 2, 4, 8
n1-highmem-32 4, 8 2, 4 2, 4 2, 4 4, 8
n1-highcpu-2 1, 2, 4, 8 1, 2, 4 1, 2, 4 1, 2, 4 1, 2, 4, 8
n1-highcpu-4 1, 2, 4, 8 1, 2, 4 1, 2, 4 1, 2, 4 1, 2, 4, 8
n1-highcpu-8 1, 2, 4, 8 1, 2, 4 1, 2, 4 1, 2, 4 1, 2, 4, 8
n1-highcpu-16 2, 4, 8 1, 2, 4 1, 2, 4 1, 2, 4 2, 4, 8
n1-highcpu-32 4, 8 2, 4 2, 4 2, 4 4, 8

GPU는 선택사항이며 추가 비용이 발생합니다.

GPU 지정

모델 버전을 만들 때 GPU를 지정합니다. AI Platform 예측은 사용자가 각 예측 노드에 지정하는 GPU의 수와 유형을 할당합니다. 예측 노드를 자동으로 확장(미리보기)하거나 수동으로 확장(GA)할 수 있지만 각 노드가 사용하는 GPU의 수는 모델 버전을 생성할 때 고정됩니다. 고급 사용 사례를 사용하지 않는 한, 각 예측 노드에서 GPU를 하나씩 구성하는 것이 좋습니다. 즉, 액셀러레이터 수를 1로 설정합니다.

다음 지침은 최소 2개의 예측 노드에서 실행되는 모델 버전을 만들어 온라인 예측용 GPU를 지정하는 방법을 보여줍니다. 각 노드는 n1-standard-4 머신 유형과 NVIDIA Tesla T4 GPU 1개를 사용합니다.

이 예시에서는 TensorFlow 저장된 모델을 Cloud Storage에 업로드하고 GPU를 지원하는 리전에 모델 리소스를 생성했다고 가정합니다.

Cloud Console

모델 버전 만들기 가이드를 따르세요. 버전 만들기 페이지에서 다음 옵션을 지정합니다.

  1. 확장 드롭다운 목록에서 자동 확장을 선택합니다.
  2. 최소 노드 수 필드에 2를 입력합니다.
  3. 머신 유형 드롭다운 목록에서 표준 > n1-standard-4를 선택합니다.
  4. 가속기 유형 드롭다운 목록에서 NVIDIA_TESLA_T4를 선택합니다.
  5. 가속기 수 드롭다운 목록에서 1을 선택합니다.

gcloud

gcloud 도구를 사용하여 모델 버전을 만듭니다. 이 예시에서 버전은 NVIDIA Tesla T4 GPU를 사용하는 n1-standard-4 예측 노드에서 실행됩니다. AI Platform Prediction은 특정 시점에 GPU 사용량에 따라 노드 수를 2~4 사이의 숫자로 자동으로 확장합니다. 이 예시에서는 us-central1 리전 엔드포인트를 사용합니다.

gcloud beta ai-platform versions create version_name \
  --model model_name \
  --origin gs://model-directory-uri \
  --runtime-version 2.3 \
  --python-version 3.7 \
  --framework tensorflow \
  --region us-central1 \
  --machine-type n1-standard-4 \
  --accelerator count=1,type=nvidia-tesla-t4 \
  --min-nodes 2 \
  --max-nodes 4 \
  --metric-targets gpu-duty-cycle=60

가속기 이름은 단어 사이에 하이픈을 사용한 소문자로 지정됩니다.

Python

이 예시에서는 Python용 Google API 클라이언트 라이브러리를 사용합니다. 다음 코드 샘플을 실행하기 전에 인증을 설정해야 합니다.

이 예시에서는 us-central1 리전 엔드포인트를 사용합니다.

모델의 projects.models.versions.create 메서드로 요청을 보내고 요청 본문에 machineType, acceleratorConfig, manualScaling 필드를 지정합니다.

from google.api_core.client_options import ClientOptions
from googleapiclient import discovery

endpoint = 'https://us-central1-ml.googleapis.com'
client_options = ClientOptions(api_endpoint=endpoint)
ml = discovery.build('ml', 'v1', client_options=client_options)

request_dict = {
    'name': 'version_name',
    'deploymentUri': 'gs://model-directory-uri',
    'runtimeVersion': '2.3',
    'pythonVersion': '3.7',
    'framework': 'TENSORFLOW',
    'machineType': 'n1-standard-4',
    'acceleratorConfig': {
      'count': 1,
      'type': 'NVIDIA_TESLA_T4'
    },
    'autoScaling': {
      'minNodes': 2,
      'maxNodes': 4,
      'metrics': [
        {
          'name': 'GPU_DUTY_CYCLE',
          'target': 60
        }
      ]
    }
}
request = ml.projects().models().versions().create(
    parent='projects/project-name/models/model_name',
    body=request_dict
)
response = request.execute()

가속기 이름은 대문자로, 단어 사이에 밑줄을 사용하여 지정됩니다.

머신 유형 간의 차이점

머신 유형은 다양한 양의 컴퓨팅 리소스를 제공하는 것 외에 특정 AI Platform 예측 기능의 지원 측면에서도 서로 다릅니다. 다음 표에서는 Compute Engine(N1) 머신 유형과 기존(MLS1) 머신 유형의 차이점에 대한 개요를 제공합니다.

Compute Engine(N1) 머신 유형 기존(MLS1) 머신 유형
리전 모든 리전 엔드포인트 리전 모든 글로벌 엔드포인트 리전
ML 아티팩트 유형
런타임 버전 1.11 이상 사용 가능한 모든 AI Platform 런타임
커스텀 컨테이너 지원 Y N
최대 모델 크기 2GB 500MB
자동 확장 최소 노드 = 1 최소 노드 = 0
수동 확장 노드 수를 업데이트할 수 있음 모델 버전을 만든 후 노드 수를 업데이트할 수 없음
GPU 지원 Y(TensorFlow 만 해당) N
AI Explanations 지원 Y(TensorFlow 만 해당) N
VPC 서비스 제어 지원 Y N
일반 안정화 버전 머신 유형의 SLA 적용 범위 경우에 따라 가능 Y

다음 섹션에서는 머신 유형 간의 차이점에 대해 자세히 설명합니다.

사용 가능한 리전

Compute Engine(N1) 머신 유형은 리전 엔드포인트에 모델을 배포할 경우에 사용할 수 있습니다. Compute Engine(N1) 머신 유형을 사용하는 경우 모델을 전역 엔드포인트에 배포할 수 없습니다.

Compute Engine(N1) 머신 유형을 사용하는 모델 버전을 둘 이상의 예측 노드로 확장하면 동일한 리전 내의 여러 영역에서 노드가 실행됩니다. 따라서 한 영역에서 서비스가 중단되어도 지속적인 가용성이 보장됩니다. 이 문서의 확장 섹션에서 자세히 알아보세요.

또한 Compute Engine(N1) 머신 유형의 GPU 가용성은 리전마다 다릅니다.

기존(MLS1) 머신 유형은 많은 리전의 글로벌 엔드포인트에서 사용할 수 있습니다. 리전 엔드포인트에서는 기존(MLS1) 머신 유형을 사용할 수 없습니다.

일괄 예측 지원

mls1-c1-m2 머신 유형을 사용하는 모델 버전은 일괄 예측을 지원합니다. 다른 머신 유형을 사용하는 모델 버전은 일괄 예측을 지원하지 않습니다.

ML 프레임워크 지원

Compute Engine(N1) 머신 유형 중 하나를 사용하는 경우 다음 두 가지를 제외하고 예측 모델 내보내기 가이드에 설명된 모든 모델 아티팩트를 사용하여 모델 버전을 만들 수 있습니다.

기존(MLS1) 머신 유형의 경우, AI Platform Prediction에서 지원하는 모든 유형의 모델 아티팩트를 사용할 수 있으며 커스텀 코드가 있는 scikit-learn 파이프라인이나 커스텀 예측 루틴이 포함됩니다.

런타임 버전 지원

Compute Engine(N1) 머신 유형을 사용하는 경우 모델 버전에 런타임 버전 1.11 이상을 사용해야 합니다.

기존(MLS1) 머신 유형을 사용하는 경우 사용 가능한 아무 AI Platform 런타임 버전이나 사용할 수 있습니다.

커스텀 컨테이너 지원

커스텀 컨테이너를 사용하여 온라인 예측을 제공하려면 Compute Engine(N1) 머신 유형을 사용해야 합니다.

최대 모델 크기

기존(MLS1) 머신 유형을 사용하는 경우 모델 버전을 만들 때 제공하는 모델 아티팩트의 총 파일 크기가 500MB 미만이어야 합니다. Compute Engine(N1) 머신 유형을 사용하는 경우 총 파일 크기는 최대 2GB입니다.

예측 로깅

Compute Engine(N1) 머신 유형의 경우 콘솔 로깅은 미리보기입니다. 기존(MLS1) 머신 유형의 경우 콘솔 로깅이 일반 안정화 버전입니다.

예측 노드 확장

Compute Engine(N1) 머신 유형을 사용하는지 또는 기존(MLS1) 머신 유형을 사용하는지에 따라 예측 노드의 자동 확장 및 수동 확장 모두 다른 제약이 적용됩니다.

자동 확장

자동 확장과 Compute Engine(N1) 머신 유형을 함께 사용하는 경우 모델 버전에 항상 하나 이상의 노드가 실행되어야 합니다. 즉, 버전의 autoScaling.minNodes 필드 기본값은 1이며 1보다 작을 수 없습니다. autoScaling.minNodes를 2 이상으로 설정하면 예측 노드가 동일 리전 내의 여러 영역에서 실행됩니다. 따라서 한 영역에서 서비스가 중단되어도 지속적인 가용성이 보장됩니다.

머신러닝 모델에 필요한 것보다 많은 vCPU 또는 RAM을 할당하면 자동 확장이 제대로 작동하지 않을 수 있습니다. 이로 인해 모델 성능에 문제가 발생할 수 있습니다. 과다한 컴퓨팅 리소스를 제공하지 않도록 모델에 다른 머신 유형을 사용하여 실험해보세요.

기존(MLS1) 머신 유형을 사용하는 경우 트래픽을 수신하지 않을 때 모델 버전은 0개 노드로 축소될 수 있습니다. (autoScaling.minNodes는 0으로 설정할 수 있으며 기본적으로 0으로 설정됩니다.)

수동 확장

Compute Engine(N1) 머신 유형을 수동 확장과 함께 사용하는 경우 projects.models.versions.patch API 메서드를 사용하여 언제든지 실행 중인 예측 노드의 수를 업데이트할 수 있습니다. manualScaling.nodes 필드를 2 이상으로 설정하면 예측 노드가 동일 리전 내의 여러 영역에서 실행됩니다. 따라서 한 영역에서 서비스가 중단되어도 지속적인 가용성이 보장됩니다.

기존(MLS1) 머신 유형을 수동 확장과 함께 사용하는 경우 모델 버전을 만든 후 예측 노드 수를 업데이트할 수 없습니다. 노드 수를 변경하려면 노드를 삭제하고 새 노드를 만들어야 합니다.

VPC 서비스 제어 지원

VPC 서비스 제어를 사용하여 AI Platform Prediction을 보호하는 경우 기존(MLS1) 머신 유형을 사용하는 버전을 만들 수 없습니다. Compute Engine(N1) 머신 유형을 사용해야 합니다.