Skip to content
Learni
View all tutorials
Intelligence Artificielle

Comment déployer des modèles IA sur Vertex AI en 2026

Introduction

Vertex AI, la plateforme unifiée de Google Cloud pour l'IA et le machine learning, révolutionne le déploiement en production en 2026. Elle intègre datasets, training (AutoML ou custom), pipelines Kubeflow, endpoints prédictifs et monitoring MLOps natif. Pourquoi c'est crucial ? Dans un monde où 80% des modèles ML échouent en prod faute d'infra scalable, Vertex AI offre une gestion end-to-end : du fine-tuning de Gemini à des jobs distribués sur TPU. Ce tutoriel expert vous guide pas à pas pour créer un dataset tabulaire, entraîner un modèle de classification, déployer un endpoint privé et monitorer en temps réel. Résultat : un système prod-ready résistant à 10k+ requêtes/seconde, avec coûts optimisés via spot instances. Idéal pour data scientists seniors gérant des workloads critiques. (128 mots)

Prérequis

  • Compte Google Cloud avec billing activé et quota Vertex AI (au moins 10 vCPU, 30 GB storage).
  • gcloud CLI installée (v450+).
  • Python 3.10+ avec venv.
  • Rôles IAM : roles/aiplatform.admin, roles/storage.admin sur le projet.
  • Dataset CSV prêt (ex: Iris dataset pour tests).
  • Région supportée : us-central1 ou europe-west4.

Installation et authentification gcloud

setup-gcloud.sh
#!/bin/bash

# Installation gcloud si manquante (Linux/Mac)
if ! command -v gcloud &> /dev/null; then
    curl https://sdk.cloud.google.com | bash
    exec -l $SHELL
fi

# Initialiser gcloud
PROJECT_ID="your-project-id"
REGION="us-central1"

gcloud auth login

gcloud config set project $PROJECT_ID
gcloud config set ai/region $REGION

gcloud services enable aiplatform.googleapis.com \
    artifactregistry.googleapis.com \
    cloudbuild.googleapis.com

# Vérifier
 gcloud ai models list --limit=1

Ce script installe gcloud, active l'authentification utilisateur et les APIs essentielles pour Vertex AI. Il configure le projet et la région par défaut, évitant les erreurs de quota régionales. Lancez-le une fois ; piège courant : oublier cloudbuild pour les custom jobs.

Configuration de l'environnement Python

