Cette page explique comment générer des prédictions de machine learning (ML) à partir d'une base de données Spanner. Les prédictions de ML fonctionnent avec les bases de données utilisant les dialectes GoogleSQL et PostgreSQL.
L'intégration de Spanner Agent Platform vous permet de générer des prédictions à l'aide de votre
code SQL en appelant la
ML.PREDICT
fonction pour GoogleSQL ou la
spanner.ML_PREDICT_ROW
fonction pour PostgreSQL. Pour en savoir plus sur
l'intégration de Spanner Agent Platform, consultez la présentation de l'intégration de Spanner Agent Platform.
Avant de commencer
Avant de pouvoir générer des prédictions à partir d'une instance Spanner, vous devez préparer votre base de données et sélectionner un modèle.
Configurer l'accès pour l'intégration de Spanner Agent Platform aux points de terminaison Vertex AI
Spanner crée l'agent de service et accorde automatiquement les autorisations nécessaires lorsque Spanner exécute la première instruction DDL MODEL. Si la base de données Spanner et le point de terminaison Vertex AI se trouvent dans le même projet, aucune configuration supplémentaire n'est requise.
Si le compte d'agent de service Spanner n'existe pas pour votre projet Spanner, créez-le en exécutant la commande suivante :
gcloud beta services identity create --service=spanner.googleapis.com --project={PROJECT}`
Suivez les étapes décrites dans la section Attribuer un seul rôle pour
attribuer le rôle Spanner API Service Agent au
compte d'agent de service Spanner
service-PROJECT_NUMBER@gcp-sa-spanner.iam.gserviceaccount.com dans votre
projet Vertex AI.
Sélectionner un modèle
Lorsque vous utilisez la fonction ML.PREDICT (pour GoogleSQL) ou spanner.ML_PREDICT_ROW (pour PostgreSQL), vous devez spécifier l'emplacement du modèle de ML. Le modèle sélectionné peut être l'un des suivants :
Un modèle qui s'exécute dans le Model Garden de Vertex AI.
Un modèle Vertex AI avec un point de terminaison actif auquel votre agent de service Spanner a accès via l'autorisation IAM.
Pour en savoir plus sur l'intégration de Spanner Agent Platform, consultez Comment fonctionne l'intégration de Spanner Agent Platform ?.
Générer des prédictions
Les étapes à suivre pour générer vos prédictions varient en fonction du type de modèle sélectionné.
Utiliser un modèle dans Vertex AI Model Garden
Pour générer une prédiction à l'aide d'un modèle de Vertex AI Model Garden, sélectionnez un modèle dans Model Garden.
GoogleSQL
Avant d'utiliser un modèle avec ML.PREDICT(), vous devez l'enregistrer à l'aide de l'instruction CREATE MODEL.
CREATE MODEL 'MODEL_NAME'
INPUT (INPUT_COLUMN_NAME INPUT_COLUMN_TYPE)
OUTPUT (OUTPUT_COLUMN_NAME OUTPUT_COLUMN_TYPE)
REMOTE
OPTIONS (
endpoint = '//aiplatform.googleapis.com/projects/PROJECT_ID/locations/LOCATION_ID/publishers/google/models/model_id'
);
Remplacez les éléments suivants :
MODEL_NAME: nom que vous souhaitez donner à votre modèleINPUT_COLUMN_NAME: nom de votre colonne d'entrée. Par exemple, si vous utilisez le modèlegemini-pro, le nom de la colonne d'entrée estprompt.INPUT_COLUMN_TYPE: type de données pourINPUT_COLUMN_NAMEOUTPUT_COLUMN_NAME: nom de votre colonne de sortie. Par exemple, si vous utilisez le modèlegemini-pro, le nom de la colonne de sortie estcontent.OUTPUT_COLUMN_TYPE: type de données pourOUTPUT_COLUMN_NAMEPROJECT_ID: ID de votre Google Cloud projetREGION_ID: ID de larégion dans laquelle se trouve le modèle, par exempleus-central1Google CloudMODEL_ID: ID du modèle de ML que vous souhaitez utiliser, par exemplegemini-proPour en savoir plus sur les modèles, consultez la documentation de référence de l'API du modèle pour l'IA générative.
Utilisez la fonction GoogleSQL ML.PREDICT
avec le modèle sélectionné
dans Model Garden pour générer votre prédiction.
SELECT * FROM ML.PREDICT(
MODEL `MODEL_NAME`,
`INPUT_RELATION`[, `PARAMETERS`])
Remplacez les éléments suivants :
MODEL_NAME: nom que vous souhaitez donner à votre modèlePour en savoir plus sur les modèles, consultez la documentation de référence de l'API du modèle pour l'IA générative.
INPUT_RELATION:TABLE table_nameou une sous-requête de la table ou de la sous-requête fournissant des données pour exécuter la prédiction de ML.PARAMETERS: valeurSTRUCTcontenant les paramètres compatibles avecmodel_id.
Vous pouvez également utiliser SAFE.ML.PREDICT pour renvoyer null au lieu d'une erreur dans vos prédictions. Cela est utile lorsque vous exécutez de grandes requêtes où certaines prédictions ayant échoué sont tolérables.
PostgreSQL
Utilisez la fonction PostgreSQL ML_PREDICT_ROW avec le modèle sélectionné dans Model Garden pour générer votre prédiction.
SELECT spanner.ml_predict_row(
'projects/PROJECT_ID/locations/REGION_ID/publishers/google/models/MODEL_ID'::text,
'{
"instances": [ INSTANCES ],
"parameters": { PARAMETERS }
}'::jsonb);
Remplacez les éléments suivants :
PROJECT_ID: ID de votre Google Cloud projetREGION_ID: ID de larégion dans laquelle se trouve le modèle, par exempleus-central1Google CloudMODEL_ID: ID du modèle de ML que vous souhaitez utiliser, par exemplegemini-proPour en savoir plus sur les modèles, consultez la documentation de référence de l'API du modèle pour l'IA générative.
INSTANCES: entrées de l'appel de prédiction, au format JSONPARAMETERS: paramètres facultatifs pour l'appel de prédiction, au format JSON
Cette requête génère une réponse JSON. Pour en savoir plus sur les messages de réponse JSON du modèle, consultez la section PredictResponse.
Utiliser un point de terminaison de modèle Vertex AI
Pour utiliser un modèle entraîné ou téléchargé avec l'intégration de Spanner Agent Platform, vous devez déployer le modèle sur Vertex AI. Pour en savoir plus sur le déploiement d'un modèle sur un point de terminaison dans Vertex AI, consultez Déployer un modèle sur un point de terminaison.
GoogleSQL
Utilisez la fonction GoogleSQL ML.PREDICT avec le modèle dans un point de terminaison Vertex AI pour générer votre prédiction. Avant d'utiliser un
modèle avec ML.PREDICT(), vous devez l'enregistrer à l'aide
de l'CREATE MODEL
instruction. Chaque modèle déployé possède son propre schéma unique. Voici un exemple de schéma tiré de
la présentation de la classification et de la régression.
CREATE MODEL MyClassificationModel
INPUT (
length FLOAT64,
material STRING(MAX),
tag_array ARRAY<STRING(MAX)>
)
OUTPUT (
scores ARRAY<FLOAT64>,
classes ARRAY<STRING(MAX)>
)
REMOTE
OPTIONS (
endpoint = '//aiplatform.googleapis.com/projects/PROJECT/locations/LOCATION/endpoints/ENDPOINT_ID'
)
Remplacez les éléments suivants :
PROJECT_ID: ID de votre Google Cloud projetLOCATION: ID de la Google Cloud région dans laquelle se trouve le modèle, par exempleus-central1ENDPOINT_ID: ID du modèle de ML que vous souhaitez utiliser, par exemplegemini-proPour en savoir plus sur les modèles, consultez la documentation de référence de l'API du modèle pour l'IA générative.
Utilisez la fonction GoogleSQL ML.PREDICT
avec le modèle sélectionné
dans Model Garden pour générer votre prédiction.
SELECT * FROM ML.PREDICT(
`MODEL_ID`,
`INPUT_RELATION`[, `PARAMETERS`])
Remplacez les éléments suivants :
MODEL_ID: ID du modèle de ML que vous souhaitez utiliser.INPUT_RELATION: table ou sous-requête sur laquelle vous souhaitez exécuter la prédiction de ML.PARAMETERS: valeurSTRUCTcontenant les paramètres compatibles avecmodel_name.
Cette requête génère une relation contenant toutes les colonnes de sortie du modèle et toutes les colonnes de la relation d'entrée.
PostgreSQL
Utilisez la fonction PostgreSQL ML.PREDICT avec le modèle dans un point de terminaison Vertex AI pour générer votre prédiction.
SELECT spanner.ml_predict_row(
'projects/PROJECT_ID/locations/REGION_ID/endpoints/ENDPOINT_ID'::text,
'{
"instances": [ INSTANCES ],
"parameters": { PARAMETERS }
}'::jsonb);
```
Replace the following:
PROJECT_ID: ID du Google Cloud projet dans lequel se trouve le modèleREGION_ID: ID de la Google Cloud région dans laquelle se trouve le modèle, par exempleus-central1ENDPOINT_ID: ID du point de terminaison du modèleINSTANCES: entrées de l'appel de prédiction, au format JSONPARAMETERS: paramètres facultatifs pour l'appel de prédiction, au format JSON
Cette requête génère une réponse JSON. Pour en savoir plus sur les messages de réponse JSON du modèle, consultez la section PredictResponse.
Exemples d'utilisation de fonctions de ML pour générer des prédictions
L'exemple suivant utilise le modèle gemini-pro, de Model Garden, pour générer du texte à partir d'un prompt court fourni en tant qu'argument. Ce modèle est disponible dans Gemini dans Spanner.
GoogleSQL
Enregistrer le modèle gemini-pro
CREATE MODEL GeminiPro
INPUT (prompt STRING(MAX))
OUTPUT (content STRING(MAX))
REMOTE
OPTIONS (
endpoint = '//aiplatform.googleapis.com/projects/PROJECT/locations/LOCATION/publishers/google/models/gemini-pro',
default_batch_size = 1
);
Remplacez les éléments suivants :
PROJECT: ID du projetLOCATION: région dans laquelle vous utilisez Vertex AI
Exécuter le modèle
SELECT content
FROM ML.PREDICT(
MODEL GeminiPro,
(SELECT "Is 7 a prime number?" AS prompt),
STRUCT(256 AS maxOutputTokens, 0.2 AS temperature, 40 as topK, 0.95 AS topP)
);
Résultat attendu
Le résultat attendu est le suivant :
+--------------------+
| content |
+--------------------+
| "Yes" |
+--------------------+
PostgreSQL
Exécuter le modèle
select spanner.ml_predict_row(
'{
"endpoint": "projects/PROJECT_ID/locations/us-central1/publishers/google/models/gemini-pro",
"default_batch_size": 1
}'::jsonb,
'{
"instances":[{"prompt": "Is 7 a prime number?"}],
"parameters":{"maxOutputTokens":256, "topK": 40, "topP":0.96, "temperature":0.2}
}'
);
Résultat attendu
Le résultat attendu est le suivant :
+--------------------+
| content |
+--------------------+
| "Yes" |
+--------------------+