[GCP] VertexAI Custom Training Job 간단 구성하기

GCP에서 제공하는 Vertex AI는 ML 모델과 AI 애플리케이션을 학습 및 배포하고 AI 기반 애플리케이션에서 사용할 대규모 언어 모델(LLM)을 맞춤설정할 수 있게 해주는 머신러닝(ML) 플랫폼입니다. Vertex AI 플랫폼을 통해 초보자부터 전문가까지 다양한 수준의 머신러닝 사용자를 지원하며, 모델 유형에 관계없이 효율적인 AI 개발을 가능하게 합니다.
Vertex AI Custom Training Job은 사용자가 직접 구성한 커스텀 코드와 하이퍼파라미터를 이용해 모델 학습을 수행할 수 있는 Google Cloud Vertex AI의 기능입니다. 컨테이너 기반 환경에서 자동 리소스 할당과 분산 학습을 지원하여 효율적이고 확장 가능한 모델 개발을 구현합니다.
GCP에서 제공하는 Vertex AI Custom Training Job을 JupyterLab을 사용하여 간단히 구성해보는 방법을 알아보도록 하겠습니다.
[GCP] VertexAI 알아보기
GCP VertexAI에 대한 기본적인 정보를 알아봅니다.
https://every-up.tistory.com/106
[GCP] VertexAI 알아보기
[GCP] VertexAI 알아보기GCP에서 제공하는 Vertex AI는 ML 모델과 AI 애플리케이션을 학습 및 배포하고 AI 기반 애플리케이션에서 사용할 대규모 언어 모델(LLM)을 맞춤설정할 수 있게 해주는 머신러닝(ML)
every-up.tistory.com
[GCP] VertexAI Workbench 생성하기
JupyterLab을 사용할 수 있도록 사전에 VertexAI Workbench를 생성합니다.
https://every-up.tistory.com/107
[GCP] VertexAI Workbench 생성하기
[GCP] VertexAI Workbench 생성하기GCP에서 제공하는 Vertex AI는 ML 모델과 AI 애플리케이션을 학습 및 배포하고 AI 기반 애플리케이션에서 사용할 대규모 언어 모델(LLM)을 맞춤설정할 수 있게 해주는 머신
every-up.tistory.com
JupyterLab 실행
VertexAI Workbench에서 실행하고자 하는 JupyterLab 인스턴스를 클릭합니다.

잠깐의 로딩화면 이후 JupyterLab이 정상적으로 실행함을 확인하실 수 있습니다.

아래 Jupyter Notebook 파일을 다운로드 후 드래그 앤 드롭(Drag and Drop)으로 파일을 업로드 합니다.

