리전 엔드포인트

온라인 예측을 사용하려면 글로벌 엔드포인트(ml.googleapis.com) 또는 리전 엔드포인트(REGION-ml.googleapis.com) 중 하나를 통해 AI Platform Training 및 Prediction API와 상호작용할 수 있습니다. 온라인 예측에 리전 엔드포인트를 사용하면 모델과 버전 리소스가 다른 리전으로부터 분리되므로 다른 리전의 중단으로부터 모델을 추가로 보호할 수 있습니다.

AI Platform Prediction은 현재 다음과 같은 리전 엔드포인트를 지원합니다.

  • us-central1
  • europe-west4
  • asia-east1

이 가이드에서는 리전 엔드포인트와 글로벌 엔드포인트 사용에 따르는 이점과 제한 사항을 비교합니다. 또한 온라인 예측에 리전 엔드포인트를 사용하는 과정을 안내합니다.

리전 엔드포인트 이해

리전 엔드포인트는 글로벌 엔드포인트와 몇 가지 중요한 차이점이 있습니다.

  • 리전 엔드포인트는 Compute Engine(N1) 머신 유형만 지원합니다. 리전 엔드포인트에서는 레거시(MLS1) 머신 유형을 사용할 수 없습니다. 즉, Compute Engine(N1) 머신 유형 사용의 모든 이점과 제한 사항이 적용됩니다. 예를 들어 리전 엔드포인트에서 GPU를 사용할 수 있지만 현재 스트림(Console) 로깅은 사용 설정할 수 없습니다.

    Compute Engine(N1) 머신 유형을 사용하려면 리전 엔드포인트를 사용해야 합니다.

  • 리전 엔드포인트는 온라인 예측 및 AI Explanations만 지원합니다. 리전 엔드포인트에 배포된 모델은 일괄 예측을 지원하지 않습니다.

    AI Platform Prediction은 AI Platform TrainingAI Platform Vizier와 AI Platform Training 및 Prediction API를 공유합니다. 리전 엔드포인트는 현재 AI Platform Training을 지원하지 않습니다. us-central1 엔드포인트만 AI Platform Vizier를 지원합니다.

    어떤 엔드포인트에서 어떤 API 메서드를 사용할 수 있는지에 대한 자세한 내용은 API 참조를 참조하세요.

AI Platform Prediction 리소스 이름은 어느 엔드포인트에서나 Google Cloud 프로젝트에 대해 고유하지만 여러 엔드포인트에서 중복될 수 있습니다. 예를 들어 europe-west4 엔드포인트에 'hello-world'라는 모델을 만들고 us-central1 엔드포인트에 'hello-world'라는 다른 모델을 만들 수 있습니다.

리전 엔드포인트에서 모델을 나열하는 경우 해당 엔드포인트에서 생성된 모델만 표시됩니다. 마찬가지로 글로벌 엔드포인트에 모델을 나열하면 글로벌 엔드포인트에 생성된 모델만 표시됩니다.

리전 엔드포인트와 글로벌 엔드포인트 리전 비교

글로벌 엔드포인트에서 모델 리소스를 만드는 경우 모델의 리전을 지정할 수 있습니다. 이 모델 내에서 버전을 만들고 예측을 제공하면 예측 노드는 지정된 리전에서 실행됩니다.

리전 엔드포인트를 사용하면 AI Platform Prediction은 엔드포인트의 리전에서 예측 노드를 실행합니다. 그러나 이 경우 AI Platform Prediction은 해당 리전의 모든 AI Platform Prediction 인프라를 실행하여 부가적인 격리를 제공합니다.

예를 들어 글로벌 엔드포인트에서 us-east1 리전을 사용하는 경우 예측 노드는 us-east1에서 실행됩니다. 그러나 리소스를 관리하는 AI Platform Prediction 인프라(요청 라우팅, 모델 및 버전 생성, 업데이트, 삭제 등)는 us-east1에서 실행되지 않을 수도 있습니다. 반면 europe-west4 리전 엔드포인트를 사용하면 예측 노드와 모든 AI Platform Prediction 인프라가 europe-west4에서 실행됩니다.

