Een praktische gids voor GCP Vertex AI Serverless Endpoints: Van nul tot productie

Het uitrollen van machine learning-modellen voor real-time inferentie kan complex zijn, maar GCP Vertex AI Serverless Endpoints bieden een volledig beheerde, schaalbare oplossing. Deze praktische gids beschrijft hoe ik modellen provisioneer, implementeer en aanroep met behulp van Terraform, de Python SDK en de gcloud CLI voor efficiënte en kosteneffectieve AI-levering.

Een praktische gids voor GCP Vertex AI Serverless Endpoints: Van nul tot productie
TL;DR

Het uitrollen van machine learning-modellen voor real-time inferentie kan complex zijn, maar GCP Vertex AI Serverless Endpoints bieden een volledig beheerde, schaalbare oplossing. Deze praktische gids beschrijft hoe ik modellen provisioneer, implementeer en aanroep met behulp van Terraform, de Python SDK en de gcloud CLI voor efficiënte en kosteneffectieve AI-levering.

Vereisten

Tegenwoordig moeten organisaties navigeren door de complexiteit van het verplaatsen van AI-workloads naar de cloud, en één thema herhaalt zich: de "last mile" van implementatie is vaak de grootste hindernis. Teams bouwen briljante modellen, maar het betrouwbaar, schaalbaar en kostenefficiënt in productie brengen ervan wordt een grote operationele last. Aangepaste inferentie-infrastructuur, in het bijzonder, verandert snel in een onderhoudsintensieve verplichting.

Dit is waar de Vertex AI Serverless Endpoints van GCP het speelveld veranderen. Dit gaat niet alleen over het via een API beschikbaar stellen van een model; het gaat over het doen met beheerde infrastructuur die on-demand schaalt en de operationele overhead minimaliseert. In deze praktische gids neem ik u mee door mijn proces voor het implementeren van een model met behulp van deze serverloze aanpak, waarbij ik ervoor zorg dat het klaar is om voorspellingen te leveren zonder dat u zich zorgen hoeft te maken over de onderliggende rekenkracht.

Het AI-implementatiedilemma

In enterprise-infrastructuur is het meest voorkomende faalpunt voor AI-initiatieven de 'last mile' – het krijgen van een model van een notebook naar een productieklare, schaalbare service. Briljante modellen verzamelen digitaal stof omdat de serving-laag een bijzaak is. Vertex AI Serverless Endpoints pakken dit direct aan door het complexe infrastructuurbeheer te abstraheren, waardoor uw team zich kan richten op modelprestaties en bedrijfsintegratie, waar de echte waarde ligt.

Voordat we verdergaan, configureert u eerst uw Google Cloud-omgeving. U hebt een GCP-project met ingeschakelde facturering en de juiste machtigingen nodig.

  • GCP-project: Een actief Google Cloud Project is vereist. Ik gebruik Europese regio's voor alle resources (europe-west1).
  • gcloud CLI: De Google Cloud SDK moet zijn geïnstalleerd en geconfigureerd. Ik raad altijd aan om de nieuwste stabiele versie te gebruiken. U kunt uw setup controleren met gcloud version.
  • Authenticatie: Authenticeer uw CLI en configureer uw project. Zorg ervoor dat u your-gcp-project-id vervangt door uw daadwerkelijke project-ID.
# Authenticeer met Google Cloud
gcloud auth login

# Stel uw project en standaardregio in
gcloud config set project your-gcp-project-id
gcloud config set compute/region europe-west1
  • Python 3.12+: We gebruiken de Vertex AI SDK voor Python om onze modelassets te beheren.
python3.12 --version
# Verwacht: Python 3.12.x
  • Vertex AI SDK voor Python: Installeer de benodigde clientbibliotheek. Op het moment van schrijven is 1.50.0 een solide, recente versie.
pip install google-cloud-aiplatform==1.50.0 scikit-learn==1.4.2

Architectuur en kernconcepten

Wanneer mensen praten over het implementeren van AI-modellen, verwarren ze vaak algemene API-serving met gespecialiseerde ML-model-serving. Dit is waar het begrijpen van het onderscheid tussen Google Cloud Endpoints en Vertex AI Endpoints cruciaal is.

