Debug dei prompt LLM con lo strumento di interpretabilità dell'apprendimento (LIT) su Google Cloud

1. Panoramica

Questo lab fornisce una procedura dettagliata su come eseguire il deployment di un server di applicazioni LIT su Google Cloud Platform (Google Cloud) per interagire con i modelli di base di Vertex AI Gemini e con i modelli linguistici di grandi dimensioni (LLM) di terze parti ospitati autonomamente. Sono incluse anche indicazioni su come utilizzare l'interfaccia utente di LIT per il debug tempestivo e l'interpretazione del modello.

Seguendo questo lab, gli utenti impareranno a:

  • Configura un server LIT su Google Cloud.
  • Connetti il server LIT ai modelli Gemini di Vertex AI o ad altri LLM self-hosted.
  • Utilizza l'interfaccia utente di LIT per analizzare, eseguire il debug e interpretare i prompt per migliorare il rendimento e le informazioni del modello.

Che cos'è LIT?

LIT è uno strumento visivo e interattivo per la comprensione dei modelli che supporta testo, immagini e dati tabulari. Può essere eseguito come server autonomo o all'interno di ambienti di notebook come Google Colab, Jupyter e Google Cloud Vertex AI. LIT è disponibile su PyPI e GitHub.

Originariamente creato per comprendere i modelli di classificazione e regressione, gli aggiornamenti recenti hanno aggiunto strumenti per il debug dei prompt LLM che consentono di esplorare in che modo i contenuti degli utenti, dei modelli e del sistema influenzano il comportamento di generazione.

Che cos'è Vertex AI e Model Garden?

Vertex AI è una piattaforma di machine learning (ML) che consente di addestrare ed eseguire il deployment di modelli ML e applicazioni di IA, nonché di personalizzare gli LLM per l'utilizzo nelle applicazioni basate sull'IA. Vertex AI combina i flussi di lavoro di data engineering, data science e ML engineering, consentendo ai team di collaborare utilizzando un set di strumenti comune e di scalare le applicazioni sfruttando i vantaggi di Google Cloud.

Vertex Model Garden è una libreria di modelli ML che ti aiuta a scoprire, testare, personalizzare ed eseguire il deployment di modelli e asset di terze parti di proprietà di Google e selezionati.

Che cosa farai

Utilizzerai Google Cloud Shell e Cloud Run per eseguire il deployment di un container Docker dall'immagine predefinita di LIT.

Cloud Run è una piattaforma di calcolo gestita che ti consente di eseguire container direttamente sull'infrastruttura scalabile di Google, anche su GPU.

Set di dati

Per impostazione predefinita, la demo utilizza il set di dati di esempio per il debug dei prompt LIT oppure puoi caricarne uno tuo tramite l'interfaccia utente.

Prima di iniziare

Per questa guida di riferimento, hai bisogno di un progetto Google Cloud. Puoi crearne uno nuovo o selezionare un progetto che hai già creato.

2. Avviare la console Google Cloud e Cloud Shell

In questo passaggio, avvierai la console Google Cloud e utilizzerai Cloud Shell.

2-a: avvia una console Google Cloud

Avvia un browser e vai alla console Google Cloud.

La console Google Cloud è un'interfaccia di amministrazione web potente e sicura che ti consente di gestire rapidamente le risorse Google Cloud. È uno strumento DevOps da usare ovunque ti trovi.

2-b: Avvia Google Cloud Shell

Cloud Shell è un ambiente operativo e di sviluppo online accessibile ovunque tramite browser. Puoi gestire le tue risorse con il suo terminale online precaricato con utilità come lo strumento a riga di comando gcloud, kubectl e altro. Puoi anche sviluppare, creare, eseguire il debug e il deployment delle tue app basate su cloud utilizzando l'editor di Cloud Shell online. Cloud Shell fornisce un ambiente online pronto per gli sviluppatori con un set di strumenti preferiti preinstallato e 5 GB di spazio di archiviazione permanente. Utilizzerai il prompt dei comandi nei passaggi successivi.

Avvia una shell Google Cloud utilizzando l'icona in alto a destra della barra dei menu, cerchiata in blu nello screenshot seguente.

Lancio della console Google Cloud

Nella parte inferiore della pagina dovresti vedere un terminale con una shell Bash.

Google Cloud Console

2-c: Imposta progetto Google Cloud

Devi impostare l'ID progetto e la regione del progetto utilizzando il comando gcloud.

# Set your GCP Project ID.
gcloud config set project your-project-id

# Set your GCP Project Region.
gcloud config set run/region your-project-region