Créez un environnement virtuel isolé pour éviter les conflits de dépendances. Installez le SDK Vertex AI v1.52+ (stable en 2026), qui gère les appels REST sous le capot avec retry automatique. Analogie : comme un orchestrateur Kubernetes pour ML, il abstrait les complexités GCP. Téléversez votre dataset CSV dans un bucket GCS (ex: gs://your-bucket/datasets/iris.csv) via gsutil cp.

Installation SDK et test client

setup-python.sh
#!/bin/bash

python -m venv venv
source venv/bin/activate  # venv\Scripts\activate sur Windows

pip install --upgrade pip
pip install google-cloud-aiplatform==1.52.0 \
    pandas==2.2.2 \
    scikit-learn==1.5.1 \
    google-cloud-storage==2.17.0

# Test auth (via ADC)
export GOOGLE_APPLICATION_CREDENTIALS="path/to/service-account-key.json"  # Optionnel si gcloud auth active

python -c "from google.cloud import aiplatform; print('SDK OK:', aiplatform.__version__)" 

Installe les libs core pour interagir avec Vertex AI. Le SDK utilise Application Default Credentials (ADC) pour l'auth seamless. Piège : sans google-cloud-storage, les uploads datasets échouent ; testez toujours avec un snippet pour valider l'env.

Création d'un dataset tabulaire

create_dataset.py
import os

from google.cloud import aiplatform

project_id = "your-project-id"
display_name = "iris-dataset"
dataset_uri = "gs://your-bucket/datasets/iris.csv"
location = "us-central1"

aiplatform.init(project=project_id, location=location)

# Schéma pour classification (ajustez colonnes)
labels_schema = aiplatform.TabularDataset.LABEL_SCHEMAS(
    target_column_name="species"
)

# Créer dataset (CSV auto-détecté)
dataset = aiplatform.TabularDataset.create(
    display_name=display_name,
    source_uri=dataset_uri,
    labels_schema=labels_schema,
    delta=aiplatform.gapic.Delta(timestamp=None),
)

print(f"Dataset créé : {dataset.resource_name}")
print(f"État : {dataset.state.name}")

Ce script crée un dataset tabulaire pour classification multi-classe (Iris). Il définit le schéma labels explicitement pour éviter l'auto-détection foireuse sur gros datasets. Attendez 2-5min pour state=PIPELINE_STATE_SUCCEEDED ; monitor via Console Vertex AI.

Entraînement d'un modèle AutoML

Progression : Avec le dataset prêt, lancez un training AutoML pour baseline rapide (idéal expert pour itérer vite). AutoML optimise hyperparams via NAS (Neural Architecture Search), atteignant 95%+ accuracy sur Iris en <1h. Comparez avec custom training plus bas.

Lancement job AutoML Training

train_automl.py
from google.cloud import aiplatform

project_id = "your-project-id"
location = "us-central1"
dataset_id = "projects/your-project-id/locations/us-central1/datasets/123456789"  # Remplacez par output de create_dataset
model_display_name = "iris-automl-classifier"

aiplatform.init(project=project_id, location=location)

# Dataset ref
 TabularDataset = aiplatform.TabularDataset(dataset_id)

# Training job (budget 1 node-hour pour test)
job = aiplatform.AutoMLTabularTrainingJob(
    display_name="iris-automl-train",
    optimization_prediction_type="classification",
    budget_milli_node_hours=1000,
)

model = job.run(
    dataset=TabularDataset,
    model_display_name=model_display_name,
    disable_early_stopping=False,
)

print(f"Modèle créé : {model.display_name}")
print(f"Metrics : {model.metrics}")

Lance un job AutoML optimisé pour classification, avec early stopping pour économies (jusqu'à 30% budget). budget_milli_node_hours=1000 = 1h n1-standard-4. Récupérez dataset_id du script précédent ; metrics incluent AUC, log_loss pour éval experte.

Déploiement endpoint sécurisé

deploy_endpoint.py
from google.cloud import aiplatform

project_id = "your-project-id"
location = "us-central1"
model_id = "projects/your-project-id/locations/us-central1/models/iris-automl-classifier"  # De train_automl
endpoint_display_name = "iris-prod-endpoint"

aiplatform.init(project=project_id, location=location)

# Endpoint dédié (privé VPC par défaut)
endpoint = aiplatform.Endpoint.create(display_name=endpoint_display_name)

# Déployer modèle (machine type scalable)
model = aiplatform.Model(model_id)

endpoint.deploy(
    model=model,
    deployed_model_display_name="deployed-iris",
    machine_type="n1-standard-4",
    min_replica_count=1,
    max_replica_count=3,
    traffic_split={"0": 100},
    enable_access_logging=True,
)

print(f"Endpoint URI : {endpoint.resource_name}")
print(f"Déployé sur : {endpoint.deployed_models[0].deployed_model_id}")

Crée un endpoint privé avec autoscaling (1-3 replicas) et logging pour Cloud Audit Logs. enable_access_logging=True essentiel pour compliance GDPR. Temps déploiement : 10-15min ; testez via Console > Predictions.

Inférence et monitoring

Pour prod, intégrez l'endpoint dans apps via SDK ou REST. Activez Vertex AI Feature Store pour online serving si >1M features. Monitoring : Dashboards auto pour latency (p99<200ms), drift detection et explainability SHAP.

Prédiction batch et online

predict.py
from google.cloud import aiplatform

import pandas as pd

project_id = "your-project-id"
location = "us-central1"
endpoint_id = "projects/your-project-id/locations/us-central1/endpoints/123456789"  # De deploy_endpoint

aiplatform.init(project=project_id, location=location)

endpoint = aiplatform.Endpoint(endpoint_id)

# Online prediction (instances comme dataset input)
instances = [
    [5.1, 3.5, 1.4, 0.2],  # features Iris
    [7.0, 3.2, 4.7, 1.4],
]
predictions = endpoint.predict(instances=instances).predictions
print("Online preds:", [pred['classes'][0]['label'] for pred in predictions])

# Batch (URI GCS job)
batch_job = endpoint.batch_predict(
    job_display_name="iris-batch",
    gcs_source_uri="gs://your-bucket/batch/iris_test.csv",
    gcs_destination_prefix="gs://your-bucket/preds/",
    instances_format="csv",
    predictions_format="jsonl",
    machine_type="n1-standard-2",
)
print(f"Batch job : {batch_job.resource_name}")

Dual inférence : online pour low-latency (<100ms), batch pour volumes massifs (économies 70% vs online). Format CSV/JSONL match dataset ; surveillez job via batch_job.wait(). Piège : mismatch schema instances → 400 BadRequest.

Pipeline Vertex AI simple (Kubeflow)

pipeline.py
from kfp import dsl
from google.cloud import aiplatform

@dsl.component(base_image="python:3.10")
def load_data_op(dataset_uri: str) -> str:
    # Simulation load (remplacez par vrai upload)
    return "gs://fake-bucket/processed.csv"

@dsl.pipeline(name="iris-pipeline", pipeline_root="gs://your-bucket/pipelines/")
def training_pipeline(
    dataset_uri: str = "gs://your-bucket/datasets/iris.csv"
):
    load_task = load_data_op(dataset_uri)
    # Ajoutez train/deploy components ici

project_id = "your-project-id"
location = "us-central1"

aiplatform.PipelineJob(
    display_name="IrisPipeline",
    template_path=None,  # Inline
    pipeline_root="gs://your-bucket/pipelines/",
    parameter_values={"dataset_uri": "gs://your-bucket/datasets/iris.csv"},
).run()

Pipeline Kubeflow basique pour MLOps : scalable à 100+ steps. @dsl.component encapsule steps réutilisables ; pipeline_root GCS pour artifacts. Exécutez pour CI/CD ; étendez avec custom container pour training distribué TPU.

Bonnes pratiques

  • Sécurisez endpoints : Utilisez VPC Service Controls + IAM least-privilege (ex: roles/aiplatform.userPredictor seulement).
  • Optimisez coûts : Spot VMs pour training (accelerator_type=TPU_V4 si >10GB data), auto-scale min_replicas=0 off-peak.
  • MLOps avancés : Intégrez Model Registry + Feature Store ; activez Model Monitoring pour drift (seuil 0.1 Jensen-Shannon).
  • Scalabilité : Préférez serverless Prediction pour <1k QPS ; dedicated pour high-throughput.
  • Tests : CI/CD avec Cloud Build testant accuracy >95% avant promo staging→prod.

Erreurs courantes à éviter

  • Auth échouée : Vérifiez ADC via gcloud auth application-default print-access-token ; pas de SA key en prod (risque leak).
  • Quota dépassé : Augmentez via Console (ex: 50 TrainingUnits) ; surveillez gcloud ai quotas list.
  • Schema mismatch : Toujours spécifiez labels_schema ; auto-detect rate 70% sur unbalanced data.
  • Cold start latency : Min_replicas=1 + traffic_split pour <500ms p95.

Pour aller plus loin