Complete Vertex AI Tutorial: Google Cloud Unified ML Platform

# 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

Complete Vertex AI Tutorial: Unified ML Platform on Google Cloud

Vertex AI is Google Cloud's unified machine learning platform that brings together all Google Cloud's ML services. It provides tools for building, deploying, and scaling ML models with AutoML and custom training.

Why Vertex AI?

Key Benefits:
  • Unified platform: All ML tools in one place
  • AutoML: No-code model building
  • Custom training: Full control with custom code
  • MLOps: Built-in pipelines and monitoring
  • Scalable: Enterprise-grade infrastructure

Core Components:
  • Datasets
  • Training (AutoML and Custom)
  • Model Registry
  • Endpoints
  • Pipelines
  • Feature Store
  • Experiments

Prerequisites

pip install google-cloud-aiplatform

Authenticate

gcloud auth login

gcloud config set project your-project-id

Setup

1. Initialize Vertex AI

from google.cloud import aiplatform

aiplatform.init(

project="your-project-id",

location="us-central1",

stagingbucket="gs://your-bucket"

)

2. Enable APIs

gcloud services enable aiplatform.googleapis.com

gcloud services enable compute.googleapis.com

gcloud services enable storage.googleapis.com

Datasets

1. Create Tabular Dataset

from google.cloud import aiplatform

Create from BigQuery

dataset = aiplatform.TabularDataset.create(

displayname="customer-churn-dataset",

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

)

Create from GCS

dataset = aiplatform.TabularDataset.create(

displayname="customer-churn-dataset",

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

)

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

2. Create Image Dataset

# Create image dataset

imagedataset = aiplatform.ImageDataset.create(

displayname="product-images",

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

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

)

3. Create Text Dataset

# Create 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

# Create 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 trained: {model.resourcename}")

2. AutoML Image Classification

# Create 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

# Create 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

Define 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"

)

Run 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 from 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)

# Evaluate

predictions = model.predict(Xtest)

accuracy = accuracyscore(ytest, predictions)

print(f"Accuracy: {accuracy}")

# Save model

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

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

if name == "main":

main()

3. Custom Container Training

# Define 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"

)

Run training

model = job.run(

dataset=dataset,

modeldisplayname="pytorch-model",

machinetype="n1-standard-8",

acceleratortype="NVIDIATESLAV100",

acceleratorcount=1,

replicacount=1

)

4. Dockerfile for 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. Define Hyperparameter Tuning Job

from google.cloud import aiplatform

from google.cloud.aiplatform import hyperparametertuning as hpt

Define 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")

}

Define metric spec

metricspec = {"accuracy": "maximize"}

Create 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"

)

Run job

job.run()

Model Registry

1. Upload Model

# Upload model to 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 uploaded: {model.resourcename}")

2. List Models

# List all models

models = aiplatform.Model.list()

for m in models:

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

Get specific model

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

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

3. Model Versioning

# Upload new version

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 and Deployment

1. Create Endpoint

# Create endpoint

endpoint = aiplatform.Endpoint.create(

displayname="prediction-endpoint",

description="Production endpoint for predictions"

)

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

2. Deploy Model

# Deploy model to endpoint

endpoint.deploy(

model=model,

deployedmodeldisplayname="sklearn-deployed",

machinetype="n1-standard-4",

minreplicacount=1,

maxreplicacount=5,

trafficpercentage=100,

sync=True

)

print("Model deployed")

3. Make 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

# Create 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 complete: {batchjob.outputinfo}")

Experiments and Tracking

1. Create Experiment

# Initialize experiment

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

Start 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

})

End run

aiplatform.endrun()

2. Compare Runs

# Get experiment

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

Get all runs

runsdf = experiment.getdataframe()

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

Best Practices

1. Resource Management

# Use context manager for cleanup

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

# Your ML code here

pass

Delete resources when done

endpoint.undeployall()

endpoint.delete()

model.delete()

2. Cost Optimization

# Use preemptible VMs for 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

)

Conclusion

Vertex AI provides:

  • Unified platform: All ML tools together
  • AutoML: No-code model building
  • Custom training: Full flexibility
  • MLOps: Pipelines and monitoring
  • Scalability: Enterprise infrastructure
  • Key takeaways:

    • Use AutoML for quick prototyping
    • Use custom training for control
    • Register models for versioning
    • Deploy to managed endpoints
    • Track experiments systematically

    Related Articles

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

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

    Complete AWS SageMaker Tutorial: Machine Learning in the Cloud

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

    Complete Comet ML Tutorial: MLOps Platform for Experiment Tracking and Model Management

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

    Vertex AI Model Monitoring Tutorial: Production Model Observability

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