Cette page explique comment régler les modèles d'embedding textuel (ou "plongement textuel") tels que textembedding-gecko
et textembedding-gecko-multilingual
.
Les modèles d'embedding de base sont pré-entraînés sur un ensemble de données textuelles volumineux, ce qui fournit une référence solide pour de nombreuses tâches. Pour les scénarios nécessitant des connaissances spécialisées ou des performances très personnalisées, le réglage des modèles vous permet d'affiner les représentations du modèle à l'aide de vos propres données pertinentes. Le réglage est compatible avec les versions stables des modèles textembedding-gecko
et textembedding-gecko-multilingual
.
Les modèles d'embedding textuel sont compatibles avec le réglage supervisé. Le réglage supervisé utilise des exemples étiquetés qui illustrent le type de sortie que vous souhaitez obtenir de votre modèle d'embedding textuel lors de l'inférence.
Pour en savoir plus sur le réglage des modèles, consultez Fonctionnement du réglage de modèles.
Amélioration de la qualité attendue
Vertex AI utilise une méthode de réglage efficace des paramètres pour la personnalisation. Cette méthodologie montre des gains de qualité significatifs allant jusqu'à 41 % (12 % en moyenne) lors de tests effectués sur des ensembles de données comparatifs publics.
Cas d'utilisation pour le réglage d'un modèle d'embedding
Le réglage d'un modèle d'embeddings textuels peut permettre à votre modèle de s'adapter aux embeddings d'un domaine ou d'une tâche spécifique. Cela peut être utile si le modèle d'embeddings pré-entraîné n'est pas adapté à vos besoins spécifiques. Par exemple, vous pouvez régler un modèle d'embeddings sur un ensemble de données spécifique aux demandes d'assistance client de votre entreprise. Cela peut aider un chatbot à comprendre les différents types de problèmes que vos clients rencontrent généralement lorsqu'ils contactent le service client, et à répondre à leurs questions plus efficacement. Sans réglage, le modèle ne peut pas connaître les spécificités de vos demandes d'assistance client ni les solutions aux problèmes spécifiques liés à votre produit.
Workflow de réglage
Le workflow de réglage de modèle pour textembedding-gecko
et textembedding-gecko-multilingual
sur Vertex AI est le suivant :
- Préparez l'ensemble de données de réglage du modèle.
- Importez l'ensemble de données de réglage du modèle dans un bucket Cloud Storage.
- Configurez votre projet pour Vertex AI Pipelines.
- Créez un job de réglage de modèle.
- Déployez le modèle réglé sur un point de terminaison Vertex AI du même nom. Contrairement aux jobs de réglage de modèle de texte ou Codey, un job de réglage d'embedding textuel ne déploie pas vos modèles réglés sur un point de terminaison Vertex AI.
Préparer l'ensemble de données d'embeddings
L'ensemble de données permettant de régler un modèle d'embeddings inclut des données correspondant à la tâche que le modèle doit effectuer.
Format d'ensemble de données pour le réglage d'un modèle d'embeddings
L'ensemble de données d'entraînement comprend les fichiers suivants, qui doivent se trouver dans Cloud Storage. Le chemin d'accès aux fichiers est défini par des paramètres lors du lancement du pipeline de réglage. Les trois types de fichiers sont le fichier de corpus, le fichier de requête et les étiquettes. Seules les étiquettes d'entraînement sont nécessaires, mais vous pouvez également fournir des étiquettes de validation et de test pour un meilleur contrôle.
Fichier de corpus : le chemin d'accès est défini par le paramètre
corpus_path
. Il s'agit d'un fichier JSONL dans lequel chaque ligne contient les champs_id
,title
ettext
avec des valeurs de chaîne._id
ettext
sont obligatoires, tandis quetitle
est facultatif. Voici un exemple de fichiercorpus.jsonl
:{"_id": "doc1", "title": "Get an introduction to generative AI on Vertex AI", "text": "Vertex AI Studio offers a Google Cloud console tool for rapidly prototyping and testing generative AI models. Learn how you can use Vertex AI Studio to test models using prompt samples, design and save prompts, tune a foundation model, and convert between speech and text."} {"_id": "doc2", "title": "Use gen AI for summarization, classification, and extraction", "text": "Learn how to create text prompts for handling any number of tasks with Vertex AI's generative AI support. Some of the most common tasks are classification, summarization, and extraction. Vertex AI's PaLM API for text lets you design prompts with flexibility in terms of their structure and format."} {"_id": "doc3", "title": "Custom ML training overview and documentation", "text": "Get an overview of the custom training workflow in Vertex AI, the benefits of custom training, and the various training options that are available. This page also details every step involved in the ML training workflow from preparing data to predictions."} {"_id": "doc4", "text": "Text embeddings are useful for clustering, information retrieval, retrieval-augmented generation (RAG), and more."} {"_id": "doc5", "title": "Text embedding tuning", "text": "Google's text embedding models can be tuned on Vertex AI."}
Fichier de requête : le fichier de requête contient vos exemples de requêtes. Le chemin d'accès est défini par le paramètre
queries_path
. Le fichier de requête est au format JSONL et contient les mêmes champs que le fichier de corpus. Voici un exemple de fichierqueries.jsonl
:{"_id": "query1", "text": "Does Vertex support generative AI?"} {"_id": "query2", "text": "What can I do with Vertex GenAI offerings?"} {"_id": "query3", "text": "How do I train my models using Vertex?"} {"_id": "query4", "text": "What is a text embedding?"} {"_id": "query5", "text": "Can text embedding models be tuned on Vertex?"} {"_id": "query6", "text": "embeddings"} {"_id": "query7", "text": "embeddings for rag"} {"_id": "query8", "text": "custom model training"} {"_id": "query9", "text": "Google Cloud PaLM API"}
Étiquettes d'entraînement : le chemin d'accès est défini par le paramètre
train_label_path
. Le paramètre train_label_path est l'URI Cloud Storage de l'emplacement des données des étiquettes d'entraînement. Il est spécifié lorsque vous créez le job de réglage. Les étiquettes doivent être un fichier TSV avec un en-tête. Un sous-ensemble des requêtes et du corpus doit être inclus dans votre fichier d'étiquettes d'entraînement. Le fichier doit contenir les colonnesquery-id
,corpus-id
etscore
.query-id
est une chaîne correspondant à la clé_id
du fichier de requête,corpus-id
est une chaîne correspondant à_id
dans le fichier de corpus.Score
est une valeur entière non négative. Si une paire requête/document n'est pas liée, vous pouvez l'exclure du fichier des étiquettes d'entraînement ou l'inclure avec un score de zéro. Tout score supérieur à zéro indique que le document est lié à la requête. Plus le nombre est élevé, plus le niveau de pertinence est élevé. Si le score est omis, la valeur par défaut est 1. Voici un exemple de fichiertrain_labels.tsv
:query-id corpus-id score query1 doc1 1 query2 doc2 1 query3 doc3 2 query3 doc5 1 query4 doc4 1 query4 doc5 1 query5 doc5 2 query6 doc4 1 query6 doc5 1 query7 doc4 1 query8 doc3 1 query9 doc2 1
Étiquettes de test : facultatives. Les étiquettes de test ont le même format que les étiquettes d'entraînement et sont spécifiées par le paramètre
test_label_path
. Si aucuntest_label_path
n'est fourni, les étiquettes de test seront fractionnées automatiquement à partir des étiquettes d'entraînement.Étiquettes de validation : facultatives. Les étiquettes de validation ont le même format que les étiquettes d'entraînement et sont spécifiées par le paramètre
validation_label_path
. Si aucunvalidation_label_path
n'est fourni, les étiquettes de validation seront fractionnées automatiquement à partir des étiquettes d'entraînement.
Exigences concernant la taille de l'ensemble de données
Les fichiers d'ensemble de données fournis doivent respecter les contraintes suivantes :
- Le nombre de requêtes doit être compris entre 9 et 10 000.
- Le nombre de documents du corpus doit être compris entre 9 et 500 000.
- Chaque fichier d'étiquette d'ensemble de données doit inclure au moins trois ID de requête, et les répartitions de l'ensemble de données doivent inclure au moins neuf ID de requête.
- Le nombre total d'étiquettes doit être inférieur à 500 000.
Configurer votre projet pour Vertex AI Pipelines
Le réglage est exécuté dans votre projet à l'aide de la plate-forme Vertex AI Pipelines.
Configurer des autorisations
Le pipeline exécute le code d'entraînement sous deux agents de service. Ces agents de service doivent se voir attribuer des rôles spécifiques pour commencer l'entraînement à l'aide de votre projet et de votre ensemble de données.
Compte de service Compute Engine par défaut
PROJECT_NUMBER-compute@developer.gserviceaccount.com
Ce compte de service nécessite :
un accès de
Storage Object Viewer
à chaque fichier de l'ensemble de données que vous avez créé dans Cloud Storage ;un accès de
Storage Object User
au répertoire Cloud Storage de sortie de votre pipeline, PIPELINE_OUTPUT_DIRECTORY ;un accès de
Vertex AI User
à votre projet.
Au lieu du compte de service Compute Engine par défaut, vous pouvez spécifier un compte de service personnalisé. Pour en savoir plus, consultez Configurer un compte de service avec des autorisations précises.
Agent de service de réglage Vertex AI
service-PROJECT_NUMBER@gcp-sa-aiplatform-ft.iam.gserviceaccount.com
Ce compte de service nécessite :
un accès de
Storage Object Viewer
à chaque fichier de l'ensemble de données que vous avez créé dans Cloud Storage ;un accès de
Storage Object User
au répertoire Cloud Storage de sortie de votre pipeline, PIPELINE_OUTPUT_DIRECTORY.
Pour en savoir plus sur la configuration des autorisations de l'ensemble de données Cloud Storage, consultez Configurer un bucket Cloud Storage pour les artefacts de pipeline.
Utiliser des accélérateurs
Le réglage nécessite des accélérateurs GPU. L'un des accélérateurs suivants peut être utilisé pour le pipeline de réglage d'embedding textuel :
NVIDIA_L4
NVIDIA_TESLA_A100
NVIDIA_TESLA_T4
NVIDIA_TESLA_V100
NVIDIA_TESLA_P100
Le lancement d'un job de réglage nécessite un quota Restricted image training GPUs
suffisant pour le type d'accélérateur et la région que vous avez sélectionnés, par exemple Restricted image training Nvidia V100 GPUs per region
. Pour augmenter le quota de votre projet, consultez Demander un quota supplémentaire.
Tous les accélérateurs ne sont pas disponibles dans toutes les régions. Pour en savoir plus, consultez Utiliser des accélérateurs dans Vertex AI.
Créer un job de réglage de modèle d'embedding
Vous pouvez créer un job de réglage de modèle d'embedding à l'aide de la console Google Cloud , de l'API REST ou des bibliothèques clientes.
REST
Pour créer un job de réglage de modèle d'embedding, utilisez la méthode projects.locations.pipelineJobs.create
.
Avant d'utiliser les données de requête, effectuez les remplacements suivants :
PROJECT_ID
: ID de votre projet Google Cloud .PIPELINE_OUTPUT_DIRECTORY
: chemin d'accès aux artefacts de sortie du pipeline, commençant par "gs://".
Méthode HTTP et URL :
POST https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/pipelineJobs
Corps JSON de la requête :
{ "displayName": "tune_text_embeddings_model_sample", "runtimeConfig": { "gcsOutputDirectory": "PIPELINE_OUTPUT_DIRECTORY", "parameterValues": { "corpus_path": "gs://cloud-samples-data/ai-platform/embedding/goog-10k-2024/r11/corpus.jsonl", "queries_path": "gs://cloud-samples-data/ai-platform/embedding/goog-10k-2024/r11/queries.jsonl", "train_label_path": "gs://cloud-samples-data/ai-platform/embedding/goog-10k-2024/r11/train.tsv", "test_label_path": "gs://cloud-samples-data/ai-platform/embedding/goog-10k-2024/r11/test.tsv", "base_model_version_id":"text-embedding-004", "task_type": "DEFAULT", "batch_size": "128", "train_steps": "1000", "output_dimensionality": "768", "learning_rate_multiplier": "1.0" } }, "templateUri": "https://us-kfp.pkg.dev/ml-pipeline/llm-text-embedding/tune-text-embedding-model/v1.1.3" }
Pour envoyer votre requête, développez l'une des options suivantes :
Vous devriez recevoir une réponse JSON de ce type :
Après avoir lancé le pipeline, suivez la progression de votre job de réglage via la consoleGoogle Cloud .
SDK Vertex AI pour Python
Pour savoir comment installer ou mettre à jour le SDK Vertex AI pour Python, consultez Installer le SDK Vertex AI pour Python. Pour en savoir plus, consultez la documentation de référence de l'API SDK Vertex AI pour Python.
Java
Avant d'essayer cet exemple, suivez les instructions de configuration pour Java décrites dans le guide de démarrage rapide de Vertex AI sur l'utilisation des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Vertex AI pour Java.
Pour vous authentifier auprès de Vertex AI, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Node.js
Avant d'essayer cet exemple, suivez les instructions de configuration pour Node.js décrites dans le guide de démarrage rapide de Vertex AI sur l'utilisation des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Vertex AI pour Node.js.
Pour vous authentifier auprès de Vertex AI, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Console
Pour régler un modèle d'embedding textuel à l'aide de la console Google Cloud , vous pouvez lancer un pipeline de personnalisation en procédant comme suit :
- Dans la section "Vertex AI" de la console Google Cloud , accédez à la page Vertex AI Pipelines.
- Cliquez sur Créer une exécution pour ouvrir le volet Créer une exécution de pipeline.
- Cliquez sur Sélectionner un pipeline existant et saisissez les informations suivantes :
- Sélectionnez "ml-pipeline" dans le menu déroulant Sélectionner une ressource.
- Sélectionnez "llm-text-embedding" dans le menu déroulant Dépôt.
- Sélectionnez "tune-text-embedding-model" dans le menu déroulant Pipeline ou composant.
- Sélectionnez la version "v1.1.3" dans le menu déroulant Version.
- Spécifiez un Nom de l'exécution pour identifier cette exécution de pipeline de manière unique.
- Dans la liste déroulante Région, sélectionnez la région dans laquelle créer l'exécution de pipeline. Il s'agit de la même région que celle dans laquelle votre modèle réglé est créé.
- Cliquez sur Continuer. Le volet Configuration de l'environnement d'exécution s'affiche.
- Sous Emplacement Cloud Storage, cliquez sur Parcourir pour sélectionner le bucket Cloud Storage où stocker les artefacts de sortie du pipeline, puis cliquez sur Sélectionner.
- Sous Paramètres du pipeline, spécifiez vos paramètres pour le pipeline de réglage. Les trois paramètres requis sont
corpus_path
,queries_path
ettrain_label_path
, et leurs formats sont décrits dans Préparer l'ensemble de données d'embeddings. Pour en savoir plus sur chaque paramètre, consultez l'onglet REST de cette section. - Cliquez sur Envoyer pour créer l'exécution de votre pipeline.
Autres fonctionnalités compatibles
Le réglage d'embedding textuel est compatible avec VPC Service Controls et peut être configuré pour s'exécuter dans un cloud privé virtuel (VPC) en transmettant le paramètre network
lors de la création du PipelineJob
.
Pour utiliser les clés de chiffrement gérées par le client (CMEK), transmettez la clé au paramètre de pipeline parameterValues.encryption_spec_key_name
, ainsi que le paramètre encryptionSpec.kmsKeyName
lors de la création du PipelineJob
.
Utiliser le modèle réglé
Afficher les modèles réglés dans Model Registry
Une fois le job de réglage terminé, le modèle réglé n'est pas automatiquement déployé sur un point de terminaison. Il sera disponible en tant que ressource de modèle dans Model Registry. Vous pouvez afficher la liste des modèles de votre projet actuel, y compris vos modèles réglés, à l'aide de la console Google Cloud .
Pour afficher vos modèles réglés dans la console Google Cloud , accédez à la page Vertex AI Model Registry.
Accéder à Vertex AI Model Registry
Déployer le modèle
Une fois que vous avez réglé le modèle d'embeddings, vous devez déployer la ressource de modèle. Pour déployer votre modèle d'embeddings réglé, consultez Déployer un modèle sur un point de terminaison.
Contrairement aux modèles de fondation, les modèles d'embedding textuel réglés sont gérés par l'utilisateur.
Cela inclut la gestion des ressources de livraison, telles que le type de machine et les accélérateurs.
Pour éviter les erreurs liées à une mémoire insuffisante lors de la prédiction, il est recommandé d'utiliser pour le déploiement le type de GPU NVIDIA_TESLA_A100
, qui peut accepter des tailles de lot allant jusqu'à 5, quelle que soit la longueur de l'entrée.
De la même manière que pour le modèle de fondation textembedding-gecko
, le modèle réglé accepte jusqu'à 3 072 jetons et peut tronquer les entrées plus longues.
Obtenir des prédictions à partir d'un modèle déployé
Une fois votre modèle réglé déployé, vous pouvez utiliser l'une des commandes suivantes pour envoyer des requêtes au point de terminaison du modèle réglé.
Exemples de commandes curl pour les modèles textembedding-gecko@001
réglés
Pour obtenir des prédictions à partir d'une version réglée de textembedding-gecko@001
, utilisez l'exemple de commande curl ci-dessous.
PROJECT_ID=PROJECT_ID
LOCATION=LOCATION
ENDPOINT_URI=https://${LOCATION}-aiplatform.googleapis.com
MODEL_ENDPOINT=TUNED_MODEL_ENDPOINT_ID
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
${ENDPOINT_URI}/v1/projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/${MODEL_ENDPOINT}:predict \
-d '{
"instances": [
{
"content": "Dining in New York City"
},
{
"content": "Best resorts on the east coast"
}
]
}'
Exemples de commandes curl pour les modèles non textembedding-gecko@001
Les versions réglées d'autres modèles (par exemple, textembedding-gecko@003
et textembedding-gecko-multilingual@001
) nécessitent deux entrées supplémentaires : task_type
et title
.
Vous trouverez plus de documentation sur ces paramètres dans la commande curl.
PROJECT_ID=PROJECT_ID
LOCATION=LOCATION
ENDPOINT_URI=https://${LOCATION}-aiplatform.googleapis.com
MODEL_ENDPOINT=TUNED_MODEL_ENDPOINT_ID
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
${ENDPOINT_URI}/v1/projects/${PROJECT_ID}/locations/${LOCATION}/endpoints/${MODEL_ENDPOINT}:predict \
-d '{
"instances": [
{
"content": "Dining in New York City",
"task_type": "DEFAULT",
"title": ""
},
{
"content": "There are many resorts to choose from on the East coast...",
"task_type": "RETRIEVAL_DOCUMENT",
"title": "East Coast Resorts"
}
]
}'
Exemple de résultat :
Ce résultat s'applique aux modèles textembedding-gecko
et textembedding-gecko-multilingual
, quelle que soit la version.
{
"predictions": [
[ ... ],
[ ... ],
...
],
"deployedModelId": "...",
"model": "projects/.../locations/.../models/...",
"modelDisplayName": "tuned-text-embedding-model",
"modelVersionId": "1"
}
Étapes suivantes
- Pour obtenir des prédictions par lots pour les embeddings, consultez Obtenir des prédictions d'embeddings textuels par lots.
- Pour en savoir plus sur les embeddings multimodaux, consultez Obtenir des embeddings multimodaux.
- Pour plus d'informations sur les cas d'utilisation uniquement basés sur du texte (recherche sémantique basée sur du texte, clustering, analyse de longs documents et autres cas d'utilisation impliquant la récupération de texte ou des systèmes de questions-réponses), consultez Obtenir des embeddings textuels.