리전 엔드포인트 사용

리전 엔드포인트를 사용하려면 먼저 리전 엔드포인트에 모델을 생성해야 합니다. 그런 다음 해당 모델과 관련된 모든 작업(예를 들어 모델 버전 만들기, 예측 요청 전송)을 동일한 엔드포인트에서 수행합니다.

Google Cloud Console을 사용하는 경우 모델을 만들 때 리전 엔드포인트 사용 체크박스를 선택해야 합니다. 전역 엔드포인트에서와 마찬가지로 다른 모든 Cloud Console 작업을 수행하세요.

gcloud 명령줄 도구를 사용하는 경우 모델 및 그 하위 리소스와 상호작용하는 모든 명령어에서 엔드포인트의 리전에 --region 플래그를 설정합니다. 여기에는 다음이 포함됩니다.

AI Platform Training 및 Prediction API와 직접 상호작용하는 경우(예를 들어 Python용 Google API 클라이언트 라이브러리 사용) 모든 API 요청을 글로벌 엔드포인트에서와 같은 방법으로 만들되, 대신 리전 엔드포인트를 사용합니다. 리전 엔드포인트에서 사용할 수 있는 API 메서드에 대한 자세한 내용은 API 참조를 참조하세요.

다음 예시에서는 리전 엔드포인트를 사용하여 모델을 만들고 버전을 만들고 온라인 예측 요청을 보내는 방법을 보여줍니다. 예시를 사용하려면 모든 곳의 REGION을 리전 엔드포인트를 사용할 수 있는 리전 중 하나로 대체하세요.

  • us-central1
  • europe-west4
  • asia-east1

모델 만들기

Cloud Console

  1. Cloud Console에서 모델 만들기 페이지로 이동한 후 Google Cloud 프로젝트를 선택합니다.

    모델 만들기 페이지로 이동

  2. 모델 이름을 지정하고 리전 엔드포인트 사용 체크박스를 선택한 다음 리전 드롭다운 목록에서 사용할 엔드포인트의 리전을 선택합니다.

  3. 만들기 버튼을 클릭합니다.

gcloud

다음 명령어를 실행합니다.

gcloud ai-platform models create MODEL_NAME \
  --region=REGION

명령어에서 다음 자리표시자를 바꿉니다.

  • MODEL_NAME: 모델에 선택한 이름입니다.
  • REGION: 사용할 엔드포인트의 리전입니다.

Python

이 샘플에서는 Python용 Google API 클라이언트 라이브러리를 사용합니다. 사용하려면 먼저 개발 환경에서 Python 용 Google API 클라이언트 라이브러리를 설치하고 인증을 설정해야 합니다.

다음 Python 코드를 실행합니다.

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

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

request_body = { 'name': 'MODEL_NAME' }
request = ml.projects().models().create(parent='projects/PROJECT_ID',
    body=request_body)

response = request.execute()
print(response)

코드에서 다음 자리표시자를 바꿉니다.

  • REGION: 사용할 엔드포인트의 리전입니다.
  • MODEL_NAME: 모델에 선택한 이름입니다.
  • PROJECT_ID: Google Cloud 프로젝트의 ID입니다.

모델 생성에 대해 자세히 알아보세요.

모델 버전 만들기

이 예시에서는 호환 모델 아티팩트를 Cloud Storage에 이미 업로드했다고 가정합니다.

Cloud Console

이전 섹션에서 만든 모델을 사용하여 Cloud Console에서 모델 버전 만들기 가이드를 따릅니다.

gcloud

이 예시에서는 호환 모델 아티팩트를 Cloud Storage에 이미 업로드했다고 가정합니다. 다음 명령어를 실행합니다.

gcloud ai-platform versions create VERSION_NAME \
  --region=REGION \
  --model=MODEL_NAME \
  --framework=FRAMEWORK \
  --machine-type=MACHINE_TYPE \
  --origin=MODEL_DIRECTORY \
  --python-version=3.7 \
  --runtime-version=2.2

