Cette page explique comment générer des prédictions de machine learning (ML) à partir d'un Spanner. Les prédictions de ML fonctionnent à la fois Bases de données GoogleSQL et PostgreSQL
L'intégration de Vertex AI dans Spanner vous permet de générer des prédictions à l'aide de vos
code SQL en appelant la méthode
ML.PREDICT
pour GoogleSQL, ou la
spanner.ML_PREDICT_ROW
pour PostgreSQL. Pour en savoir plus sur
Intégration de Vertex AI dans Spanner, consultez la présentation de l'intégration à Vertex AI dans Spanner.
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 aux points de terminaison Vertex AI pour l'intégration de Vertex AI dans Spanner
Spanner crée l'agent de service et accorde les autorisations nécessaires automatiquement lorsque Spanner exécute la première instruction LDD MODEL. Si la base de données Spanner et le point de terminaison Vertex AI 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 Spanner, créez-le en exécutant la commande la commande suivante:
gcloud beta services identity create --service=spanner.googleapis.com --project={PROJECT}`
Suivez la procédure décrite dans Attribuer un rôle unique pour
attribuez le rôle Spanner API Service Agent
Compte d'agent de service Spanner
service-PROJECT_ID@gcp-sa-spanner.iam.gserviceaccount.com
sur votre
projet Vertex AI.
Sélectionnez un modèle
Lorsque vous utilisez 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 que vous avez sélectionné peut être l'un des suivants:
Un modèle s'exécutant dans Vertex AI Model Garden.
Un modèle Vertex AI avec un point de terminaison actif que votre L'agent de service Spanner dispose de l'autorisation IAM d'accès.
Pour en savoir plus sur l'intégration de Vertex AI dans Spanner, consultez Comment fonctionne l'intégration de Vertex AI dans Spanner ?
Générer des prédictions
Selon le type de modèle sélectionné, la procédure à suivre pour générer vos prévisions seront différentes.
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 au 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_NAME
OUTPUT_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_NAME
PROJECT_ID
: ID de votre projet Google CloudREGION_ID
: ID de la région Google Cloud dans laquelle se trouve le modèle situé dans le pays suivant :us-central1
, par exempleMODEL_ID
: ID du modèle de ML que vous souhaitez utiliser (par exemple,gemini-pro
)Pour en savoir plus sur les modèles, consultez Documentation de référence de l'API de modèle pour l'IA générative
Utilisez le ML.PREDICT
Fonction GoogleSQL avec le modèle sélectionné
depuis 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 au modèlePour en savoir plus sur les modèles, consultez Documentation de référence de l'API de modèle pour l'IA générative
INPUT_RELATION
:TABLE table_name
ou une sous-requête de la table ou de la sous-requête fournissant les données sur lesquelles exécuter la prédiction de ML.PARAMETERS
: une valeurSTRUCT
contenant des paramètres pris en charge parmodel_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 des requêtes volumineuses
certaines erreurs de prédiction sont tolérables.
PostgreSQL
Utiliser la fonction PostgreSQL ML_PREDICT_ROW
avec le modèle sélectionné
depuis 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 projet Google CloudREGION_ID
: ID de la région Google Cloud dans laquelle se trouve le modèle situé dans le pays suivant :us-central1
, par exempleMODEL_ID
: ID du modèle de ML que vous souhaitez utiliser (par exemple,gemini-pro
)Pour en savoir plus sur les modèles, consultez Documentation de référence de l'API de modèle pour l'IA générative
INSTANCES
: entrées de l'appel de prédiction, au format JSON.PARAMETERS
: paramètres facultatifs de l'appel de prédiction, au format JSON
Cette requête génère une réponse JSON. Pour en savoir plus sur la 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 Vertex AI dans Spanner, vous devez déployer le modèle à Vertex AI. Pour en savoir plus sur la façon dont pour déployer un modèle sur un point de terminaison dans Vertex AI, consultez Déployez un modèle sur un point de terminaison.
GoogleSQL
Utilisez la fonction GoogleSQL ML.PREDICT
avec le modèle dans une
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 en utilisant
la CREATE MODEL
. Chaque modèle déployé possède son propre
du schéma. Voici un exemple de schéma
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 projet Google CloudLOCATION
: ID de la région Google Cloud dans laquelle se trouve le modèle situé dans le pays suivant :us-central1
, par exempleENDPOINT_ID
: ID du modèle de ML que vous souhaitez utiliser (par exemple,gemini-pro
)Pour en savoir plus sur les modèles, consultez Documentation de référence de l'API de modèle pour l'IA générative
Utilisez le ML.PREDICT
Fonction GoogleSQL avec le modèle sélectionné
depuis 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 de votre choix sur lesquelles exécuter la prédiction de ML.PARAMETERS
: une valeurSTRUCT
contenant des paramètres pris en charge parmodel_name
.
Cette requête produit une relation contenant toutes les colonnes de sortie du modèle. toutes les colonnes de la relation d'entrée.
PostgreSQL
Utiliser la fonction PostgreSQL ML.PREDICT
avec le modèle dans une
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 projet Google Cloud dont est le modèle situé dansREGION_ID
: ID de la région Google Cloud dans laquelle se trouve le modèle situé dans le pays suivant :us-central1
, par exempleENDPOINT_ID
: ID du point de terminaison du modèleINSTANCES
: entrées de l'appel de prédiction, au format JSON.PARAMETERS
: paramètres facultatifs de l'appel de prédiction, au format JSON
Cette requête génère une réponse JSON. Pour en savoir plus sur la messages de réponse JSON du modèle, consultez la section PredictResponse.
Exemples d'utilisation des fonctions de ML pour générer des prédictions
L'exemple suivant utilise la classe gemini-pro, depuis Model Garden, pour générer du texte à partir d'une courte requête fourni en tant qu'argument. Ce modèle est disponible 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
Les résultats attendus sont les suivants:
+--------------------+
| 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" |
+--------------------+