[Vertex AI] Hello 커스텀 학습 (1)

김지수·2022년 8월 8일
0

Google cloud platform

목록 보기
1/1
post-thumbnail

개요

Vertex AI란?

Google의 machine learning(ML) platform 으로 ML model 학습, 추론, 배포 등에 필요한 모든 요소를 service 형태로 제공한다.

하드웨어(GPU, memory, ...)와 소프트웨어(ML pipeline, ...)를 모두 제공해주기 때문에 ML 개발자 및 연구자가 풍부한 컴퓨팅 자원으로 ML 개발을 할 수 있게 도와준다.

목적

본 글에서는 공식 문서 Hello 커스텀 학습 튜토리얼을 참고하여 이미지 분류 모델을 Vertex AI에서 학습시키고 서버로 배포하는 작업까지 순서대로 진행한다.

공식 문서만 따라해도 충분히 튜토리얼을 진행할 수 있지만 공식 문서에는 사진 설명이 없다시피해서 따라가기 힘든 부분도 존재한다. 이러한 간극을 줄이는 것에 중점을 두며 다소 설명이 부족한 부분은 공식 문서로 보충하면 충분할 것이다.

프로젝트 및 환경설정

시작하기 전에

Google cloud console을 이용하여 튜토리얼을 진행한다.

튜토리얼 진행에 앞서 console에서 프로젝트를 생성할 필요가 있다. ML 프로젝트 별로 리소스를 구분하는 개념이며 현재는 ML tutorial을 위한 프로젝트라고 보면 된다.

  1. Google cloud console의 왼쪽 상단 탐색 메뉴를 누르고 IAM 및 관리자 > 리소스 관리를 클릭한다.
    (* 이번만 사진을 첨부하고 앞으로는 탐색 메뉴 > IAM 및 관리자 > 리소스 관리 와 같이 줄인다.)
  2. 프로젝트 만들기를 클릭한다.
  3. 프로젝트 구분을 위한 이름을 설정한다.
  4. 탐색 메뉴 > 결제 로 들어가 결제 수단이 등록되어있는 지 확인한다.
    ML platform을 service로 제공하는 것이기 때문에 결제 수단이 있어야만 service를 이용할 수 있다. 다만 Google ML platform을 처음 사용하는 경우에 40만원 상당의 체험용 credit을 제공하니 결제 수단을 등록하더라도 credit에서 먼저 돈이 빠져나가기 때문에 얼마간은 무료로 이용할 수 있다.
  5. API 사용 설정에 들어가서 Vertex AI API, Cloud Functions API 사용 설정을 한다.
  6. 탐색 메뉴 > Cloud Shell 편집기 > 터미널 열기 또는
    검색 > Cloud Shell 편집기 > 터미널 열기 를 클릭한다.
    앞으로 볼 gcloud, gsutil 등 공식 문서에 나온 명령어들은 검정색 화면의 터미널에서 작업하게 된다.

Cloud Storage 버킷 생성

Cloud storage bucket이란 memory를 의미한다. 모델의 결과나 데이터 등을 저장하기 위해서 꼭 필요하다.

Cloud Shell 터미널에서 다음과 같이 명령어를 입력한다.
gsutil mb -p PROJECT_ID -l us-central1 gs://BUCKET_NAME

명령어 세부 설명:
PROJECT_ID: 프로젝트이름-숫자 를 의미한다. 밑 사진에서 빨간색으로 동그라미 친 부분을 보면 tutorial1-숫자로 이루어져있다. 숫자는 개인 정보이므로 지웠으나 여러분들의 터미널에선 보일 것이다.
BUCKET_NAME: storage의 이름이다.
mb: make bucket command
-l us-central1: us는 미국을 뜻하는데 us-central1은 미국 어딘가의 지역을 의미한다. 이는 실제 저장소의 위치를 지정하는 것인데 서울에 있는 사람이 미국에 있는 저장소에 요청을 보내면 딜레이가 클 수 밖에 없다. 가격적인 측면과 딜레이 간의 고려가 필요하겠으나 이는 사용자에게 맡긴다. 지역명은 저장소 위치를 참고하도록 하자. (서울은 asia-northeast3 이다.)

예를 들어 여러분들의 PROJECT_ID가 tutorial1-12345 이고 새로 만들 storage 이름을 test_storage_name 으로 하고 싶으면 gsutil mb -p tutorial1-12345 -l us-central1 gs://test_storage_name 을 적으면 된다.

서울의 저장소를 사용하고 싶으면 gsutil mb -p tutorial1-12345 -l asia-northeast3 gs://test_storage_name 으로 적으면 된다.

생성된 storage는 탐색 메뉴 > Cloud Storage 에서 확인할 수 있다.

샘플 코드 다운로드 및 cloud storage에 업로드

저장소를 만들었으니 학습과 배포에 사용할 샘플 코드를 다운로드하고 해당 저장소에 업로드 하자.

  1. 샘플 코드 다운로드

gsutil cp gs://cloud-samples-data/ai-platform/hello-custom/hello-custom-sample-v1.tar.gz - | tar -xzv

이미 있는 google cloud storage의 hello-custom-sample-v1.tar.gz 압축 파일을 터미널로 다운로드 받고, 압축 해제한다. 여기서 명심할 것은 샘플 코드를 cloud storage에 받은 것이 아니란 점이다. 업로드 부분은 2번 항목에서 진행된다.

ls를 통해 file list를 보면 hello-custom-sample 폴더가 생긴 것을 확인할 수 있다.

다음 명령어로 해당 폴더로 이동한 후 requirements.txt에 명시된 package들을 일부 수정한다. Flask package version은 1.1.2 에서 2.0.1 로 업그레이드하고 Jinja2 package를 추가한다.

cd hello-custom-sample
sed -i 's/Flask==1.1.2/Flask==2.0.1\nJinja2<3.1.0/' function/requirements.txt

미리 준비된 setup.py를 실행시켜 gzip으로 압축된 tarball 형식으로 소스 배포를 만든다. ./dist/hello-custom-training-3.0.tar.gz에 소스 배포가 존재하게 된다. (이렇게 압축된 소스 배포만 업로드하게 된다.)

python3 setup.py sdist --formats=gztar

  1. Cloud storage 업로드

이전에 생성한 google cloud storage 에 앞서 생성한 소스 배포를 업로드한다.
gsutil cp dist/hello-custom-training-3.0.tar.gz gs://BUCKET_NAME/training/

To be continue

Google cloud에 저장소를 만들고, 학습 및 배포에 사용할 샘플 코드를 해당 저장소에 업로드했다. 또 이를 수행하기 위한 구글 콘솔 터미널의 사용 방법도 알아봤다.

이를 기반으로 다음에는 학습 및 배포를 진행할 예정이다.

profile
인공지능을 연구하는 개발자

0개의 댓글