명령어에서 다음 자리표시자를 바꿉니다.

  • REGION: 이전 섹션에서 사용한 엔드포인트의 리전입니다.
  • VERSION_NAME: 버전에 선택한 이름입니다.
  • MODEL_NAME: 이전 섹션에서 만든 모델의 이름입니다.
  • FRAMEWORK: 모델 아티팩트를 만드는 데 사용되는 프레임워크입니다.
  • MACHINE_TYPE: Compute Engine(N1) 머신 유형입니다.
  • MODEL_DIRECTORY: 모델 디렉터리에 대한 Cloud Storage URI입니다( 'gs://'로 시작).

Python

다음 Python 코드를 실행합니다.

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

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

request_body = { 'name': 'VERSION_NAME',
    'deploymentUri': 'MODEL_DIRECTORY',
    'runtimeVersion': '2.2',
    'machineType': 'MACHINE_TYPE',
    'framework': 'FRAMEWORK',
    'pythonVersion': '3.7'}
request = ml.projects().models().version().create(
    parent='projects/PROJECT_ID/models/MODEL_NAME',
    body=request_body)

response = request.execute()
print(response)

코드에서 다음 자리표시자를 바꿉니다.

  • REGION: 이전 섹션에서 사용한 엔드포인트의 리전입니다.
  • VERSION_NAME: 버전에 선택한 이름입니다.
  • MODEL_DIRECTORY: 모델 디렉터리에 대한 Cloud Storage URI입니다( 'gs://'로 시작).
  • MACHINE_TYPE: Compute Engine(N1) 머신 유형입니다.
  • FRAMEWORK: 모델 아티팩트를 만드는 데 사용되는 프레임워크입니다.
  • PROJECT_ID: Google Cloud 프로젝트의 ID입니다.
  • MODEL_NAME: 이전 섹션에서 만든 모델의 이름입니다.

모델 버전 생성에 대해 자세히 알아보세요.

온라인 예측 요청 보내기

Cloud Console

  1. Cloud Console에서 모델 페이지로 이동합니다.

    모델 페이지로 이동

  2. 리전 드롭다운 목록에서 모델이 사용할 엔드포인트의 리전을 선택합니다. 이전 섹션에서 만든 모델의 이름을 클릭하여 모델 세부정보 페이지로 이동합니다.

  3. 이전 섹션에서 만든 버전의 이름을 클릭하여 버전 세부정보 페이지로 이동합니다.

  4. 테스트 및 사용 탭을 클릭합니다. 하나 이상의 입력 데이터 인스턴스를 입력하고 테스트 버튼을 클릭하여 온라인 예측 요청을 보냅니다.

gcloud

이 예시에서는 로컬 환경의 줄바꿈으로 구분된 JSON 파일에 예측 입력을 저장했다고 가정합니다. 다음 명령어를 실행합니다.

gcloud ai-platform predict \
  --region=REGION \
  --model=MODEL_NAME \
  --version=VERSION_NAME \
  --json-request=INPUT_PATH

명령어에서 다음 자리표시자를 바꿉니다.

  • REGION: 이전 섹션에서 사용한 엔드포인트의 리전입니다.
  • MODEL_NAME: 이전 섹션에서 만든 모델의 이름입니다.
  • VERSION_NAME: 이전 섹션에서 만든 모델 버전의 이름입니다.
  • INPUT_PATH: 로컬 파일 시스템의 예측 입력이 있는 JSON 파일 경로입니다.

Python

다음 Python 코드를 실행합니다.

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

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

request_body = { 'instances': INSTANCES }
request = ml.projects().predict(
    name='projects/PROJECT_ID/models/MODEL_NAME/VERSION_NAME',
    body=request_body)

response = request.execute()
print(response)

코드에서 다음 자리표시자를 바꿉니다.

  • REGION: 이전 섹션에서 사용한 엔드포인트의 리전입니다.
  • INSTANCES: 예측 입력 인스턴스의 목록입니다.
  • MODEL_NAME: 이전 섹션에서 만든 모델의 이름입니다.
  • VERSION_NAME: 이전 섹션에서 만든 버전의 이름입니다.

온라인 예측 수행에 대해 자세히 알아보세요.

다음 단계