Questa pagina mostra come ottimizzare i modelli di embedding del testo come textembedding-gecko
e textembedding-gecko-multilingual
.
I modelli di embedding di base sono preaddestrati su un enorme set di dati di testo, fornendo un solido riferimento per molte attività. Per scenari che richiedono conoscenze specializzate o un rendimento altamente personalizzato, l'ottimizzazione del modello ti consente di perfezionare le rappresentazioni del modello utilizzando i tuoi dati pertinenti. L'ottimizzazione è supportata per le versioni stabili dei modelli textembedding-gecko
e textembedding-gecko-multilingual
.
I modelli di embedding di testo supportano l'ottimizzazione supervisionata. La regolazione supervisionata utilizza esempi etichettati che mostrano il tipo di output che vuoi ottenere dal tuo modello di embedding del testo durante l'inferenza.
Per scoprire di più sull'ottimizzazione del modello, consulta l'articolo Come funziona l'ottimizzazione del modello.
Miglioramento della qualità previsto
Vertex AI utilizza un metodo di ottimizzazione efficiente dei parametri per la personalizzazione. Questa metodologia mostra miglioramenti significativi della qualità fino al 41% (in media il 12%) sugli esperimenti eseguiti su set di dati di benchmark di recupero pubblico.
Caso d'uso per l'ottimizzazione di un modello di embedding
L'ottimizzazione di un modello di embedding di testo può consentire al modello di adattarsi agli embedding per un compito o un dominio specifico. Ciò può essere utile se il modello di embedding preaddestrato non è adatto alle tue esigenze specifiche. Ad esempio, potresti perfezionare un modello di embedding su un set di dati specifico di richieste di assistenza clienti per la tua azienda. In questo modo, un chatbot potrebbe comprendere i diversi tipi di problemi di assistenza clienti che i tuoi clienti riscontrano di solito ed essere in grado di rispondere alle loro domande in modo più efficace. Senza la regolazione, il modello non conosce le specifiche dei ticket dell'assistenza clienti o le soluzioni a problemi specifici del tuo prodotto.
Flusso di lavoro di ottimizzazione
Il flusso di lavoro di ottimizzazione del modello su Vertex AI per textembedding-gecko
e
textembedding-gecko-multilingual
è il seguente:
- Prepara il set di dati per l'ottimizzazione del modello.
- Carica il set di dati di ottimizzazione del modello in un bucket Cloud Storage.
- Configura il progetto per Vertex AI Pipelines.
- Crea un job di ottimizzazione del modello.
- Esegui il deployment del modello ottimizzato in un endpoint Vertex AI con lo stesso nome. A differenza dei job di ottimizzazione dei modelli di testo o Codey, un job di ottimizzazione dell'embedding del testo non esegue il deployment dei modelli ottimizzati su un endpoint Vertex AI.
Prepara il set di dati degli incorporamenti
Il set di dati utilizzato per ottimizzare un modello di embedding include dati in linea con l'attività che vuoi che venga eseguita dal modello.
Formato del set di dati per l'ottimizzazione di un modello di embedding
Il set di dati di addestramento è costituito dai seguenti file, che devono essere in Cloud Storage. Il percorso dei file è definito dai parametri al momento dell'avvio della pipeline di ottimizzazione. I tre tipi di file sono il file del corpus, il file di query e le etichette. Sono necessarie solo le etichette di addestramento, ma puoi anche fornire etichette di convalida e di test per un maggiore controllo.
File del corpus: il percorso è definito dal parametro
corpus_path
. Si tratta di un file JSONL in cui ogni riga contiene i campi_id
,title
etext
con valori di stringa._id
etext
sono obbligatori, mentretitle
è facoltativo. Ecco un esempio di filecorpus.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."}
File di query: il file di query contiene le query di esempio. Il percorso è definito dal parametro
queries_path
. Il file di query è in formato JSONL e ha gli stessi campi del file del corpus. Ecco un esempio di filequeries.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"}
Etichette di addestramento: il percorso è definito dal parametro
train_label_path
. train_label_path è l'URI Cloud Storage della posizione dei dati delle etichette di addestramento e viene specificato quando crei il job di ottimizzazione. Le etichette devono essere un file TSV con un'intestazione. Un sottoinsieme delle query e del corpus deve essere incluso nel file delle etichette di addestramento. Il file deve avere le colonnequery-id
,corpus-id
escore
.query-id
è una stringa che corrisponde alla chiave_id
del file di query, mentrecorpus-id
è una stringa che corrisponde a_id
nel file del corpus.Score
è un valore intero non negativo. Se una coppia di query e documento non è correlata, puoi escluderla dal file delle etichette di addestramento o includerla con un punteggio pari a zero. Qualsiasi voto maggiore di zero indica che il documento è correlato alla query. Numeri più elevati indicano un livello di pertinenza maggiore. Se il punteggio viene omesso, il valore predefinito è 1. Ecco un esempio di filetrain_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
Etichette di test: facoltative. Le etichette di test hanno lo stesso formato delle etichette di addestramento e sono specificate dal parametro
test_label_path
. Se non viene fornitotest_label_path
, le etichette di test verranno suddivise automaticamente dalle etichette di addestramento.Etichette di convalida: facoltative. Le etichette di convalida hanno lo stesso formato delle etichette di addestramento e sono specificate dal parametro
validation_label_path
. Se non viene fornitovalidation_label_path
, le etichette di convalida verranno suddivise automaticamente dalle etichette di addestramento.
Requisiti relativi alle dimensioni del set di dati
I file del set di dati forniti devono soddisfare i seguenti vincoli:
- Il numero di query deve essere compreso tra 9 e 10.000.
- Il numero di documenti nel corpus deve essere compreso tra 9 e 500.000.
- Ogni file di etichette del set di dati deve includere almeno 3 ID query e in tutti i suddivisioni del set di dati devono essere presenti almeno 9 ID query.
- Il numero totale di etichette deve essere inferiore a 500.000.
Configurare il progetto per Vertex AI Pipelines
La regolazione viene eseguita all'interno del progetto utilizzando la piattaforma Vertex AI Pipelines.
Configurazione delle autorizzazioni
La pipeline esegue il codice di addestramento in due agenti di servizio. A questi agenti di servizio devono essere assegnati ruoli specifici per poter iniziare l'addestramento utilizzando il progetto e il set di dati.
Account di servizio predefinito Compute Engine
PROJECT_NUMBER-compute@developer.gserviceaccount.com
Questo account di servizio richiede:
Storage Object Viewer
ha accesso a ogni file del set di dati che hai creato in Cloud Storage.Storage Object User
accesso alla directory Cloud Storage di output della pipeline, PIPELINE_OUTPUT_DIRECTORY.Vertex AI User
al tuo progetto.
Anziché l'account di servizio predefinito di Compute Engine, puoi specificare un account di servizio personalizzato. Per ulteriori informazioni, consulta Configurare un account di servizio con autorizzazioni granulari.
Vertex AI Tuning Service Agent
service-PROJECT_NUMBER@gcp-sa-aiplatform-ft.iam.gserviceaccount.com
Questo account di servizio richiede:
Storage Object Viewer
ha accesso a ogni file del set di dati che hai creato in Cloud Storage.Storage Object User
accesso alla directory Cloud Storage di output della pipeline, PIPELINE_OUTPUT_DIRECTORY.
Per ulteriori informazioni sulla configurazione delle autorizzazioni dei set di dati Cloud Storage, consulta Configurare un bucket Cloud Storage per gli elementi della pipeline.
Utilizzare gli acceleratori
La regolazione richiede acceleratori GPU. Per la pipeline di ottimizzazione dell'inserimento di testo è possibile utilizzare uno dei seguenti acceleratori:
NVIDIA_L4
NVIDIA_TESLA_A100
NVIDIA_TESLA_T4
NVIDIA_TESLA_V100
NVIDIA_TESLA_P100
L'avvio di un job di ottimizzazione richiede una quota Restricted image training GPUs
adeguata per il tipo di acceleratore e la regione selezionati, ad esempio Restricted image training Nvidia V100 GPUs per region
. Per aumentare la quota del progetto, vedi Richiesta di quota aggiuntiva.
Non tutti gli acceleratori sono disponibili in tutte le regioni. Per ulteriori informazioni, consulta la sezione Utilizzare gli acceleratori in Vertex AI.
Crea un job di ottimizzazione del modello di embedding
Puoi creare un job di ottimizzazione del modello di embedding utilizzando la console Google Cloud, l'API REST o le librerie client.
REST
Per creare un job di ottimizzazione del modello di embedding, utilizza il
metodo projects.locations.pipelineJobs.create
.
Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:
PROJECT_ID
: l'ID del tuo progetto Google Cloud.PIPELINE_OUTPUT_DIRECTORY
: percorso per gli elementi di output della pipeline, che inizia con "gs://".
Metodo HTTP e URL:
POST https://us-central1-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/pipelineJobs
Corpo JSON della richiesta:
{ "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" }
Per inviare la richiesta, espandi una di queste opzioni:
Dovresti ricevere una risposta JSON simile alla seguente:
Dopo aver lanciato la pipeline, segui l'avanzamento del job di ottimizzazione tramite la console Google Cloud.
Python
Per scoprire come installare o aggiornare l'SDK Vertex AI per Python, consulta Installare l'SDK Vertex AI per Python. Per saperne di più, consulta la documentazione di riferimento dell'API Python.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione Java riportate nella guida rapida all'utilizzo delle librerie client di Vertex AI. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Java di Vertex AI.
Per autenticarti in Vertex AI, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Node.js
Prima di provare questo esempio, segui le istruzioni di configurazione Node.js riportate nella guida rapida all'utilizzo delle librerie client di Vertex AI. Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Node.js di Vertex AI.
Per autenticarti in Vertex AI, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Console
Per ottimizzare un modello di embedding del testo utilizzando la console Google Cloud, puoi lanciare una pipeline di personalizzazione seguendo questi passaggi:
- Nella sezione Vertex AI della console Google Cloud, vai alla pagina Pipeline Vertex AI.
- Fai clic su Crea esecuzione per aprire il riquadro Crea esecuzione pipeline.
- Fai clic su Seleziona dalle pipeline esistenti e inserisci i seguenti dettagli:
- Seleziona "ml-pipeline" dal menu a discesa Seleziona una risorsa.
- Seleziona "llm-text-embedding" dal menu a discesa Repository.
- Seleziona "tune-text-embedding-model" dal menu a discesa Pipeline o componente.
- Seleziona la versione etichettata come "v1.1.3" dal menu a discesa Versione.
- Specifica un nome esecuzione per identificare in modo univoco l'esecuzione della pipeline.
- Nell'elenco a discesa Regione, seleziona la regione in cui creare l'esecuzione della pipeline, che sarà la stessa in cui è stato creato il modello ottimizzato.
- Fai clic su Continua. Viene visualizzato il riquadro Configurazione di runtime.
- In Posizione di Cloud Storage, fai clic su Sfoglia per selezionare il bucket Cloud Storage per l'archiviazione degli elementi di output della pipeline e poi fai clic su Seleziona.
- In Parametri pipeline, specifica i parametri per la pipeline di ottimizzazione. I tre parametri obbligatori sono
corpus_path
,queries_path
etrain_label_path
, con i formati descritti in Preparare il set di dati di embedding. Per informazioni più dettagliate su ciascun parametro, consulta la scheda REST di questa sezione. - Fai clic su Invia per creare l'esecuzione della pipeline.
Altre funzionalità supportate
La regolazione dell'inserimento di testo supporta i Controlli di servizio VPC e può essere configurata per l'esecuzione in un virtual private cloud (VPC) passando il parametro network
durante la creazione di PipelineJob
.
Per utilizzare le chiavi di crittografia gestite dal cliente (CMEK), passa la chiave al parametro della pipeline parameterValues.encryption_spec_key_name
, nonché al parametro encryptionSpec.kmsKeyName
durante la creazione di PipelineJob
.
Utilizza il modello ottimizzato
Visualizzare i modelli ottimizzati nel Model Registry
Al termine del job di ottimizzazione, il modello ottimizzato non viene implementato automaticamente in un endpoint. Sarà disponibile come risorsa Model nel Model Registry. Puoi visualizzare un elenco dei modelli nel tuo progetto corrente, inclusi quelli ottimizzati, utilizzando la console Google Cloud.
Per visualizzare i modelli ottimizzati nella console Google Cloud, vai alla pagina Model Registry di Vertex AI.
Vai a Vertex AI Model Registry
Esegui il deployment del modello
Dopo aver ottimizzato il modello di embedding, devi eseguire il deployment della risorsa Model. Per eseguire il deployment del modello di embedding ottimizzato, consulta Eseguire il deployment di un modello in un endpoint.
A differenza dei modelli di base, i modelli di embedding del testo ottimizzati sono gestiti dall'utente.
Sono incluse la gestione delle risorse di pubblicazione, come il tipo di macchina e gli acceleratori.
Per evitare errori di esaurimento della memoria durante la previsione, ti consigliamo di eseguire il deployment utilizzando il tipo di GPU NVIDIA_TESLA_A100
, che può supportare dimensioni dei batch fino a 5 per qualsiasi lunghezza di input.
Analogamente al modello di base textembedding-gecko
, il modello ottimizzato supporta fino a 3072 token e può troncare gli input più lunghi.
Ottenere previsioni su un modello di cui è stato eseguito il deployment
Una volta eseguito il deployment del modello ottimizzato, puoi utilizzare uno dei seguenti comandi per inviare richieste all'endpoint del modello ottimizzato.
Comandi curl di esempio per i modelli textembedding-gecko@001
ottimizzati
Per ottenere le previsioni da una versione ottimizzata di textembedding-gecko@001
, utilizza il comando curl di esempio riportato di seguito.
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"
}
]
}'
Comandi curl di esempio per i modelli non textembedding-gecko@001
Le versioni ottimizzate di altri modelli (ad es. textembedding-gecko@003
e textembedding-gecko-multilingual@001
)
richiedono due input aggiuntivi: task_type
e title
.
Puoi trovare ulteriore documentazione su questi parametri all'indirizzo
comando 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"
}
]
}'
Output di esempio
Questo output si applica sia ai modelli textembedding-gecko
sia ai modelli textembedding-gecko-multilingual
, indipendentemente dalla versione.
{
"predictions": [
[ ... ],
[ ... ],
...
],
"deployedModelId": "...",
"model": "projects/.../locations/.../models/...",
"modelDisplayName": "tuned-text-embedding-model",
"modelVersionId": "1"
}
Passaggi successivi
- Per ottenere previsioni batch per gli incorporamenti, consulta Ottenere previsioni batch degli incorporamenti di testo
- Per scoprire di più sugli embedding multimodali, consulta Ottenere embedding multimodali
- Per informazioni sui casi d'uso solo di testo (ricerca semantica basata sul testo, clustering, analisi di documenti nel formato lungo e altri casi d'uso di recupero di testo o risposta alle domande), leggi Ottenere embedding di testo.