Tutorial Lengkap Vertex AI: Platform ML Terpadu Google Cloud

# Tutorial Lengkap Vertex AI: Platform ML Terpadu di Google Cloud Vertex AI adalah platform machine learning terpadu Google Cloud yang menggabungkan semua layanan ML Google Cloud. Platform ini menyed...

By Ruby Abdullah · · tutorial
GCPVertex AIMLOpsCloud MLPythonMachine Learning

Tutorial Lengkap Vertex AI: Platform ML Terpadu di Google Cloud

Vertex AI adalah platform machine learning terpadu Google Cloud yang menggabungkan semua layanan ML Google Cloud. Platform ini menyediakan tools untuk membangun, mendeploy, dan menskalakan model ML dengan AutoML dan custom training.

Mengapa Vertex AI?

Manfaat Utama:
  • Platform terpadu: Semua tools ML dalam satu tempat
  • AutoML: Pembuatan model tanpa kode
  • Custom training: Kontrol penuh dengan kode custom
  • MLOps: Built-in pipelines dan monitoring
  • Scalable: Infrastruktur enterprise-grade

Komponen Utama:
  • Datasets
  • Training (AutoML dan Custom)
  • Model Registry
  • Endpoints
  • Pipelines
  • Feature Store
  • Experiments

Prerequisites

pip install google-cloud-aiplatform

Autentikasi

gcloud auth login

gcloud config set project your-project-id

Setup

1. Inisialisasi Vertex AI

from google.cloud import aiplatform

aiplatform.init(

project="your-project-id",

location="us-central1",

stagingbucket="gs://your-bucket"

)

2. Aktifkan APIs

gcloud services enable aiplatform.googleapis.com

gcloud services enable compute.googleapis.com

gcloud services enable storage.googleapis.com

Datasets

1. Buat Tabular Dataset

from google.cloud import aiplatform

Buat dari BigQuery

dataset = aiplatform.TabularDataset.create(

displayname="customer-churn-dataset",

bqsource="bq://project.dataset.table"

)

Buat dari GCS

dataset = aiplatform.TabularDataset.create(

displayname="customer-churn-dataset",

gcssource="gs://bucket/data/train.csv"

)

print(f"Dataset dibuat: {dataset.resourcename}")

2. Buat Image Dataset

# Buat image dataset

imagedataset = aiplatform.ImageDataset.create(

displayname="product-images",

gcssource="gs://bucket/images/",

importschemauri=aiplatform.schema.dataset.ioformat.image.singlelabelclassification

)

3. Buat Text Dataset

# Buat text dataset

textdataset = aiplatform.TextDataset.create(

displayname="sentiment-dataset",

gcssource="gs://bucket/text/data.jsonl",

importschemauri=aiplatform.schema.dataset.ioformat.text.singlelabelclassification

)

AutoML Training

1. AutoML Tabular

# Buat AutoML tabular training job

job = aiplatform.AutoMLTabularTrainingJob(

displayname="churn-automl",

optimizationpredictiontype="classification",

optimizationobjective="maximize-au-roc"

)

Train model

model = job.run(

dataset=dataset,

targetcolumn="churn",

trainingfractionsplit=0.8,

validationfractionsplit=0.1,

testfractionsplit=0.1,

budgetmillinodehours=1000,

modeldisplayname="churn-model"

)

print(f"Model ditraining: {model.resourcename}")

2. AutoML Image Classification

# Buat AutoML image training job

job = aiplatform.AutoMLImageTrainingJob(

displayname="image-classifier",

predictiontype="classification",

multilabel=False

)

Train model

model = job.run(

dataset=imagedataset,

trainingfractionsplit=0.8,

validationfractionsplit=0.1,

testfractionsplit=0.1,

budgetmillinodehours=8000,

modeldisplayname="product-classifier"

)

3. AutoML Text Classification

# Buat AutoML text training job

job = aiplatform.AutoMLTextTrainingJob(

displayname="sentiment-classifier",

predictiontype="classification",

multilabel=False

)

Train model

model = job.run(

dataset=textdataset,

trainingfractionsplit=0.8,

validationfractionsplit=0.1,

testfractionsplit=0.1,

modeldisplayname="sentiment-model"

)

Custom Training

1. Custom Training Job

from google.cloud import aiplatform

Definisikan custom training job

