ABOUT ME

aiagentx 님의 블로그 입니다.

Today
Yesterday
Total
  • Google Cloud 머신러닝 (Vertex AI 기반 모델 학습/배포)
    Cloud 2025. 5. 29. 09:39
    728x90
    SMALL

    GCP에서는 머신러닝(ML)을 위한 다양한 서비스와 도구를 제공합니다. Vertex AI는 2021년에 도입된 통합 ML 플랫폼으로, 이전에 개별 제공되던 AI Platform 기능(모델 학습, 예측 서비스 등)을 모두 아우릅니다. 여기서는 Vertex AI를 중심으로, GCP에서 머신러닝 모델을 학습시키고 배포하는 방법을 설명합니다. 또한 간단히 사전 구축된 ML API도 소개합니다 (코드를 통해 바로 활용 가능한 Vision AI 등).

    Vertex AI 개요 및 필요한 서비스

    필요한 서비스: Vertex AI (및 관련 AI Platform 서비스).
    개념: Vertex AI는 데이터 준비부터 모델 개발, 훈련, 배포까지 ML 워크플로우 전반을 지원하는 통합 머신러닝 플랫폼입니다cloud.google.com. 이를 통해 사용자들은 공통된 도구 세트로 협업하고, Google Cloud 인프라의 이점을 활용해 애플리케이션을 확장할 수 있습니다cloud.google.com. Vertex AI에서는 다음과 같은 방식을 제공하여 모델을 만들고 배포할 수 있습니다:

    • AutoML: 코드 작성 없이도 테이블 데이터, 이미지, 텍스트, 동영상 등의 자동 모델 훈련이 가능합니다cloud.google.com. 사용자는 GUI나 간단한 API 호출로 학습 데이터를 업로드하고 AutoML이 최적 모델을 찾아줍니다. 이렇게 생성된 모델은 Vertex AI 내에 등록되며, 원하면 온라인 예측 서비스로 배포하거나 배치 예측을 수행할 수 있습니다cloud.google.com.
    • 커스텀 모델 훈련: 사용자가 직접 작성한 파이썬 ML 코드(예: TensorFlow, PyTorch 등)를 Vertex AI의 훈련 작업으로 제출할 수 있습니다cloud.google.com. Vertex AI는 GCP상에서 CPU/GPU/TPU 클러스터를 생성하여 코드를 실행하고, 완료된 모델을 모델 레지스트리에 저장합니다. 그리고 이렇게 만든 모델을 **엔드포인트(endpoint)**에 배포해 온라인 예측을 제공하거나, 필요한 경우 대량 예측 작업을 실행할 수도 있습니다cloud.google.com. 이 모든 과정을 Python SDK 또는 gcloud CLI로 제어할 수 있습니다.
    • 기타: Vertex AI에는 Model Garden(미리 학습된 유명 모델들을 바로 활용)cloud.google.com이나 Vertex AI Workbench(Jupyter 기반 노트북 환경), Feature Store 등 고급 기능도 있지만, 초보 단계에선 주로 위 AutoML이나 커스텀 모델 훈련/배포를 주로 활용하게 될 것입니다.

    사전 구축 ML API: 만약 직접 모델을 학습시키지 않고 바로 AI 기능을 쓰고 싶다면, GCP는 Vision AI(이미지 인식), Cloud Natural Language(텍스트 분석), Cloud Speech-to-Text 등 여러 AI API를 제공합니다. 이들은 미리 학습된 구글의 ML 모델을 API 형태로 공개한 것으로, Python으로 쉽게 호출하여 결과를 얻을 수 있습니다. 예를 들어, Vision API를 사용해 이미지의 라벨을 추출하는 Python 코드는 다음과 같습니다:

    python
    CopyEdit
    from google.cloud import vision client = vision.ImageAnnotatorClient() with open("local-image.jpg", "rb") as f: content = f.read() image = vision.Image(content=content) response = client.label_detection(image=image) for label in response.label_annotations: print(label.description, "(", label.score, ")")

    위 코드는 로컬 이미지 파일을 읽어 Vision API의 라벨 검출을 요청한 후, 응답으로 받은 라벨들과 신뢰도를 출력합니다. 이러한 AI API들은 별도 모델 학습 없이 바로 활용 가능하므로, 초보자도 금방 적용해볼 수 있는 장점이 있습니다. (이들 API 사용에도 프로젝트에서 해당 API를 활성화하고 인증 설정이 필요합니다.)

    Vertex AI를 Python에서 활용하기 (모델 학습 및 배포)

    Vertex AI의 기능을 Python으로 제어하려면 Google Cloud AI Platform Python SDK(이전 명칭) 또는 **Vertex AI Python SDK (google-cloud-aiplatform 라이브러리)**를 사용하면 됩니다cloud.google.comcloud.google.com. 이 SDK를 통해 데이터셋 생성, 실험(Experiments), 모델 학습(Job), 모델 등록(Model.upload), 그리고 엔드포인트 배포까지 대부분 작업을 프로그래밍으로 할 수 있습니다cloud.google.com. 아래에는 간단한 커스텀 모델 배포 예시를 보여드립니다.

    예시 시나리오: 이미 로컬에서 학습된 사이킷런(scikit-learn) 모델을 GCP에 배포하는 경우:

    1. 먼저 해당 모델을 GCP에 업로드해야 합니다. 일반적으로 Cloud Storage 버킷에 모델 파일(예: model.pkl 또는 TensorFlow SavedModel 디렉터리)을 저장합니다.
    2. 그런 다음 Vertex AI SDK를 써서 그 모델을 모델 리소스로 등록하고, 엔드포인트에 배포합니다.

    Python 코드는 다음과 같이 작성할 수 있습니다:

    python
    CopyEdit
    from google.cloud import aiplatform aiplatform.init(project="my-project-id", location="us-central1") # Vertex AI에 모델 업로드 (모델 등록) model = aiplatform.Model.upload( display_name="my-sklearn-model", # 모델 이름 artifact_uri="gs://my-bucket/path/to/model-artifacts/", # 모델 파일이 저장된 GCS 경로 serving_container_image_uri="us-docker.pkg.dev/vertex-ai/prediction/sklearn-cpu.1-0:latest" ) # 엔드포인트에 모델 배포 (온라인 예측용) endpoint = model.deploy(machine_type="n1-standard-2") print(f"모델이 엔드포인트에 배포되었습니다: {endpoint.resource_name}")

    위 코드에서 aiplatform.Model.upload 함수를 통해 Cloud Storage에 있는 모델 아티팩트를 Vertex AI에 모델로 등록하고 있습니다supertype.ai. serving_container_image_uri 매개변수는 해당 모델을 서빙하기 위한 프리빌트 컨테이너 이미지를 지정하는 것으로, 사이킷런 1.0 버전용 이미지를 사용한 예시입니다 (Vertex AI가 지원하는 표준 예측 이미지 목록 중 선택)supertype.ai. 모델이 성공적으로 업로드되면 model 객체로 반환되고, 이어서 model.deploy()를 호출하여 엔드포인트에 배포합니다supertype.aisupertype.ai. machine_type은 예측 서비스에 할당할 노드의 종류를 지정하는데, n1-standard-2는 2 vCPU/7.5GB RAM의 머신 타입 예시입니다. 배포가 완료되면 해당 엔드포인트 리소스 이름이 출력되고, 이 Endpoint는 곧바로 온라인 예측 API를 통해 요청을 받을 준비가 됩니다. 예측 요청은 endpoint.predict(instances=입력데이터) 형태로 SDK를 통해 호출하거나 REST API로도 보낼 수 있습니다.

    주의사항: Vertex AI를 사용할 때 몇 가지 유의할 점이 있습니다:

    • 비용: Vertex AI의 AutoML이든 커스텀 훈련이든 CPU/GPU 리소스 사용량에 따라 비용이 빠르게 증가할 수 있습니다. 무료 크레딧 내에서 실험하되, 특히 GPU/TPU 사용은 요금이 높으니 꼭 필요한 경우에만 쓰세요. 또한 모델 엔드포인트를 배포하면 해당 머신 리소스를 계속 사용하므로, 사용이 끝난 모델은 엔드포인트를 undeploy하거나 삭제해야 불필요한 과금이 발생하지 않습니다 (엔드포인트를 내리지 않으면 시간당 요금 부과)supertype.aisupertype.ai. 예를 들어 간단한 테스트 후에는 model.delete() 또는 Endpoint 콘솔에서 배포 해제를 하세요.
    • 권한: Vertex AI 서비스에서는 서비스 계정을 통해 작업이 수행됩니다. 기본적으로 프로젝트의 Vertex AI 서비스 계정이 적절한 권한을 가지고 있어야 하며, 특히 Cloud Storage 리소스에 접근하려면 해당 경로가 동일 프로젝트에 있거나 IAM 권한이 공유되어야 합니다. 일반적인 경우 aiplatform.init() 시 기본 서비스 계정이 사용되므로 큰 문제는 없지만, 권한 오류 발생 시 서비스 계정 설정을 확인해야 합니다supertype.aisupertype.ai.
    • 지역 한정: Vertex AI 리소스(모델, 엔드포인트 등)는 Region 단위로 생성됩니다. init(project, location="us-central1")에서 지정한 리전 내에서만 유효하므로, 리전을 프로젝트의 다른 리전과 혼용할 경우 모델을 찾지 못하는 일이 없도록 주의하세요. 또한 사용하려는 리전에 해당 기능(GPU 지원 등)이 제공되는지도 사전에 문서에서 확인이 필요합니다.
    • AI Platform vs Vertex AI: 이전 GCP에는 AI Platform이라는 이름으로 모델 학습(Training) 및 예측(Prediction) 서비스가 제공되었습니다. Vertex AI로 통합된 현재는 동일 기능을 제공하지만, 만약 참조하는 자료에 AI Platform이라는 용어가 나오면 Vertex AI의 일부 기능으로 이해하면 됩니다. 예를 들어 AI Platform Notebooks는 현재 Vertex AI Workbench로, AI Platform Prediction 서비스는 Vertex AI의 엔드포인트 배포로 대체되었습니다. 기존 호환을 위해 gcloud ai-platform 명령이나 일부 API는 남아 있으나, 신규 프로젝트에서는 Vertex AI 인터페이스를 사용하는 것을 권장합니다.
    728x90
Designed by Tistory.