Custom Training Job 구성 및 실행
이제 업로드한 Jupyter Notebook 파일을 실행하여 Custom Training Job을 구성 및 실행해보도록 하겠습니다.
작업 1 - 기본 설정
Custom Training Job을 구성하기 위한 기본적인 패키지를 설치하고, 프로젝트 관련 설정을 정의합니다.PROJECT_ID
값은 사용 중인 GCP 프로젝트의 ID 값으로 설정합니다.
# 작업 1 - 기본 설정
import os
from google.cloud import aiplatform, storage
import subprocess
# 필요한 패키지 설치
subprocess.run(["pip", "install", "torch", "torchvision", "google-cloud-aiplatform", "google-cloud-storage", "pyyaml"])
import torch
import torchvision
import zipfile
# GCP 프로젝트 설정
PROJECT_ID = "{Project ID}" # GCP 프로젝트 ID
REGION = "us-central1" # 리전 설정
BUCKET_NAME = "test-coco-dataset-bucket" # GCS 버킷 이름
# Vertex AI 초기화
aiplatform.init(project=PROJECT_ID, location=REGION)
작업 2 - COCO 데이터셋 및 기계 학습 환경 다운로드
기계 학습은 COCO 데이터셋을 활용하여 YOLOv5 모델을 학습해보도록 하겠습니다.
COCO 데이터셋 및 YOLOv5 모델을 다운로드 및 압축을 해제합니다.
# 작업 2 - COCO 데이터셋 및 기계 학습 환경 다운로드
# COCO 데이터셋 및 학습 코드 다운로드
!wget https://github.com/ultralytics/assets/releases/download/v0.0.0/coco128.zip
!wget https://raw.githubusercontent.com/ultralytics/yolov5/master/data/coco128.yaml
!wget https://raw.githubusercontent.com/ultralytics/yolov5/master/train.py
# 데이터 압축 해제
import zipfile
with zipfile.ZipFile("coco128.zip", "r") as zip_ref:
zip_ref.extractall("coco128")
작업 2-1 - coco128.yaml 파일 수정
JupyterLab에서 데이터셋 구성 파일인 coco128.yaml 파일을 수정하여 COCO 데이터셋의 경로 설정을 변경합니다.
데이터셋 기본 경로(path), 학습 경로(train), 검증 경로(val)를 수정합니다.
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: . # dataset root dir
train: coco128/images/train2017 # train images (relative to 'path') 128 images
val: coco128/images/train2017 # val images (relative to 'path') 128 images
test: # test images (optional)
작업 3 - GCS 버킷 생성 및 업로드
GCS 버킷을 생성한 후 학습에 필요한 데이터셋, 데이터셋 구성 파일, 학습 코드를 GCS 버킷에 업로드 합니다.
Custom Training Job을 실행 시 GCS 버킷에 있는 데이터를 사용하여 학습을 구동시키고자 합니다.
# 작업 3 - GCS 버킷 생성 및 업로드
# GCS 버킷 생성
storage_client = storage.Client()
bucket = storage_client.create_bucket(BUCKET_NAME, location=REGION)
# GCS 버킷에 업로드
!gsutil -m cp -r coco128 gs://{BUCKET_NAME}/coco/
!gsutil -m cp -r coco128.yaml gs://{BUCKET_NAME}/coco/
!gsutil -m cp -r train.py gs://{BUCKET_NAME}/coco/
작업 4 - Custom Training Job 실행
Google Cloud의 AI 관련 서비스(Google Vertex AI, AutoML, AI Platform 등)를 관리할 수 있는 gcloud ai
명령어를 사용하여 Custom Training Job을 실행합니다.gcloud ai custom-jobs create
명령어와 학습에 필요한 파라미터 값을 입력하여 실행합니다.
# 작업 4 - Custom Training Job 실행
!gcloud ai custom-jobs create \
--region=us-central1 \
--display-name=yolo-training-job \
--worker-pool-spec=machine-type=n1-standard-8,replica-count=1,accelerator-type=NVIDIA_TESLA_T4,accelerator-count=1,container-image-uri=gcr.io/deeplearning-platform-release/pytorch-gpu.1-12:latest \
--command=bash \
--args="-c" \
--args="\
git clone https://github.com/ultralytics/yolov5.git && \
gsutil -m cp -r gs://{BUCKET_NAME}/coco/coco128/coco128 yolov5/ && \
gsutil -m cp -r gs://{BUCKET_NAME}/coco/coco128.yaml yolov5/ && \
gsutil -m cp -r gs://{BUCKET_NAME}/coco/train.py yolov5/ && \
cd yolov5 && \
pip install --upgrade pip && \
pip install -r requirements.txt && \
python train.py --data=coco128.yaml --epochs=10 --batch-size=16 --img-size=640 && \
gsutil -m cp -r runs/train/* gs://{BUCKET_NAME}/coco/models/"
worker-pool-spec 옵션을 통해 학습 머신에 대한 설정과 컨테이너 이미지를 설정할 수 있습니다. 컨테이너 이미지는 직접 생성한 이미지를 사용할 수 있으며 사전에 학습 환경이 구성된 컨테이너 이미지를 생성하여 기계 학습 환경을 더 빠르게 프로비저닝 수 있습니다.
이번 Custom Training Job 실행에서는 GCP에서 기본으로 제공하는 컨테이너 이미지를 사용하였으며, 학습에 필요한 환경구성과 학습 코드 실행 등을 args
로 추가하여 구성할 수 있도록 설정하였습니다.
명령어 실행 시 아래와 같이 Custom Training Job 생성에 대한 로그가 출력됩니다.
Using endpoint [https://us-central1-aiplatform.googleapis.com/]
CustomJob [projects/123412341234/locations/us-central1/customJobs/8016661615963275264] is submitted successfully.
Your job is still active. You may view the status of your job with the command
$ gcloud ai custom-jobs describe projects/123412341234/locations/us-central1/customJobs/8016661615963275264
or continue streaming the logs with the command
$ gcloud ai custom-jobs stream-logs projects/123412341234/locations/us-central1/customJobs/8016661615963275264
Custom Training Job 실행 확인
VertexAI 서비스 관리 페이지에서 Custom Training Job 실행을 확인해보도록 하겠습니다.
모델 개발 -> 학습 메뉴에서 커스텀 작업을 선택한 후 생성된 yolo-training-job
이름의 Custom Training Job을 선택합니다.

Custom Training Job의 현재 상태를 확인할 수 있으며 시작 시간, 경과 시간, 머신 유형, 로그 등의 상세한 정보를 확인할 수 있습니다.

같은 화면의 하단에는 기계학습 실행 시 CPU, GPU, Network 사용에 대한 모니터링 정보를 상세하게 확인할 수 있습니다.

로그 보기 버튼을 클릭하면 기계학습 실행 시의 모든 상세 로그를 확인할 수 있습니다.

이제 학습된 모델 파일을 확인해봅시다.
학습된 모델 파일은 GCS 버킷(gs://{BUCKET_NAME}/coco/models/)에 저장되도록 설정하였으므로, GCS 버킷을 통해 확인해보도록 합시다. 기본 학습 코드(train.py)에 따라 GCS 버킷에 exp/weights/ 경로에 학습된 모델 파일(best.pt, last.pt)이 생성됨을 확인하실 수 있습니다.

GCP에서 제공하는 Vertex AI Custom Training Job을 JupyterLab을 사용하여 간단히 구성해보는 방법에 대해 확인해봤는데요.
Vertex AI Workbench에서 JupyterLab을 실행한 후, COCO 데이터셋과 YOLOv5 모델을 GCS 버킷에 업로드하여 Custom Training Job을 실행합니다. gcloud ai custom-jobs create 명령어를 사용해 학습을 수행하고, 학습된 모델(best.pt, last.pt)을 GCS 버킷에서 확인할 수 있습니다. Vertex AI 관리 페이지에서 Custom Training Job의 상태, 리소스 사용량, 로그 등을 모니터링할 수 있습니다.
데이터셋과 기계학습 환경을 구축하고 Vertex AI Custom Training Job을 사용하여 기계학습을 사용해보시기 바랍니다....! 끝...!
유익하게 보셨다면 공감을 눌러주고, 댓글로 의견을 공유해 남겨주시면 감사하겠습니다!
[Reference]
https://cloud.google.com/vertex-ai/docs/training/create-custom-job?hl=ko
'GCP' 카테고리의 다른 글
[GCP] VertexAI Workbench 생성하기 (0) | 2025.03.31 |
---|---|
[GCP] VertexAI 알아보기 (0) | 2025.03.25 |