job = aiplatform.CustomTrainingJob(

displayname="custom-sklearn-training",

scriptpath="train.py",

containeruri="us-docker.pkg.dev/vertex-ai/training/sklearn-cpu.1-0:latest",

requirements=["pandas", "scikit-learn"],

modelservingcontainerimageuri="us-docker.pkg.dev/vertex-ai/prediction/sklearn-cpu.1-0:latest"

)

Jalankan training

model = job.run(

dataset=dataset,

modeldisplayname="sklearn-model",

machinetype="n1-standard-4",

replicacount=1,

args=["--epochs", "100", "--batch-size", "32"]

)

2. Training Script

# train.py

import argparse

import os

import pandas as pd

from sklearn.ensemble import RandomForestClassifier

from sklearn.modelselection import traintestsplit

from sklearn.metrics import accuracyscore

import joblib

from google.cloud import storage

def main():

parser = argparse.ArgumentParser()

parser.addargument("--epochs", type=int, default=100)

parser.addargument("--batch-size", type=int, default=32)

args = parser.parseargs()

# Load data dari environment variable

trainingdatauri = os.environ.get("AIPTRAININGDATAURI")

df = pd.readcsv(trainingdatauri)

X = df.drop("target", axis=1)

y = df["target"]

Xtrain, Xtest, ytrain, ytest = traintestsplit(

X, y, testsize=0.2, randomstate=42

)

# Train model

model = RandomForestClassifier(nestimators=args.epochs)

model.fit(Xtrain, ytrain)

# Evaluasi

predictions = model.predict(Xtest)

accuracy = accuracyscore(ytest, predictions)

print(f"Accuracy: {accuracy}")

# Simpan model

modeldir = os.environ.get("AIPMODELDIR")

joblib.dump(model, os.path.join(modeldir, "model.joblib"))

if name == "main":

main()

3. Custom Container Training

# Definisikan custom container training job

job = aiplatform.CustomContainerTrainingJob(

displayname="pytorch-training",

containeruri="gcr.io/your-project/pytorch-training:latest",

modelservingcontainerimageuri="gcr.io/your-project/pytorch-serving:latest"

)

Jalankan training

model = job.run(

dataset=dataset,

modeldisplayname="pytorch-model",

machinetype="n1-standard-8",

acceleratortype="NVIDIATESLAV100",

acceleratorcount=1,

replicacount=1

)

4. Dockerfile untuk Custom Container

FROM pytorch/pytorch:1.9.0-cuda10.2-cudnn7-runtime

WORKDIR /app

COPY requirements.txt .

RUN pip install -r requirements.txt

COPY train.py .

ENTRYPOINT ["python", "train.py"]

Hyperparameter Tuning

1. Definisikan Hyperparameter Tuning Job

from google.cloud import aiplatform

from google.cloud.aiplatform import hyperparametertuning as hpt

Definisikan hyperparameter spec

parameterspec = {

"learningrate": hpt.DoubleParameterSpec(min=0.001, max=0.1, scale="log"),

"numlayers": hpt.DiscreteParameterSpec(values=[2, 4, 6, 8], scale="linear"),

"dropout": hpt.DoubleParameterSpec(min=0.0, max=0.5, scale="linear")

}

Definisikan metric spec

metricspec = {"accuracy": "maximize"}

Buat hyperparameter tuning job

job = aiplatform.HyperparameterTuningJob(

displayname="hpt-training",

customjob=aiplatform.CustomJob(

displayname="hpt-custom-job",

workerpoolspecs=[{

"machinespec": {"machinetype": "n1-standard-4"},

"replicacount": 1,

"containerspec": {

"imageuri": "gcr.io/your-project/training:latest",

"args": []

}

}]

),

metricspec=metricspec,

parameterspec=parameterspec,

maxtrialcount=20,

paralleltrialcount=4,

searchalgorithm="random"

)

Jalankan job

job.run()

Model Registry

1. Upload Model

# Upload model ke registry

model = aiplatform.Model.upload(

displayname="sklearn-model",

artifacturi="gs://bucket/models/sklearn/",

servingcontainerimageuri="us-docker.pkg.dev/vertex-ai/prediction/sklearn-cpu.1-0:latest"

)

print(f"Model diupload: {model.resourcename}")

2. List Models

# List semua models

models = aiplatform.Model.list()

for m in models:

print(f"{m.displayname}: {m.resourcename}")

Dapatkan model spesifik

model = aiplatform.Model("projects/123/locations/us-central1/models/456")

print(f"Model: {model.displayname}")

3. Model Versioning

# Upload versi baru

