[GCP] VertexAI 커스텀 학습 컨테이너 생성하기
GCP에서 제공하는 Vertex AI는 ML 모델과 AI 애플리케이션을 학습 및 배포하고 AI 기반 애플리케이션에서 사용할 대규모 언어 모델(LLM)을 맞춤설정할 수 있게 해주는 머신러닝(ML) 플랫폼입니다. Vertex AI 플랫폼을 통해 초보자부터 전문가까지 다양한 수준의 머신러닝 사용자를 지원하며, 모델 유형에 관계없이 효율적인 AI 개발을 가능하게 합니다.
Vertex AI 커스텀 학습 컨테이너는 사용자가 직접 구성한 컨테이너 이미지로, 학습 코드, 라이브러리, 실행 환경을 완전히 제어할 수 있습니다. 이를 통해 특수한 라이브러리나 환경 설정, 커스텀 실행 방식 등을 자유롭게 구성하여 나만의 학습 프로세스를 구축할 수 있습니다.
Vertex에서 커스텀 학습 컨테이너를 생성하고 학습을 실행해보는 방법을 알아보도록 하겠습니다.
VertexAI 사전 구성
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 생성하기
https://every-up.tistory.com/107
[GCP] VertexAI Workbench 생성하기
[GCP] VertexAI Workbench 생성하기GCP에서 제공하는 Vertex AI는 ML 모델과 AI 애플리케이션을 학습 및 배포하고 AI 기반 애플리케이션에서 사용할 대규모 언어 모델(LLM)을 맞춤설정할 수 있게 해주는 머신
every-up.tistory.com
[GCP] VertexAI Custom Training Job 간단 구성하기
https://every-up.tistory.com/108
[GCP] VertexAI Custom Training Job 간단 구성하기
[GCP] VertexAI Custom Training Job 간단 구성하기GCP에서 제공하는 Vertex AI는 ML 모델과 AI 애플리케이션을 학습 및 배포하고 AI 기반 애플리케이션에서 사용할 대규모 언어 모델(LLM)을 맞춤설정할 수 있게
every-up.tistory.com
커스텀 학습 컨테이너 생성
기본 작업
기본 작업은 'VertexAI Custom Training Job 간단 구성하기' 작업의 '작업3'번까지 진행합니다.
작업 4 - Dockerfile 및 entrypoint.sh 파일 생성
Vertex AI에서 커스텀 학습 컨테이너를 사용하려면, 학습 환경(학습 코드, 라이브러리, 실행 환경 등)을 담은 컨테이너 이미지를 직접 만들어야 합니다. Vertex AI는 컨테이너 이미지의 실행만을 지원하며 내부 명령어를 자동으로 알지 못하므로 컨테이너 이미지에 학습 환경을 사전에 구성해야 되는 것입니다.
Dockerfile 파일을 생성하여 학습 환경을 정의하고 entrypoint.sh 파일을 생성하여 컨테이너 실행 시 해야 할 작업(복사, 학습, 업로드 등)을 정의합니다.
# 작업 4 - Dockerfile 및 entrypoint.sh 파일 생성
from pathlib import Path
# Dockerfile 내용
dockerfile_content = '''\
# 베이스 이미지: PyTorch GPU 기반
FROM gcr.io/deeplearning-platform-release/pytorch-gpu.1-12:latest
# 작업 디렉토리 생성
WORKDIR /app
# 필요한 패키지 설치
RUN apt-get update && \\
apt-get install -y git gcc curl && \\
pip install --upgrade pip
# YOLOv5 클론 및 의존성 설치
RUN git clone https://github.com/ultralytics/yolov5.git && \\
cd yolov5 && \\
pip install -r requirements.txt
# 진입점 스크립트 복사 (추후 작성)
COPY entrypoint.sh /app/entrypoint.sh
RUN chmod +x /app/entrypoint.sh
# 엔트리포인트 지정
ENTRYPOINT ["/app/entrypoint.sh"]
'''
# Entrypoint 스크립트 템플릿
entrypoint_content = '''\
#!/bin/bash
set -e
BUCKET_NAME="test-coco-dataset-bucket"
cd /app/yolov5
# 데이터 및 설정 다운로드 (사용자가 BUCKET_NAME을 수정해야 함)
gsutil -m cp -r gs://${BUCKET_NAME}/coco/coco128/coco128 .
gsutil -m cp gs://${BUCKET_NAME}/coco/coco128.yaml .
gsutil -m cp gs://${BUCKET_NAME}/coco/train.py .
# 학습 실행
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/
'''
# 파일 생성
Path("Dockerfile").write_text(dockerfile_content)
Path("entrypoint.sh").write_text(entrypoint_content)
print("✅ Dockerfile 및 entrypoint.sh 파일이 생성되었습니다.")
작업 5 - 학습용 컨테이너 이미지 생성
학습 환경(학습 코드, 라이브러리, 실행 환경 등)을 정의한 Dockerfile을 사용하여 컨테이너 이미지를 생성하고, Vertex AI에서 사용할 수 있도록 컨테이너 레지스트리에 이미지를 등록합니다.
# 작업 5 - 학습용 컨테이너 이미지 생성
import subprocess
# 컨테이너 변수 설정
REPO_NAME="training-repo"
IMAGE_NAME = "yolo-train"
IMAGE_URI = f"{REGION}-docker.pkg.dev/{PROJECT_ID}/{REPO_NAME}/{IMAGE_NAME}:latest"
# Docker 빌드 실행 (현재 디렉토리에 Dockerfile, entrypoint.sh 존재해야 함)
subprocess.run(["docker", "build", "-t", IMAGE_URI, "."], check=True)
# 레포지토리 생성
!gcloud artifacts repositories create {REPO_NAME} \
--repository-format=docker \
--location={REGION} \
# Docker 인증
!gcloud auth configure-docker {REGION}-docker.pkg.dev
# Docker 이미지 푸시
subprocess.run(["docker", "push", IMAGE_URI], check=True)
작업 6 - Custom Training Job 실행
Google Cloud의 AI 관련 서비스(Google Vertex AI, AutoML, AI Platform 등)를 관리할 수 있는 gcloud ai
명령어를 사용하여 Custom Training Job을 실행합니다. gcloud ai custom-jobs create
명령어와 사전에 생성한 컨테이너 이미지를 선택하여 실행합니다.
해당 컨테이너 이미지에는 학습에 필요한 학습 데이터, 학습 환경, 학습 코드, 실행 명령어 등이 이미 구축되어 있으므로 별도의 환경 변수 설정은 필요 없습니다.
# 작업 6 - 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={IMAGE_URI}
명령어 실행 시 아래와 같이 Custom Training Job 생성에 대한 로그가 출력됩니다.
Using endpoint [https://us-central1-aiplatform.googleapis.com/]
CustomJob [projects/123412341234/locations/us-central1/customJobs/3600309885524246528] 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/3600309885524246528
or continue streaming the logs with the command
$ gcloud ai custom-jobs stream-logs projects/123412341234/locations/us-central1/customJobs/3600309885524246528
커스텀 학습 컨테이너 실행
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에서 커스텀 학습 컨테이너를 생성하고 학습을 실행해보는 방법에 대해 확인해봤는데요.
Dockerfile 파일을 생성하여 학습 환경을 정의하고 entrypoint.sh 파일을 생성하여 컨테이너 실행 시 해야 할 작업(복사, 학습, 업로드 등)을 정의합니다. 커스텀 학습 컨테이너 이미지 생성하고 Vertex AI에서 사용할 수 있도록 컨테이너 레지스트리에 이미지를 등록합니다. 별도의 환경 변수 설정 없이 gcloud ai custom-jobs create 명령어를 사용해 학습을 수행합니다. 학습된 모델(best.pt, last.pt)을 GCS 버킷에서 확인할 수 있으며 Vertex AI 관리 페이지에서 Custom Training Job의 상태, 리소스 사용량, 로그 등을 모니터링할 수 있습니다.
커스텀 학습 컨테이너를 통해 다양한 기계 학습 환경과 작업 등을 구축 및 관리하여 기계학습을 사용해보시기 바랍니다....! 끝...!
유익하게 보셨다면 공감을 눌러주고, 댓글로 의견을 공유해 남겨주시면 감사하겠습니다!
[Reference]
https://cloud.google.com/vertex-ai/docs/training/containers-overview?hl=ko
'GCP' 카테고리의 다른 글
[GCP] VertexAI Custom Training Job 간단 구성하기 (2) | 2025.04.07 |
---|---|
[GCP] VertexAI Workbench 생성하기 (0) | 2025.03.31 |
[GCP] VertexAI 알아보기 (0) | 2025.03.25 |