Google Cloud Endpoints is een service voor het ontwikkelen, implementeren en beheren van RESTful en gRPC API's. Het is een API Gateway die voor services zoals App Engine of GKE zit en zaken als authenticatie, rate limiting en monitoring afhandelt voor algemene applicaties. Het gebruikt een OpenAPI-specificatie om het API-oppervlak te definiëren.

Vertex AI Endpoints daarentegen zijn speciaal gebouwd voor real-time machine learning-inferentie. Wanneer ik MLOps-systemen op GCP ontwerp, geef ik er prioriteit aan voor model-serving, omdat ze een volledig beheerde ervaring bieden:

  • Beheerde infrastructuur: Google beheert de onderliggende rekenkracht, schaalvergroting, patching en onderhoud. U provisioneert of beheert geen servers.
  • Intelligente autoscaling: Endpoints schalen van nul om pieken in het verkeer af te handelen en schalen weer terug om kosten te minimaliseren, allemaal automatisch.
  • Betaal-per-gebruik: Voor serverloze implementaties betaalt u voor de rekenkracht die wordt verbruikt tijdens voorspellingsverzoeken, niet voor inactieve instanties (hoewel een min-replica-count van 1 kosten met zich meebrengt).
  • Geïntegreerde MLOps: Ze zijn nauw geïntegreerd met het Vertex AI Modelregister voor versiebeheer en Cloud Monitoring voor metrics en logs.

Onze architectuurstroom is eenvoudig: we uploaden een getraind modelartefact naar het Vertex AI Modelregister, provisioneren een serverloze Endpoint-resource en implementeren vervolgens ons geregistreerde model naar dat endpoint. Het endpoint exposeert vervolgens een beveiligde voorspellings-API die clientapplicaties kunnen aanroepen.

Met deze basis gaan we van theorie naar praktijk.

Implementatiegids

Laten we aan de slag gaan. We implementeren een eenvoudig scikit-learn sentimentanalysemodel naar een Vertex AI Serverless Endpoint. Dit proces weerspiegelt een real-world workflow, van een lokaal artefact naar een schaalbare cloudservice.

Stap 1: Schakel de Vertex AI API in

Zorg er eerst voor dat de Vertex AI API is ingeschakeld in uw project.

# Schakel de Vertex AI API in
gcloud services enable aiplatform.googleapis.com

Deze bewerking kan een minuut of twee duren om te voltooien.

Stap 2: Maak een lokaal modelartefact

In een echt project zou u uw eigen getrainde model gebruiken. Voor deze gids trainen we een speelgoed-sentimentclassificatie. Een veelvoorkomende fout die ik zie, is het afzonderlijk pickelen van een model en de preprocessor (zoals een tokenizer of vectorizer). Dit creëert een afhankelijkheidsnachtmerrie tijdens de implementatie. De juiste aanpak is om ze te combineren in een enkel sklearn.pipeline.Pipeline-object en dat te pickelen.

Maak een bestand genaamd create_model.py:

# create_model.py
import pickle
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import Pipeline

# Voorbeeldgegevens
corpus = [
    "I love this product, it's amazing!",
    "This is terrible, I hate it.",
    "It's okay, nothing special.",
    "Absolutely fantastic experience."
]
labels = [1, 0, 0, 1]  # 1 voor positief, 0 voor negatief/neutraal

# Maak een scikit-learn pijplijn
# Dit bundelt de vectorizer en het model in een enkel artefact
pipeline = Pipeline([
    ('tfidf', TfidfVectorizer()),
    ('clf', LogisticRegression())
])

# Train de pijplijn
pipeline.fit(corpus, labels)

# Sla de hele pijplijn op in één bestand
with open('model.pkl', 'wb') as f:
    pickle.dump(pipeline, f)

print("Pijplijn opgeslagen als model.pkl")

Voer het script uit om uw model.pkl-bestand te genereren.

python3.12 create_model.py
# Verwachte uitvoer: Pijplijn opgeslagen als model.pkl

