Cette page explique comment régler les modèles de représentation vectorielle continue de texte tels que textembedding-gecko
et textembedding-gecko-multilingual
.
Les modèles de représentations vectorielles continues de base sont pré-entraînés sur un vaste ensemble de données de texte, fournissant ainsi une référence solide pour de nombreuses tâches. Pour les scénarios nécessitant des connaissances spécialisées ou des performances hautement 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 de texte 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 la page 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 de récupération publique.
Cas d'utilisation pour le réglage d'un modèle d'embedding
Le réglage d'un modèle de représentation vectorielle continue de texte peut permettre à votre modèle de s'adapter aux représentations vectorielles continues d'un domaine ou d'une tâche spécifique. Cela peut être utile si le modèle de représentation vectorielle continue pré-entraînée n'est pas adapté à vos besoins spécifiques. Par exemple, vous pouvez affiner un modèle de représentation vectorielle continue 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 dans 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éparer l'ensemble de données de réglage du modèle
- Importer l'ensemble de données de réglage du modèle dans un bucket Cloud Storage
- Configurer votre projet pour Vertex AI Pipelines.
- Créer un job de réglage pour un 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 de représentations vectorielles continues
L'ensemble de données permettant de régler un modèle de représentations vectorielles continues 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 de représentations vectorielles continues
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 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 mieux contrôler.
Fichier 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's Generative AI Studio offers a Google Cloud console tool for rapidly prototyping and testing generative AI models. Learn how you can use Generative 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 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 libellés d'entraînement. Il est spécifié lorsque vous créez la tâche de réglage. Les libellés 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 qui correspond à la clé_id
du fichier de requête,corpus-id
est une chaîne correspondant à_id
dans le fichier Corpus.Score
est une valeur entière non négative. 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 40 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 divisions d'ensembles 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 disposer de 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:
Storage Object Viewer
a accès à chaque fichier d'ensemble de données que vous avez créé dans Cloud Storage.Storage Object User
a accès au répertoire Cloud Storage de sortie de votre pipeline, PIPELINE_OUTPUT_DIRECTORY.Vertex AI User
a accès à 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 la page 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:
Storage Object Viewer
a accès à chaque fichier d'ensemble de données que vous avez créé dans Cloud Storage.Storage Object User
a accès 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 la page Configurer un bucket Cloud Storage pour les artefacts de pipeline.
Utiliser des accélérateurs
Le réglage nécessite des accélérateurs de 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 la page 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 d'un modèle d'embedding textuel à l'aide de la console Google Cloud, de l'API REST ou des bibliothèques clientes.
REST
Pour créer une tâche 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 ci-dessous, 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 tâche de réglage via la console Google Cloud.
Python
Pour savoir comment installer ou mettre à jour le SDK Vertex AI pour Python, consultez la section Installer le SDK Vertex AI pour Python. Pour en savoir plus, consultez la documentation de référence de l'API 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 à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Vertex AI 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 à l'aide des bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API Vertex AI 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 la liste déroulante Sélectionner une ressource.
- Sélectionnez "llm-text-embedding" dans la liste déroulante Dépôt.
- Sélectionnez "tune-text-embedding-model" dans la liste déroulante Pipeline ou composant.
- Sélectionnez la version "v1.1.3" dans le menu déroulant Version.
- Spécifiez un nom d'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 sur la page Préparer l'ensemble de données d'embeddings. Pour en savoir plus sur chaque paramètre, reportez-vous à 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 de 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 Registre de modèles de Vertex AI.
Accéder à Vertex AI Model Registry
Déployer le modèle
Une fois que vous avez réglé le modèle de représentation vectorielle continue, vous devez déployer la ressource de modèle. Pour déployer votre modèle de représentation vectorielle continue ajusté, consultez la section 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 diffusion, 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 base 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 lot de représentations vectorielles continues, consultez la page Obtenir des prédictions de représentations vectorielles continues de texte par lot.
- Pour en savoir plus sur les embeddings multimodaux, consultez la page Obtenir des embeddings multimodaux.
- Pour plus d'informations sur les cas d'utilisation uniquement basés sur du texte, la recherche sémantique basée sur du texte, le clustering, l'analyse de documents de longue durée et d'autres cas d'utilisation, comme la récupération de texte ou les systèmes de questions-réponses, consultez la page Obtenir des représentations vectorielles continues de texte.