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

1. Panoramica

Questo lab fornisce una procedura dettagliata per il deployment di un server di applicazioni LIT sulla piattaforma Google Cloud (Google Cloud) per interagire con i modelli di base Gemini di Vertex AI e con modelli linguistici di grandi dimensioni (LLM) di terze parti self-hosted. 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.
  • Collega il server LIT ai modelli Gemini di Vertex AI o ad altri LLM auto-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 dati di testo, immagine e 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 ti consente di addestrare ed eseguire il deployment di modelli ML e applicazioni AI e personalizzare LLM da utilizzare nelle tue applicazioni basate sull'AI. 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 asset e modelli proprietari di Google e di terze parti selezionate.

Che cosa farai

Utilizzerai Cloud Shell e Cloud Run di Google 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. Avvia 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 una shell Google Cloud

Cloud Shell è un ambiente operativo e di sviluppo online accessibile ovunque tramite browser. Puoi gestire le tue risorse tramite il suo terminale online che dispone di utilità precaricate come lo strumento a riga di comando gcloud, kubectl e molto 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 il 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

Devi prima impostare la versione più recente di LIT-App come versione da implementare.

# 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 LIT App

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 di Cloud Run nella 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 del modello VertexAIModelGarden 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 chiave dell'utilizzo di questi modelli è che non richiedono alcun intervento 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 passaggi di configurazione aggiuntivi.

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 dell'account.

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 nell'interfaccia utente 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 quelli 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 ulteriori informazioni, 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 maggiori dettagli, 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à causeranno 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 di Model Server in Cloud Run

Devi prima 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 della versione, devi assegnare un nome al server del modello.

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

Dopodiché, puoi eseguire il seguente comando per eseguire il deployment del contenitore 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 ad alcuni 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: accedi 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 corrisponda a 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 i modelli ospitati autonomamente

Se esegui il proxy del server LIT nel passaggio 3 (controlla la sezione Risoluzione dei problemi), dovrai ottenere il token di identità Google Cloud eseguendo il seguente 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 nell'interfaccia utente 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 del server dell'app LIT (vedi passaggio 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 di rilevanza della sequenza in LIT supporta solo i 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 saperne di più sull'importanza della sequenza, consulta il tutorial completo per scoprire 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 prompt e target per i punti dati esistenti. 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 affiancati

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 il rendimento del modello utilizzando le metriche (attualmente sono supportati i punteggi BLEU e ROUGE per la generazione di testo) nell'intero set di dati o in qualsiasi sottoinsieme di esempi filtrati o selezionati.

Metriche del modello di visualizzazione LIT

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 Forbidden di Google Cloud

Esistono due approcci per accedere al servizio LIT App.

1. Proxy per il 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. Autenticare direttamente gli utenti

Puoi seguire questo link per autenticare gli utenti, consentendo l'accesso diretto al servizio LIT App. 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 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. Utilizza 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
  • Base di codice open source di LIT: repository Git
  • Articolo LIT: ArXiv
  • Articolo sul debug dei prompt LIT: ArXiv
  • Demo video della funzionalità LIT: YouTube
  • Demo di debug del prompt LIT: YouTube
  • Responsible GenAI Toolkit: 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.