3. Esegui il deployment dell'immagine Docker del server di app LIT con Cloud Run

3-a: esegui il deployment dell'app LIT in Cloud Run

Per prima cosa devi impostare la versione più recente di LIT-App come versione di cui eseguire il deployment.

# Set latest version as your LIT_SERVICE_TAG.
export LIT_SERVICE_TAG=latest
# List all the public LIT GCP App server docker images.
gcloud container images  list-tags  us-east4-docker.pkg.dev/lit-demos/lit-app/gcp-lit-app

Dopo aver impostato il tag della versione, devi assegnare un nome al servizio.

# Set your lit service name. While 'lit-app-service' is provided as a placeholder, you can customize the service name based on your preferences.
export LIT_SERVICE_NAME=lit-app-service

Dopodiché, puoi eseguire il seguente comando per eseguire il deployment del contenitore in Cloud Run.

# Use below cmd to deploy the LIT App to Cloud Run.
gcloud run deploy $LIT_SERVICE_NAME \
--image us-east4-docker.pkg.dev/lit-demos/lit-app/gcp-lit-app:$LIT_SERVICE_TAG \
--port 5432 \
--cpu 8 \
--memory 32Gi \
--no-cpu-throttling \
--no-allow-unauthenticated

LIT ti consente anche di aggiungere il set di dati all'avvio del server. Per farlo, imposta la variabile DATASETS in modo da includere i dati che vuoi caricare, utilizzando il formato name:path, ad esempio data_foo:/bar/data_2024.jsonl. Il formato del set di dati deve essere .jsonl, in cui ogni record contiene prompt e i campi facoltativi target e source. Per caricare più set di dati, separali con una virgola. Se non è impostato, verrà caricato il set di dati di esempio per il debug dei prompt LIT.

# Set the dataset.
export DATASETS=[DATASETS]

Impostando MAX_EXAMPLES, puoi impostare il numero massimo di esempi da caricare da ogni set di valutazione.

# Set the max examples.
export MAX_EXAMPLES=[MAX_EXAMPLES]

Poi, nel comando di deployment, puoi aggiungere

--set-env-vars "DATASETS=$DATASETS" \
--set-env-vars "MAX_EXAMPLES=$MAX_EXAMPLES" \

3-b: Visualizza il servizio app LIT

Dopo aver creato il server di app LIT, puoi trovare il servizio nella sezione Cloud Run di Cloud Console.

Seleziona il servizio LIT App che hai appena creato. Assicurati che il nome del servizio corrisponda a LIT_SERVICE_NAME.

Elenco Cloud Run nella console Google Cloud

Puoi trovare l'URL del servizio facendo clic sul servizio di cui hai appena eseguito il deployment.

URL del servizio Google Cloud Find

Dovresti quindi riuscire a visualizzare l'interfaccia utente di LIT. Se si verifica un errore, consulta la sezione Risoluzione dei problemi.

Home page della demo LIT

Puoi controllare la sezione LOG per monitorare l'attività, visualizzare i messaggi di errore e seguire l'avanzamento del deployment.

Log di Cloud Run nella console Google Cloud

Puoi controllare la sezione METRICHE per visualizzare le metriche del servizio.

Metriche Cloud Run della console Google Cloud

3-c: Carica i set di dati

Fai clic sull'opzione Configure nell'interfaccia utente di LIT, seleziona Dataset. Carica il set di dati specificandone un nome e fornendo l'URL. Il formato del set di dati deve essere .jsonl, in cui ogni record contiene prompt e i campi facoltativi target e source.

Set di dati di caricamento LIT

4. Preparare i modelli Gemini in Model Garden di Vertex AI

I modelli di base Gemini di Google sono disponibili nell'API Vertex AI. LIT fornisce il wrapper VertexAIModelGarden del modello per utilizzare questi modelli per la generazione. Basta specificare la versione che ti interessa (ad es. "gemini-1.5-pro-001") tramite il parametro del nome del modello. Un vantaggio fondamentale dell'utilizzo di questi modelli è che non richiedono alcuno sforzo aggiuntivo per il deployment. Per impostazione predefinita, hai accesso immediato a modelli come Gemini 1.0 Pro e Gemini 1.5 Pro su Google Cloud, eliminando la necessità di ulteriori passaggi di configurazione.

4-a: Concedi le autorizzazioni Vertex AI

Per eseguire query su Gemini in Google Cloud, devi concedere le autorizzazioni Vertex AI all'account di servizio. Assicurati che il nome dell'account di servizio sia Default compute service account. Copia l'indirizzo email dell'account di servizio.

Account di servizio di Google Cloud