newversion = aiplatform.Model.upload(

displayname="sklearn-model",

artifacturi="gs://bucket/models/sklearn-v2/",

servingcontainerimageuri="us-docker.pkg.dev/vertex-ai/prediction/sklearn-cpu.1-0:latest",

parentmodel=model.resourcename

)

Endpoints dan Deployment

1. Buat Endpoint

# Buat endpoint

endpoint = aiplatform.Endpoint.create(

displayname="prediction-endpoint",

description="Production endpoint untuk predictions"

)

print(f"Endpoint dibuat: {endpoint.resourcename}")

2. Deploy Model

# Deploy model ke endpoint

endpoint.deploy(

model=model,

deployedmodeldisplayname="sklearn-deployed",

machinetype="n1-standard-4",

minreplicacount=1,

maxreplicacount=5,

trafficpercentage=100,

sync=True

)

print("Model dideploy")

3. Buat Predictions

# Online prediction

instances = [

{"feature1": 1.0, "feature2": 2.0, "feature3": 3.0},

{"feature1": 4.0, "feature2": 5.0, "feature3": 6.0}

]

predictions = endpoint.predict(instances=instances)

print(f"Predictions: {predictions.predictions}")

4. Batch Prediction

# Buat batch prediction job

batchjob = model.batchpredict(

jobdisplayname="batch-prediction",

gcssource="gs://bucket/batch-input/",

gcsdestinationprefix="gs://bucket/batch-output/",

machinetype="n1-standard-4",

startingreplicacount=2,

maxreplicacount=10

)

batchjob.wait()

print(f"Batch prediction selesai: {batchjob.outputinfo}")

Experiments dan Tracking

1. Buat Experiment

# Inisialisasi experiment

aiplatform.init(experiment="my-experiment")

Mulai run

aiplatform.startrun("run-1")

Log parameters

aiplatform.logparams({

"learningrate": 0.01,

"epochs": 100,

"batchsize": 32

})

Log metrics

aiplatform.logmetrics({

"accuracy": 0.95,

"f1score": 0.93

})

Akhiri run

aiplatform.endrun()

2. Compare Runs

# Dapatkan experiment

experiment = aiplatform.Experiment("my-experiment")

Dapatkan semua runs

runsdf = experiment.getdataframe()

print(runsdf[["runname", "accuracy", "learningrate"]])

Best Practices

1. Resource Management

# Gunakan context manager untuk cleanup

with aiplatform.init(project="project", location="us-central1"):

# Kode ML Anda di sini

pass

Hapus resources setelah selesai

endpoint.undeployall()

endpoint.delete()

model.delete()

2. Optimasi Biaya

# Gunakan preemptible VMs untuk training

job = aiplatform.CustomTrainingJob(

displayname="cost-optimized-training",

scriptpath="train.py",

containeruri="training-container"

)

model = job.run(

machinetype="n1-standard-4",

replicacount=1,

bootdisktype="pd-ssd",

bootdisksize_gb=100

)

Kesimpulan

Vertex AI menyediakan:

  • Platform terpadu: Semua tools ML bersama
  • AutoML: Pembuatan model tanpa kode
  • Custom training: Fleksibilitas penuh
  • MLOps: Pipelines dan monitoring
  • Scalability: Infrastruktur enterprise
  • Key takeaways:

    • Gunakan AutoML untuk prototyping cepat
    • Gunakan custom training untuk kontrol
    • Register models untuk versioning
    • Deploy ke managed endpoints
    • Track experiments secara sistematis

    Artikel Terkait

    Tutorial Lengkap Azure Machine Learning: End-to-End ML Platform

    Tutorial Lengkap Azure Machine Learning: ML End-to-End di Azure Azure Machine Learning adalah platform berbasis cloud un...

    Tutorial Lengkap AWS SageMaker: Machine Learning di Cloud

    Tutorial Lengkap AWS SageMaker: End-to-End ML Pipeline Amazon SageMaker adalah layanan machine learning terkelola penuh ...

    Tutorial Lengkap Comet ML: Platform MLOps untuk Experiment Tracking dan Model Management

    Tutorial Lengkap Comet ML: Platform MLOps untuk Experiment Tracking dan Model Management Dalam dunia machine learning mo...

    Tutorial Vertex AI Model Monitoring: Observabilitas Model Produksi

    Tutorial Lengkap Vertex AI Model Monitoring: Monitoring ML Berkelanjutan Vertex AI Model Monitoring secara otomatis mend...