온라인 예측을 위한 BigQuery ML 모델 내보내기

이 가이드에서는 BigQuery ML 모델을 내보낸 다음 AI Platform 또는 로컬 머신에 배포하는 방법을 보여줍니다. BigQuery 공개 데이터세트의 iris 테이블을 사용하고 다음과 같은 엔드 투 엔드 시나리오를 살펴봅니다.

  • 로지스틱 회귀 모델 학습 및 배포 - 선형 회귀, k-평균, 행렬 분해 모델에도 적용됩니다.

비용

이 가이드에서는 비용이 청구될 수 있는 다음과 같은 Google Cloud 구성요소를 사용합니다.

  • BigQuery ML
  • Cloud Storage
  • AI Platform(선택사항, 온라인 예측에 사용)

BigQuery ML 비용에 대한 자세한 내용은 BigQuery ML 가격 책정 페이지를 참조하세요.

Cloud Storage 비용에 대한 자세한 내용은 Cloud Storage 가격 책정 페이지를 참조하세요.

AI Platform 비용에 대한 자세한 내용은 예측 노드 및 리소스 할당 페이지를 참조하세요.

시작하기 전에

  1. Google 계정으로 로그인합니다.

    아직 계정이 없으면 새 계정을 등록하세요.

  2. Cloud Console의 프로젝트 선택기 페이지에서 Cloud 프로젝트를 선택하거나 만듭니다.

    프로젝트 선택기 페이지로 이동

  3. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다. 프로젝트에 결제가 사용 설정되어 있는지 확인하는 방법을 알아보세요.

  4. BigQuery는 새 프로젝트에서 자동으로 사용 설정됩니다. 기존 프로젝트에서 BigQuery를 활성화하려면 다음으로 이동합니다. BigQuery API를 사용 설정합니다.

    API 사용 설정

  5. AI Platform Training and Prediction API and Compute Engine API를 사용 설정합니다.

    API 사용 설정

  6. Google Cloud SDKgcloud 명령줄 도구를 설치합니다.

데이터세트 만들기

첫 번째 단계는 ML 모델을 저장할 BigQuery 데이터세트를 만드는 것입니다. 데이터세트를 만들려면 다음 안내를 따르세요.

  1. Google Cloud Console에서 BigQuery 웹 UI로 이동합니다.

    BigQuery 웹 UI로 이동

  2. 탐색 패널의 리소스 섹션에서 프로젝트 이름을 클릭합니다.

  3. 오른쪽의 세부정보 패널에서 데이터세트 만들기를 클릭합니다.

    데이터세트 만들기

  4. 데이터세트 만들기 페이지에서 다음을 수행합니다.

    • 데이터세트 IDbqml_tutorial을 입력합니다.
    • 데이터 위치미국(US)을 선택합니다. 현재 공개 데이터세트는 US 멀티 리전 위치에 저장됩니다. 여기서는 편의상 같은 위치에 데이터세트를 배치합니다.

      데이터세트 만들기 페이지

  5. 다른 기본 설정은 모두 그대로 두고 데이터세트 만들기를 클릭합니다.

로지스틱 회귀 모델 학습 및 배포

모델 학습

BigQuery ML CREATE MODEL 문을 사용하여 iris 유형을 예측하는 로지스틱 회귀 모델을 학습시킵니다. 이 학습 작업은 완료하는 데 약 1분이 소요됩니다.

bq query --use_legacy_sql=false \
  'CREATE MODEL `bqml_tutorial.iris_model`
  OPTIONS (model_type="logistic_reg",
      max_iterations=10, input_label_cols=["species"])
  AS SELECT
    *
  FROM
    `bigquery-public-data.ml_datasets.iris`;'

모델 내보내기

bq 명령줄 도구를 사용하여 모델을 Cloud Storage 버킷으로 내보냅니다. 모델을 내보내는 다른 방법은 BigQuery ML 모델 내보내기를 참조하세요. 이 추출 작업은 완료하는 데 1분 미만이 소요됩니다.

bq extract -m bqml_tutorial.iris_model gs://some/gcs/path/iris_model

로컬 배포 및 제공

TensorFlow Serving Docker 컨테이너를 사용하여 내보낸 TensorFlow 모델을 배포할 수 있습니다. 다음 단계에서는 Docker를 설치해야 합니다.

내보낸 모델 파일을 임시 디렉터리에 다운로드

mkdir tmp_dir
gsutil cp -r gs://some/gcs/path/iris_model tmp_dir

버전 하위 디렉터리 만들기

이 단계에서는 모델의 버전 번호(이 경우 1)를 설정합니다.