Aggiungi l'indirizzo email dell'account di servizio come entità con il ruolo Vertex AI User nella lista consentita IAM.

Aggiungi email degli account di servizio

4-b: Carica i modelli Gemini

Caricherai i modelli Gemini e ne regolerai i parametri seguendo i passaggi riportati di seguito.

    1. Fai clic sull'opzione Configure nella UI di LIT.
    1. Seleziona l'opzione gemini in Select a base model.
    1. Devi assegnare un nome al modello in new_name.
    1. Inserisci i modelli Gemini selezionati come model_name.
    1. Fai clic su Load Model.
    1. Fai clic su Submit.

Carica modello Gemini LIT

5. Esegui il deployment del server di modelli LLM auto-ospitato su Google Cloud

L'hosting autonomo di LLM con l'immagine Docker del server di modelli di LIT ti consente di utilizzare le funzioni di rilevanza e tokenizzazione di LIT per ottenere approfondimenti più approfonditi sul comportamento del modello. L'immagine del server del modello funziona con i modelli KerasNLP o Hugging Face Transformers, inclusi i pesi forniti dalla libreria e ospitati autonomamente, ad esempio su Google Cloud Storage.

5-a: Configura i modelli

Ogni contenitore carica un modello configurato utilizzando le variabili di ambiente.

Devi specificare i modelli da caricare impostando MODEL_CONFIG. Il formato deve essere name:path, ad esempio model_foo:model_foo_path. Il percorso può essere un URL, un percorso file locale o il nome di una preimpostazione per il framework di deep learning configurato (per saperne di più, consulta la tabella seguente). Questo server è stato testato con Gemma, GPT2, Llama e Mistral su tutti i valori DL_FRAMEWORK supportati. Altri modelli dovrebbero funzionare, ma potrebbero essere necessarie delle modifiche.

# Set models you want to load. While 'gemma2b is given as a placeholder, you can load your preferred model by following the instructions above.
export MODEL_CONFIG=gemma2b:gemma_2b_en

Inoltre, il server del modello LIT consente la configurazione di varie variabili di ambiente utilizzando il comando riportato di seguito. Per informazioni dettagliate, consulta la tabella. Tieni presente che ogni variabile deve essere impostata singolarmente.

# Customize the variable value as needed.
export [VARIABLE]=[VALUE]

Variabile

Valori

Descrizione

DL_FRAMEWORK

kerasnlp, transformers

La libreria di modellazione utilizzata per caricare i pesi del modello nel runtime specificato. Il valore predefinito è kerasnlp.

DL_RUNTIME

torch, tensorflow

Il framework di backend di deep learning su cui viene eseguito il modello. Tutti i modelli caricati da questo server utilizzeranno lo stesso backend; le incompatibilità daranno luogo a errori. Il valore predefinito è torch.

PRECISIONE

bfloat16, float32

Precisione in virgola mobile per i modelli LLM. Il valore predefinito è bfloat16.

BATCH_SIZE

Numeri interi positivi

Il numero di esempi da elaborare per batch. Il valore predefinito è 1.

SEQUENCE_LENGTH

Numeri interi positivi

La lunghezza massima della sequenza del prompt di input più il testo generato. Il valore predefinito è 512.

5-b: esegui il deployment del server del modello in Cloud Run

Innanzitutto devi impostare la versione più recente di Model Server come versione da eseguire.

# Set latest as MODEL_VERSION_TAG.
export MODEL_VERSION_TAG=latest
# List all the public LIT GCP model server docker images.
gcloud container images  list-tags  us-east4-docker.pkg.dev/lit-demos/lit-app/gcp-model-server

Dopo aver impostato il tag versione, devi assegnare il nome model-server.

# Set your Service name.
export MODEL_SERVICE_NAME='gemma2b-model-server'

Successivamente, puoi eseguire questo comando per eseguire il deployment del container in Cloud Run. Se non imposti le variabili di ambiente, verranno applicati i valori predefiniti. Poiché la maggior parte degli LLM richiede risorse di calcolo costose, è vivamente consigliato utilizzare una GPU. Se preferisci eseguire l'esecuzione solo su CPU (che funziona bene per modelli di piccole dimensioni come GPT2), puoi rimuovere gli argomenti correlati --gpu 1 --gpu-type nvidia-l4 --max-instances 7.

# Deploy the model service container.
gcloud beta run deploy $MODEL_SERVICE_NAME \
--image us-east4-docker.pkg.dev/lit-demos/lit-app/gcp-model-server:$MODEL_VERSION_TAG \
--port 5432 \
--cpu 8 \
--memory 32Gi \
--no-cpu-throttling \
--gpu 1 \
--gpu-type nvidia-l4  \
--max-instances 7  \
--set-env-vars "MODEL_CONFIG=$MODEL_CONFIG" \
--no-allow-unauthenticated