Stap 3: Provisioneer het Endpoint met Terraform

Ik sta op Infrastructuur als Code (IaC) voor alle cloudresources. Dit zorgt ervoor dat implementaties herhaalbaar, versiebeheerd en controleerbaar zijn. We gebruiken Terraform om ons Vertex AI Endpoint te definiëren.

Maak een main.tf-bestand:

# main.tf
terraform {
  required_providers {
    google = {
      source  = "hashicorp/google"
      version = ">= 4.50.0"
    }
  }
}

provider "google" {
  project = var.project_id
  region  = var.region
}

variable "project_id" {
  description = "De GCP project ID."
  type        = string
}

variable "region" {
  description = "De GCP regio voor Vertex AI resources."
  type        = string
  default     = "europe-west1"
}

resource "google_vertex_ai_endpoint" "sentiment_endpoint" {
  name         = "sentiment-analysis-endpoint"
  display_name = "Sentiment Analysis Serverless Endpoint"
  description  = "Beheerd serverloos eindpunt voor sentimentanalyse."
  project      = var.project_id
  location     = var.region

  labels = {
    environment = "production"
    service     = "sentiment-analysis"
  }
}

output "endpoint_resource_name" {
  description = "De volledige resourcenaam van het aangemaakte Vertex AI Endpoint."
  value       = google_vertex_ai_endpoint.sentiment_endpoint.name
}

Maak vervolgens een terraform.tfvars-bestand aan om uw projectspecifieke ID te bewaren. Vergeet niet de placeholder te vervangen door uw daadwerkelijke GCP-project-ID.

# terraform.tfvars
project_id = "your-gcp-project-id"

Initialiseer nu Terraform en pas de configuratie toe:

terraform init
terraform apply --auto-approve

Na een moment zal Terraform de volledige resourcenaam van uw endpoint uitvoeren. Noteer dit; u heeft het straks nodig.

Europa (West) — Terraform-module om te kopiëren (`europe-west4`)

Wil je hetzelfde patroon als in Stap 3, maar met europe-west4 (Nederland) als standaard, gebruik dan het onderstaande blok. europe-west1 (België) is een veelgebruikte alternatieve EU-westlocatie; zie Vertex AI-regio’s. Na terraform apply moeten GCS, Model Registry en de scripts in Stap 4–5 dezelfde regio gebruiken.

# ---------------------------------------------------------------------------
# Vertex AI online prediction endpoint — EU West (default: europe-west4)
# Locations: https://cloud.google.com/vertex-ai/docs/general/locations
# Provider: hashicorp/google — same pattern as Step 3 in this article.
# Upload and deploy the model (Steps 4–5) in the SAME region.
# ---------------------------------------------------------------------------

terraform {
  required_version = ">= 1.5.0"
  required_providers {
    google = {
      source  = "hashicorp/google"
      version = ">= 4.50.0"
    }
  }
}

provider "google" {
  project = var.project_id
  region  = var.region
}

variable "project_id" {
  description = "The GCP project ID."
  type        = string
}

variable "region" {
  description = "Vertex AI region (EU West). Default europe-west4 (Netherlands); europe-west1 (Belgium) is a common alternative."
  type        = string
  default     = "europe-west4"
}

resource "google_vertex_ai_endpoint" "sentiment_endpoint_eu" {
  name         = "sentiment-analysis-endpoint-euw4"
  display_name = "Sentiment Analysis Serverless Endpoint (EU)"
  description  = "Managed Vertex AI endpoint — EU West module (Terraform)."
  project      = var.project_id
  location     = var.region

  labels = {
    environment = "production"
    service     = "sentiment-analysis"
    eu_module   = "europe-west4"
  }
}

output "endpoint_resource_name" {
  description = "Full resource name of the Vertex AI endpoint (use in SDK / gcloud deploy steps)."
  value       = google_vertex_ai_endpoint.sentiment_endpoint_eu.name
}

Stap 4: Upload het model naar het Vertex AI Register