mkdir -p serving_dir/iris_model/1
cp -r tmp_dir/iris_model/* serving_dir/iris_model/1
rm -r tmp_dir

Docker 이미지 가져오기

docker pull tensorflow/serving

Docker 컨테이너 실행

docker run -p 8500:8500 --network="host" --mount type=bind,source=`pwd`/serving_dir/iris_model,target=/models/iris_model -e MODEL_NAME=iris_model -t tensorflow/serving &

예측 실행

curl -d '{"instances": [{"sepal_length":5.0, "sepal_width":2.0, "petal_length":3.5, "petal_width":1.0}]}' -X POST http://localhost:8501/v1/models/iris_model:predict

온라인 배포 및 제공

이 섹션에서는 gcloud 명령줄 도구를 사용하여 내보낸 모델에 대한 예측을 배포하고 실행합니다.

온라인/일괄 예측을 위해 AI Platform에 모델 배포하기에 대한 자세한 내용은 모델 배포를 참조하세요.

모델 리소스 만들기

MODEL_NAME="IRIS_MODEL"
gcloud ai-platform models create $MODEL_NAME

모델 버전 만들기

1) 환경 변수를 설정합니다.

MODEL_DIR="gs://some/gcs/path/iris_model"
// Select a suitable version for this model
VERSION_NAME="v1"
FRAMEWORK="TENSORFLOW"

2) 버전을 만듭니다.

gcloud ai-platform versions create $VERSION_NAME --model=$MODEL_NAME --origin=$MODEL_DIR --runtime-version=1.15 --framework=$FRAMEWORK

이 단계를 완료하는 데 몇 분이 걸릴 수 있습니다. Creating version (this might take a few minutes)...... 메시지가 표시됩니다.

3) (선택사항) 새 버전에 대한 정보를 가져옵니다.

gcloud ai-platform versions describe $VERSION_NAME --model $MODEL_NAME

다음과 비슷한 출력이 표시됩니다.

createTime: '2020-02-28T16:30:45Z'
deploymentUri: gs://your_bucket_name
framework: TENSORFLOW
machineType: mls1-c1-m2
name: projects/[YOUR-PROJECT-ID]/models/IRIS_MODEL/versions/v1
pythonVersion: '2.7'
runtimeVersion: '1.15'
state: READY

온라인 예측

배포된 모델에 대한 온라인 예측 실행에 대한 자세한 내용은 https://cloud.google.com/ai-platform/prediction/docs/online-predict#requesting_predictions를 참조하세요.

1) 입력을 위해 줄바꿈으로 구분된 JSON 파일을 만듭니다(예: 다음 콘텐츠가 포함된 instances.json 파일).

{"sepal_length":5.0, "sepal_width":2.0, "petal_length":3.5, "petal_width":1.0}
{"sepal_length":5.3, "sepal_width":3.7, "petal_length":1.5, "petal_width":0.2}

2) 예측을 위한 환경 변수를 설정합니다.

INPUT_DATA_FILE="instances.json"

3) 예측을 실행합니다.

gcloud ai-platform predict --model $MODEL_NAME --version $VERSION_NAME --json-instances $INPUT_DATA_FILE

삭제

이 가이드에서 사용한 리소스 비용이 Google Cloud Platform 계정에 청구되지 않도록 하는 방법은 다음과 같습니다.

  • 만든 프로젝트를 삭제할 수 있습니다.
  • 또는 프로젝트는 유지하고 데이터세트와 Cloud Storage 버킷을 삭제할 수 있습니다.

Docker 컨테이너 중지

1) 실행 중인 모든 Docker 컨테이너를 나열합니다.

docker ps

2) 컨테이너 목록에서 해당 컨테이너 ID를 가진 컨테이너를 중지합니다.

docker stop container_id

AI Platform 리소스 삭제

1) 모델 버전을 삭제합니다.

gcloud ai-platform versions delete $VERSION_NAME --model=$MODEL_NAME

2) 모델을 삭제합니다.

gcloud ai-platform models delete $MODEL_NAME

데이터세트 삭제

프로젝트를 삭제하면 프로젝트의 데이터세트와 테이블이 모두 삭제됩니다. 프로젝트를 다시 사용하려면 이 가이드에서 만든 데이터세트를 삭제할 수 있습니다.

  1. 필요하면 BigQuery 웹 UI를 엽니다.

    BigQuery 웹 UI로 이동

  2. 앞서 만든 bqml_tutorial 데이터세트를 탐색에서 선택합니다.

  3. 창의 오른쪽에 있는 데이터세트 삭제를 클릭합니다. 데이터세트, 테이블, 모든 데이터가 삭제됩니다.

  4. 데이터세트 삭제 대화상자에서 데이터세트 이름(bqml_tutorial)을 입력하여 삭제 명령어를 확인한 후 삭제를 클릭합니다.

Cloud Storage 버킷 삭제

프로젝트를 삭제하면 프로젝트의 모든 Cloud Storage 버킷이 삭제됩니다. 프로젝트를 재사용하려는 경우 이 가이드에서 만든 버킷을 삭제할 수 있습니다.

  1. Google Cloud Console에서 Cloud Storage 브라우저를 엽니다.
    Cloud Storage 브라우저 열기
  2. 삭제할 버킷의 체크박스를 선택합니다.

  3. 삭제를 클릭합니다.

  4. 표시되는 오버레이 창에서 삭제를 클릭하여 버킷과 콘텐츠를 삭제합니다.

프로젝트 삭제

프로젝트를 삭제하는 방법은 다음과 같습니다.

  1. Cloud Console에서 리소스 관리 페이지로 이동합니다.

    리소스 관리 페이지로 이동

  2. 프로젝트 목록에서 삭제할 프로젝트를 선택하고 삭제 를 클릭합니다.
  3. 대화상자에서 프로젝트 ID를 입력한 후 종료를 클릭하여 프로젝트를 삭제합니다.

다음 단계

  • BigQuery ML 개요는 BigQuery ML 소개를 참조하세요.
  • 모델 내보내기에 대한 자세한 내용은 모델 내보내기를 참조하세요.
  • 모델 만들기에 대한 자세한 내용은 CREATE MODEL 구문 페이지를 참조하세요.