Inoltre, puoi personalizzare le variabili di ambiente aggiungendo i seguenti comandi. Includi solo le variabili di ambiente necessarie per le tue esigenze specifiche.

--set-env-vars "DL_FRAMEWORK=$DL_FRAMEWORK" \
--set-env-vars "DL_RUNTIME=$DL_RUNTIME" \
--set-env-vars "PRECISION=$PRECISION" \
--set-env-vars "BATCH_SIZE=$BATCH_SIZE" \
--set-env-vars "SEQUENCE_LENGTH=$SEQUENCE_LENGTH" \

Per accedere a determinati modelli potrebbero essere necessarie variabili di ambiente aggiuntive. Consulta le istruzioni di Kaggle Hub (utilizzato per i modelli KerasNLP) e di Hugging Face Hub, a seconda dei casi.

5-c: Accesso al server del modello

Dopo aver creato il server del modello, il servizio avviato è disponibile nella sezione Cloud Run del tuo progetto Google Cloud.

Seleziona il server modello appena creato. Assicurati che il nome del servizio sia lo stesso di MODEL_SERVICE_NAME.

Elenco Cloud Run nella console Google Cloud

Puoi trovare l'URL del servizio facendo clic sul servizio modello di cui hai appena eseguito il deployment.

URL del servizio Google Cloud Find

Puoi controllare la sezione LOG per monitorare l'attività, visualizzare i messaggi di errore e seguire l'avanzamento del deployment.

Log di Cloud Run nella console Google Cloud

Puoi controllare la sezione METRICHE per visualizzare le metriche del servizio.

Metriche di Cloud Run nella console Google Cloud

5-d: Carica modelli ospitati autonomamente

Se esegui il proxy del server LIT nel Passaggio 3 (vedi la sezione Risoluzione dei problemi), dovrai ottenere il token di identità Google Cloud eseguendo questo comando.

# Find your GCP identity token.
gcloud auth print-identity-token

Caricherai i modelli self-hosted e ne regolerai i parametri seguendo i passaggi riportati di seguito.

  1. Fai clic sull'opzione Configure nella UI di LIT.
  2. Seleziona l'opzione LLM (self hosted) in Select a base model.
  3. Devi assegnare un nome al modello in new_name.
  4. Inserisci l'URL del server del modello come base_url.
  5. Inserisci il token di identità ottenuto in identity_token se esegui il proxy per il server app LIT (vedi i passaggi 3 e 7). In caso contrario, lascialo vuoto.
  6. Fai clic su Load Model.
  7. Fai clic su Submit.

Carica modelli LLM LIT

6. Interagire con LIT su Google Cloud

LIT offre una vasta gamma di funzionalità per aiutarti a eseguire il debug e comprendere i comportamenti dei modelli. Puoi eseguire un'operazione semplice come eseguire query sul modello, digitando del testo in una casella e visualizzando le previsioni del modello oppure puoi esaminare i modelli in modo approfondito con la suite di potenti funzionalità di LIT, tra cui:

6-a: esegui una query sul modello tramite LIT

LIT esegue automaticamente una query sul set di dati dopo il caricamento del modello e del set di dati. Puoi visualizzare la risposta di ogni modello selezionandola nelle colonne.

Risposta alla visualizzazione LIT

Risposta LIT

6-b: utilizza la tecnica di evidenza della sequenza

Al momento, la tecnica Sequence Salience su LIT supporta solo modelli self-hosted.

La salienza della sequenza è uno strumento visivo che aiuta a eseguire il debug dei prompt LLM evidenziando le parti di un prompt più importanti per un determinato output. Per ulteriori informazioni su Sequence Salience, guarda il tutorial completo per saperne di più su come utilizzare questa funzionalità.

Per accedere ai risultati di pertinenza, fai clic su qualsiasi input o output nel prompt o nella risposta e verranno visualizzati i risultati di pertinenza.

Risultati di pertinenza della sequenza LIT

6-c: Modifica manuale del prompt e del target

LIT ti consente di modificare manualmente qualsiasi valore prompt e target per un punto dati esistente. Se fai clic su Add, il nuovo input verrà aggiunto al set di dati.

Modifica manuale LIT

6-d: Confronta i prompt uno accanto all'altro