Met ons geprovisioneerde endpoint moeten we ons model registreren. We uploaden model.pkl naar een Google Cloud Storage (GCS) bucket en maken vervolgens een Model-resource in het Vertex AI Modelregister dat ernaar verwijst.

Maak eerst een GCS-bucket aan (als u er geen heeft) en upload uw model. Bucketnamen moeten wereldwijd uniek zijn.

# Vervang door uw unieke bucketnaam
BUCKET_NAME="your-unique-model-bucket-ew1"
PROJECT_ID=$(gcloud config get-value project)

gcloud storage buckets create gs://${BUCKET_NAME} --project=${PROJECT_ID} --location=europe-west1
gcloud storage cp model.pkl gs://${BUCKET_NAME}/sentiment_model/model.pkl

Nu gebruiken we de Python SDK om dit artefact als een nieuwe modelversie te registreren. We verwijzen Vertex AI naar een voorgebouwde scikit-learn serving-container, die weet hoe een gepickled model moet worden geladen en geserveerd.

Maak een bestand genaamd upload_model.py:

# upload_model.py
import os
from google.cloud import aiplatform

# --- Configuratie ---
# Werk deze bij met uw eigen waarden
PROJECT_ID = os.getenv("GCLOUD_PROJECT")
REGION = "europe-west1"
BUCKET_NAME = "your-unique-model-bucket-ew1" # De bucket die u zojuist hebt gemaakt
MODEL_DISPLAY_NAME = "sentiment-analysis-model"
# --- Einde Configuratie ---

# Het GCS-pad naar de directory die het modelartefact bevat
ARTIFACT_URI = f"gs://{BUCKET_NAME}/sentiment_model/"

# Officiële Google voorgebouwde container voor scikit-learn 1.4
SERVING_CONTAINER_IMAGE = "europe-docker.pkg.dev/vertex-ai/prediction/sklearn-cpu.1-4:latest"

# Initialiseer de Vertex AI SDK
aiplatform.init(project=PROJECT_ID, location=REGION)

# Upload het model naar het Vertex AI Modelregister
model = aiplatform.Model.upload(

    display_name=MODEL_DISPLAY_NAME,
    artifact_uri=ARTIFACT_URI,
    serving_container_image_uri=SERVING_CONTAINER_IMAGE,
)

print(f"Model geüpload. Resourcenaam: {model.resource_name}")

# Om het model in de console te zien, bezoek:
# https://console.cloud.google.com/vertex-ai/models?project={PROJECT_ID}

Voer het script uit. Zorg ervoor dat u your-unique-model-bucket-ew1 vervangt door de bucketnaam die u hebt aangemaakt.

export GCLOUD_PROJECT=$(gcloud config get-value project)
python3.12 upload_model.py

Dit registreert uw model en geeft de volledige resourcenaam weer, die we nodig hebben voor de laatste implementatiestap.

Stap 5: Implementeer het model naar het serverloze Endpoint

Dit is de laatste stap waarin alles samenkomt. We nemen het endpoint dat is gemaakt door Terraform en het model dat we zojuist hebben geregistreerd, en implementeren het model erop. Dit is de actie die Vertex AI activeert om de serverloze infrastructuur te provisioneren.

Maak deploy_model.py aan:

# deploy_model.py
import os
from google.cloud import aiplatform

# --- Configuratie ---
PROJECT_ID = os.getenv("GCLOUD_PROJECT")
REGION = "europe-west1"

# Gebruik de endpoint resourcenaam van uw terraform-uitvoer
ENDPOINT_RESOURCE_NAME = f"projects/{PROJECT_ID}/locations/{REGION}/endpoints/your-endpoint-numeric-id"

# Gebruik de model resourcenaam van de upload_model.py-uitvoer
MODEL_RESOURCE_NAME = f"projects/{PROJECT_ID}/locations/{REGION}/models/your-model-numeric-id"

DEPLOYED_MODEL_DISPLAY_NAME = "sentiment-model-v1-prod"
# --- Einde Configuratie ---

aiplatform.init(project=PROJECT_ID, location=REGION)

# Krijg een verwijzing naar het bestaande endpoint
endpoint = aiplatform.Endpoint(ENDPOINT_RESOURCE_NAME)

