이 페이지에서는 이미지 분류 모델로 예측을 제공하고 웹 앱에서 이러한 예측을 확인하는 방법을 설명합니다.
이 튜토리얼은 여러 페이지로 이루어져 있습니다.커스텀 이미지 분류 모델을 사용한 예측 제공
각 페이지에서는 이 튜토리얼의 이전 페이지에서 안내를 이미 수행했다고 가정합니다.
이 문서의 나머지 부분에서는 이 튜토리얼의 첫 번째 페이지를 따를 때 만든 Cloud Shell 환경과 동일한 환경을 사용한다고 가정합니다. 기존 Cloud Shell 세션이 더 이상 열려 있지 않으면 다음을 수행하여 환경으로 돌아갈 수 있습니다.-
In the Google Cloud console, activate Cloud Shell.
-
Cloud Shell 세션에서 다음 명령어를 실행하세요.
cd hello-custom-sample
엔드포인트 만들기
이 튜토리얼의 이전 페이지를 진행할 때 학습시킨 ML 모델에서 온라인 예측을 얻으려면 Vertex AI 엔드포인트를 만드세요. 엔드포인트는 하나 이상의 모델에서 온라인 예측을 제공합니다.
Google Cloud Console의 Vertex AI 섹션에서 모델 페이지로 이동합니다.
이 튜토리얼의 이전 단계에서 학습한 모델
hello_custom
의 행을 찾고 모델 이름을 클릭하여 모델 세부정보 페이지를 엽니다.배포 및 테스트 탭에서 엔드포인트에 배포를 클릭하여 엔드포인트에 배포 창을 엽니다.
엔드포인트 정의 단계에서 엔드포인트의 기본 정보를 추가합니다.
새 엔드포인트 만들기를 선택합니다.
엔드포인트 이름 필드에
hello_custom
을 입력합니다.모델 설정 섹션에
hello_custom
이라는 모델 이름이 표시되는지 확인합니다. 다음 모델 설정을 지정합니다.트래픽 분할 필드에
100
을 입력합니다. Vertex AI는 엔드포인트의 트래픽을 여러 모델로 분할하는 기능을 지원하지만 이 튜토리얼에서는 이 기능을 사용하지 않습니다.최소 컴퓨팅 노드 수 필드에
1
을 입력합니다.머신 유형 드롭다운 목록의 표준 섹션에서 n1-standard-2를 선택합니다.
완료를 클릭합니다.
로깅 섹션에서 두 가지 유형의 예측 로깅이 사용 설정되어 있는지 확인합니다.
계속을 클릭합니다.
엔드포인트 세부정보 단계에서 엔드포인트가
us-central1 (Iowa)
에 배포될 것임을 확인합니다.고객 관리 암호화 키(CMEK) 사용 체크박스를 선택하지 마세요. 이 튜토리얼에서는 CMEK를 사용하지 않습니다.
배포를 클릭하여 엔드포인트를 만들고 모델을 엔드포인트에 배포합니다.
몇 분 후 엔드포인트 테이블의 새 엔드포인트 옆에
이 나타납니다. 동시에 엔드포인트를 성공적으로 만들고 모델을 엔드포인트에 배포했음을 알리는 이메일도 전송됩니다.Cloud Run 함수 배포
Vertex AI API의 REST 인터페이스에 요청을 전송하여 방금 만든 Vertex AI 엔드포인트에서 예측을 가져올 수 있습니다. 하지만 aiplatform.endpoints.predict
권한이 있는 주 구성원만 온라인 예측 요청을 보낼 수 있습니다. 엔드포인트는 예를 들어 웹 앱을 통해 누구나 요청을 보낼 수 있는 공개 상태로 설정할 수 없습니다.
이 섹션에서는 Cloud Run Functions에 코드를 배포하여 인증되지 않은 요청을 처리합니다. 이 튜토리얼의 첫 번째 페이지를 읽을 때 다운로드한 샘플 코드의 function/
디렉터리에는 이 Cloud Run Functions의 코드가 포함되어 있습니다. 원하는 경우 다음 명령어를 실행하여 Cloud Run Functions 코드를 탐색합니다.
less function/main.py
함수 배포는 다음 목적으로 사용됩니다.
인증되지 않은 요청을 수신하도록 Cloud Run Functions를 구성할 수 있습니다. 또한 함수는 기본적으로 편집자 역할이 있는 서비스 계정(Vertex AI 엔드포인트에서 예측을 가져오는 데 필요한
aiplatform.endpoints.predict
권한 포함)을 사용하여 실행됩니다.또한 이 함수는 요청에 대한 유용한 사전 처리를 수행합니다. Vertex AI 엔드포인트는 학습된 TensorFlow Keras 그래프의 첫 번째 레이어의 형식, 즉 고정 차원의 정규화 부동소수점 수의 텐서로 된 예측 요청을 기대합니다. 함수는 이미지의 URL을 입력으로 받아서 이미지를 이 형식으로 사전 처리한 후에 Vertex AI 엔드포인트로부터 예측을 요청합니다.
Cloud Run Functions를 배포하려면 다음 안내를 따르세요.
Google Cloud 콘솔의 Vertex AI 섹션에서 엔드포인트 페이지로 이동합니다.
이전 섹션에서 만든
hello_custom
이라는 엔드포인트 행을 찾습니다. 이 행에서 샘플 요청을 클릭하여 샘플 요청 창을 엽니다.샘플 요청 창에서 다음 패턴과 일치하는 셸 코드 줄을 찾습니다.
ENDPOINT_ID="ENDPOINT_ID"
ENDPOINT_ID는 이 특정 엔드포인트를 식별하는 숫자입니다.
이 코드 줄을 복사하고 Cloud Shell 세션에서 실행하여
ENDPOINT_ID
변수를 설정합니다.Cloud Shell 세션에서 다음 명령어를 실행하여 Cloud Run Functions를 배포합니다.
gcloud functions deploy classify_flower \ --region=us-central1 \ --source=function \ --runtime=python37 \ --memory=2048MB \ --trigger-http \ --allow-unauthenticated \ --set-env-vars=ENDPOINT_ID=${ENDPOINT_ID}
웹 앱을 배포하여 예측 요청 전송
마지막으로 Cloud Storage에서 정적 웹 앱을 호스팅하여 학습된 ML 모델에서 예측을 가져옵니다. 웹 앱은 Cloud 함수로 요청을 보내며 Cloud Run Functions는 요청을 사전 처리하여 Vertex AI 엔드포인트에서 예측을 가져옵니다.
다운로드한 샘플 코드의 webapp
디렉터리에는 샘플 웹 앱이 포함되어 있습니다. Cloud Shell 세션에서 다음 명령어를 실행하여 웹 앱을 준비하고 배포하세요.
다음 단계에 따라 명령어에 사용할 몇 가지 셸 변수를 설정합니다.
PROJECT_ID=PROJECT_ID BUCKET_NAME=BUCKET_NAME
다음을 바꿉니다.
- PROJECT_ID: Google Cloud 프로젝트 ID입니다.
- BUCKET_NAME: 이 튜토리얼의 첫 번째 페이지를 진행할 때 만든 Cloud Storage 버킷의 이름입니다.
앱을 수정하여 Cloud Run Functions의 트리거 URL와 함께 제공합니다.
echo "export const CLOUD_FUNCTION_URL = 'https://us-central1-${PROJECT_ID}.cloudfunctions.net/classify_flower';" \ > webapp/function-url.js
webapp
디렉터리를 Cloud Storage 버킷에 업로드합니다.gcloud storage cp webapp gs://${BUCKET_NAME}/ --recursive
방금 업로드한 웹 앱 파일을 공개적으로 읽을 수 있게 하세요.
gcloud storage objects update gs://${BUCKET_NAME}/webapp/** --add-acl-grant=entity=allUsers,role=READER
이제 다음 URL로 이동하여 웹 앱을 열고 예측을 가져올 수 있습니다.
https://storage.googleapis.com/BUCKET_NAME/webapp/index.html
웹 앱을 열고 꽃의 이미지를 클릭하여 ML 모델의 꽃 유형 분류를 확인하세요. 웹 앱은 꽃 유형의 목록과 각 유형의 꽃이 이미지에 포함되었을 확률을 예측으로 제시합니다.
다음 단계
튜토리얼의 마지막 페이지의 설명에 따라 지금까지 만든 리소스 삭제하기