LIT ti consente di confrontare i prompt affiancati con esempi originali e modificati. Puoi modificare manualmente un esempio e visualizzare contemporaneamente il risultato della previsione e l'analisi dell'importanza della sequenza sia per la versione originale che per quella modificata. Puoi modificare il prompt per ogni punto dati e LIT genererà la risposta corrispondente eseguendo una query sul modello.

Set di dati di confronto LIT

6-e: Confrontare più modelli uno accanto all'altro

LIT consente il confronto affiancato dei modelli su singoli esempi di generazione di testo e di punteggio, nonché su esempi aggregati per metriche specifiche. Eseguendo query su vari modelli caricati, puoi confrontare facilmente le differenze nelle loro risposte.

Risposta del modello di confronto LIT

6-f: Generatori di controfattuali automatici

Puoi utilizzare generatori di controfattuali automatici per creare input alternativi e vedere immediatamente il comportamento del tuo modello.

Input generato automaticamente da LIT

6-g: valuta le prestazioni del modello

Puoi valutare le prestazioni del modello utilizzando le metriche (attualmente supportano i punteggi BLEU e ROUGE per la generazione di testo) nell'intero set di dati o in qualsiasi sottoinsieme di esempi filtrati o selezionati.

LIT Visualizza metriche del modello

7. Risoluzione dei problemi

7-a: Potenziali problemi di accesso e soluzioni

Poiché --no-allow-unauthenticated viene applicato durante il deployment in Cloud Run, potresti riscontrare errori di accesso non consentito come mostrato di seguito.

Errore Google Cloud: accesso negato

Esistono due approcci per accedere al servizio LIT App.

1. Proxy al servizio locale

Puoi eseguire il proxy del servizio all'host locale utilizzando il comando seguente.

# Proxy the service to local host.
gcloud run services proxy $LIT_SERVICE_NAME

A questo punto dovresti essere in grado di accedere al server LIT facendo clic sul link del servizio proxy.

2. Autentica gli utenti direttamente

Puoi seguire questo link per autenticare gli utenti e consentire l'accesso diretto al servizio dell'app LIT. Questo approccio può anche consentire a un gruppo di utenti di accedere al servizio. Per lo sviluppo che prevede la collaborazione di più persone, questa è un'opzione più efficace.

7-b: Controlla che il server di modelli sia stato avviato correttamente

Per assicurarti che il server del modello sia stato avviato correttamente, puoi eseguire una query direttamente sul server inviando una richiesta. Il server del modello fornisce tre endpoint: predict, tokenize e salience. Assicurati di fornire sia il campo prompt sia il campo target nella richiesta.

# Query the model server predict endpoint.
curl -X POST  http://YOUR_MODEL_SERVER_URL/predict -H "Content-Type: application/json" -d '{"inputs":[{"prompt":"[YOUR PROMPT]", "target":[YOUR TARGET]}]}'

# Query the model server tokenize endpoint.
curl -X POST  http://YOUR_MODEL_SERVER_URL/tokenize -H "Content-Type: application/json" -d '{"inputs":[{"prompt":"[YOUR PROMPT]", "target":[YOUR TARGET]}]}'

# Query the model server salience endpoint.
curl -X POST  http://YOUR_MODEL_SERVER_URL/salience -H "Content-Type: application/json" -d '{"inputs":[{"prompt":"[YOUR PROMPT]", "target":[YOUR TARGET]}]}'

Se riscontri un problema di accesso, consulta la sezione 7-a riportata sopra.

8. Complimenti

Complimenti per aver completato il codelab! È ora di rilassarsi.

Esegui la pulizia

Per ripulire il lab, elimina tutti i servizi Google Cloud creati per il lab. Usa Google Cloud Shell per eseguire i seguenti comandi.

Se la connessione a Google Cloud viene persa per inattività, reimposta le variabili seguendo i passaggi precedenti.

# Delete the LIT App Service.
gcloud run services delete $LIT_SERVICE_NAME

Se hai avviato il server di modelli, devi eliminare anche il server di modelli.

# Delete the Model Service.
gcloud run services delete $MODEL_SERVICE_NAME

Letture aggiuntive

Continua a scoprire le funzionalità dello strumento LIT con i materiali riportati di seguito:

  • Gemma: Link
  • Codebase open source LIT: Repository Git
  • Articolo LIT: ArXiv
  • Documento di debug dei prompt LIT: ArXiv
  • Demo video della funzionalità LIT: YouTube
  • Demo di debug dei prompt LIT: YouTube
  • Toolkit dell'IA generativa responsabile: link

Contatto

Per qualsiasi domanda o problema relativo a questo codelab, contattaci su GitHub.

Licenza

Questo lavoro è concesso in licenza ai sensi di una licenza Creative Commons Attribution 4.0 Generic.