print("Model implementeren naar endpoint...")
# Dit kan 10-15 minuten duren
endpoint.deploy(
    model=MODEL_RESOURCE_NAME,
    deployed_model_display_name=DEPLOYED_MODEL_DISPLAY_NAME,
    # Voor serverloos definieert u de 'vorm' van de machine, niet een specifiek type
    machine_type="n1-standard-2",
    min_replica_count=1, # Kan 0 zijn voor puur serverloos, 1 voor warm start
    max_replica_count=3,
    traffic_split={"0": 100}, # Stuur 100% van het verkeer naar dit nieuwe model
    sync=True, # Wacht tot de implementatie is voltooid
)

print(f"Model succesvol geïmplementeerd naar endpoint: {endpoint.display_name}")

Voordat u het uitvoert, moet u your-endpoint-numeric-id en your-model-numeric-id vervangen door de daadwerkelijke ID's uit de vorige stappen. U kunt deze vinden in uw terminaluitvoer of in de GCP-console.

export GCLOUD_PROJECT=$(gcloud config get-value project)
python3.12 deploy_model.py

Deze stap duurt enkele minuten, aangezien Vertex AI resources provisioneert, de containerimage ophaalt en het model implementeert. Heb geduld.

Stap 6: Roep het Endpoint aan voor voorspelling

Zodra de implementatie is voltooid, is uw endpoint live. Laten we er wat voorbeeldgegevens naar sturen.

Maak predict_sentiment.py aan:

# predict_sentiment.py
import os
from google.cloud import aiplatform

# --- Configuratie ---
PROJECT_ID = os.getenv("GCLOUD_PROJECT")
REGION = "europe-west1"
ENDPOINT_RESOURCE_NAME = f"projects/{PROJECT_ID}/locations/{REGION}/endpoints/your-endpoint-numeric-id"
# --- Einde Configuratie ---

aiplatform.init(project=PROJECT_ID, location=REGION)

# Krijg een verwijzing naar het endpoint
endpoint = aiplatform.Endpoint(ENDPOINT_RESOURCE_NAME)

instances = [
    "This service is incredible, highly recommend!",
    "I'm very disappointed with the slow response.",
    "The food was average, nothing to write home about."
]

# De predict-methode accepteert een lijst met instanties
# De voorgebouwde container retourneert een eenvoudige lijst met voorspellingen
response = endpoint.predict(instances=instances)

print("Voorspellingsreactie:")
print(response)

print("\n--- Resultaten ---")
for i, instance in enumerate(instances):
    prediction = response.predictions[i]
    sentiment = "Positief" if prediction == 1 else "Negatief/Neutraal"
    print(f"Invoer: '{instance}'\n  -> Voorspelling: {sentiment} ({prediction})\n")

Werk opnieuw your-endpoint-numeric-id bij en voer het script uit.

export GCLOUD_PROJECT=$(gcloud config get-value project)
python3.12 predict_sentiment.py

U zou de voorspellingen van het model voor uw voorbeeldinvoer moeten zien.

Probleemoplossing en verificatie

Implementaties verlopen niet altijd vlekkeloos. Hier is mijn checklist voor debugging.

  • Beschrijf het Endpoint: Gebruik gcloud om de status van geïmplementeerde modellen te controleren.
# Vervang door de numerieke ID van uw endpoint
gcloud ai endpoints describe your-endpoint-numeric-id \
  --project=$(gcloud config get-value project) \
  --region=europe-west1
  • Controleer de logs: Dit is de belangrijkste stap. Logs van de modelserver verschijnen in Cloud Logging. Een veelvoorkomende fout is dat een model niet kan worden geladen.
# Vervang door de numerieke ID van uw endpoint
gcloud logging read 'resource.type="aiplatform.googleapis.com/Endpoint" resource.labels.endpoint_id="your-endpoint-numeric-id"' \
  --project=$(gcloud config get-value project) --limit=20

Veelvoorkomende fouten en oplossingen

  1. Toestemming geweigerd: Als u een 403 Permission 'aiplatform.endpoints.deployModel' denied ziet, ontbreekt bij uw gebruiker of serviceaccount de IAM-rol Vertex AI User (roles/aiplatform.user). Verleen deze en probeer het opnieuw.

  2. Geïmplementeerd model is niet opgestart: Dit is een generieke fout, meestal betekent het dat de container in een crash-loop terechtkomt. De oorzaak ligt bijna altijd in de logs. Veelvoorkomende redenen zijn:

    • Pickle-versie komt niet overeen: De scikit-learn-versie die is gebruikt voor lokale training is incompatibel met de versie in de voorgebouwde container. Zorg ervoor dat ze overeenkomen.
    • Onjuist artefactpad: De artifact_uri in Model.upload moet verwijzen naar de GCS-directory die model.pkl bevat, niet naar het bestand zelf.
  3. Kostenoverschrijdingen: Als u min_replica_count instelt op 1 of meer, wordt u 24/7 gefactureerd voor die rekenkracht, zelfs zonder verkeer. Voor ontwikkeling of niet-kritieke endpoints stelt u min_replica_count=0 in om de service volledig te laten schalen en inactieve kosten te vermijden.

Conclusie

Het implementeren van machine learning-modellen zou niet het moeilijkste deel van een AI-project moeten zijn. Door gebruik te maken van Vertex AI Serverless Endpoints zijn we van een lokaal modelartefact naar een volledig beheerde, schaalbare en kostenefficiënte inferentieservice gegaan zonder ook maar één regel Kubernetes YAML te schrijven of één VM te beheren.

Deze abstractie is krachtig. Het stelt uw teams in staat zich te richten op wat belangrijk is: het verbeteren van de modelkwaliteit en het leveren van AI-gestuurde inzichten aan het bedrijf, in plaats van te worstelen met GPU-drivers en infrastructuurconfiguratie.

Belangrijkste leerpunten

  • Serverloos is de standaard: Voor de meeste real-time inferentieworkloads begint u met Vertex AI Serverless Endpoints. Ze bieden de beste balans tussen prestaties, kosten en operationele eenvoud.
  • IaC is niet onderhandelbaar: Provisioneer kernresources zoals endpoints altijd met Terraform. Dit biedt een herhaalbare, controleerbare basis voor uw MLOps-platform.
  • Verpak modellen correct: Gebruik tools zoals de Pipeline van scikit-learn om pre-processing en modelleringsstappen te bundelen in een enkel, draagbaar artefact. Dit vereenvoudigt de implementatie drastisch.
  • Beheer uw Endpoints: Gebruik labels om kosten en eigendom bij te houden. Stel min_replica_count=0 in voor niet-productieworkloads om de uitgaven te beheren.

Volgende stappen

Met een geïmplementeerd endpoint is de volgende stap om het te integreren in een echte applicatie. Daarnaast kunt u meer geavanceerde functies verkennen, zoals:

  • Verkeerssplitsing: Implementeer een nieuwe modelversie naar hetzelfde endpoint en verschuif geleidelijk verkeer om A/B-tests of canary releases uit te voeren.
  • Vertex AI Explainability: Integreer model-verklaarbaarheid om te begrijpen waarom uw model bepaalde voorspellingen doet.
  • CI/CD-automatisering: Bouw een pijplijn in Cloud Build of GitHub Actions om automatisch nieuwe modelversies te trainen, registreren en implementeren bij codewijzigingen.

Voor een diepere duik in de bredere implicaties van beheerde AI-infrastructuur, kunt u de Technische analyse van de halfgeleidersector op Clear Signals bekijken.

  • Complete broncode: U vindt de volledige code en Terraform-configuraties die in deze gids zijn gebruikt in [link naar een openbare GitHub-repository met de complete broncode].
  • Officiële GCP-voorbeelden: Voor meer geavanceerde use cases is de officiële GoogleCloudPlatform/vertex-ai-samples-repository op GitHub een uitstekende bron.

Last updated:

This article was produced using an AI-assisted research and writing pipeline. Learn how we create content →

Market Impact

Track how these technologies are moving markets on Markets.TheCloudArchitect.io: