Depuração de comandos do LLM com a ferramenta de aprendizado de interpretabilidade (LIT) no GCP

1. Visão geral

Este laboratório oferece um tutorial detalhado sobre como implantar um servidor de aplicativos LIT no Google Cloud Platform (GCP) para interagir com os modelos de fundação Vertex AI Gemini e modelos de linguagem grandes (LLMs) de terceiros auto-hospedados. Ele também inclui orientações sobre como usar a interface da LIT para depuração imediata e interpretação de modelos.

Ao seguir este laboratório, os usuários vão aprender a:

  • Configure um servidor LIT no GCP.
  • Conecte o servidor LIT a modelos do Gemini da Vertex AI ou a outros LLMs auto-hospedados.
  • Use a interface do LIT para analisar, depurar e interpretar instruções para melhorar a performance e os insights do modelo.

O que é o LIT?

A LIT é uma ferramenta visual e interativa de compreensão de modelos que oferece suporte a dados de texto, imagem e tabela. Ele pode ser executado como um servidor independente ou em ambientes de notebook, como o Google Colab, o Jupyter e o Google Cloud Vertex AI. O LIT está disponível no PyPI e no GitHub.

Originalmente criado para entender modelos de classificação e regressão, as atualizações recentes adicionaram ferramentas para depurar comandos de LLM, permitindo que você explore como o conteúdo do usuário, do modelo e do sistema influencia o comportamento de geração.

O que são a Vertex AI e o Model Garden?

A Vertex AI é uma plataforma de machine learning (ML) que permite treinar e implantar modelos de ML e aplicativos de IA, além de personalizar LLMs para uso em aplicativos com tecnologia de IA. A Vertex AI combina fluxos de trabalho de engenharia de dados, ciência de dados e engenharia de ML, permitindo que suas equipes colaborem usando um conjunto de ferramentas comum e escalonem seus aplicativos usando os benefícios do Google Cloud.

O Vertex Model Garden é uma biblioteca de modelos de ML que ajuda a descobrir, testar, personalizar e implantar modelos e recursos do Google e de terceiros selecionados.

O que você vai fazer

Você vai usar o Cloud Shell e o Cloud Run do Google para implantar um contêiner do Docker usando a imagem predefinida do LIT.

O Cloud Run é uma plataforma de computação gerenciada que permite executar contêineres diretamente na infraestrutura escalonável do Google, inclusive em GPUs.

Conjunto de dados

A demonstração usa o conjunto de dados de amostra de depuração de comandos do LIT por padrão, ou você pode carregar o seu pela interface.

Antes de começar

Para este guia de referência, você precisa de um projeto do Google Cloud. É possível criar um novo projeto ou selecionar um que já foi criado.

2. Iniciar o console do Google Cloud e o Cloud Shell

Nesta etapa, você vai abrir o Console do Google Cloud e usar o Cloud Shell.

2-a: Iniciar um console do Google Cloud

Abra um navegador e acesse o console do Google Cloud.

O Console do Google Cloud é uma interface de administrador da Web segura e poderosa que permite gerenciar seus recursos do Google Cloud rapidamente. É uma ferramenta DevOps para uso em qualquer lugar.

2-b: Iniciar um Google Cloud Shell

O Cloud Shell é um ambiente de desenvolvimento e operações on-line acessível pelo navegador em qualquer lugar. É possível gerenciar os recursos com este terminal on-line pré-carregado com utilitários como a ferramenta de linha de comando gcloud, kubectl e muito mais. Também é possível desenvolver, criar, depurar e implantar apps baseados na nuvem usando o Editor do Cloud Shell on-line. O Cloud Shell oferece um ambiente on-line pronto para desenvolvedores com um conjunto de ferramentas favoritas pré-instaladas e 5 GB de espaço de armazenamento permanente. Você vai usar o prompt de comando nas próximas etapas.

Inicie um Cloud Shell usando o ícone no canto superior direito da barra de menus, circulado em azul na captura de tela a seguir.

Console do Google Cloud

Você verá um terminal com um shell Bash na parte de baixo da página.

Console do Google Cloud

2-c: Definir o projeto do Google Cloud

Defina o ID e a região do projeto usando o 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. Implantar a imagem do Docker do servidor de apps LIT com o Cloud Run

3-a: Implantar o app LIT no Cloud Run

Primeiro, você precisa definir a versão mais recente do LIT-App como a versão a ser implantada.

# 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

Depois de definir a tag de versão, você precisa nomear o serviço.

# 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

Depois disso, execute o comando a seguir para implantar o contêiner no 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

O LIT também permite adicionar o conjunto de dados ao iniciar o servidor. Para fazer isso, defina a variável DATASETS para incluir os dados que você quer carregar usando o formato name:path, por exemplo, data_foo:/bar/data_2024.jsonl. O formato do conjunto de dados precisa ser .jsonl, em que cada registro contém prompt e campos opcionais target e source. Para carregar vários conjuntos de dados, separe-os por vírgula. Se não for definido, o conjunto de dados de amostra de depuração de comandos do LIT será carregado.

# Set the dataset.
export DATASETS=[DATASETS]

Ao definir MAX_EXAMPLES, você pode definir o número máximo de exemplos a serem carregados de cada conjunto de avaliação.

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

Em seguida, no comando de implantação, você pode adicionar

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

3-b: Conferir o serviço de app LIT

Depois de criar o servidor do LIT App, você pode encontrar o serviço na seção Cloud Run do console.

Selecione o serviço de app LIT que você acabou de criar. Verifique se o nome do serviço é o mesmo que LIT_SERVICE_NAME.

Lista do Cloud Run no Console do Google Cloud

Para encontrar o URL do serviço, clique no serviço que você acabou de implantar.

URL do serviço do Google Cloud Find

Em seguida, você poderá acessar a interface do LIT. Se você encontrar um erro, consulte a seção "Solução de problemas".

Página inicial de demonstração do LIT

Você pode verificar a seção LOGS para monitorar a atividade, conferir mensagens de erro e acompanhar o progresso da implantação.

Console do Google Cloud: registro do Cloud Run

Você pode conferir a seção MÉTRICAS para ver as métricas do serviço.

Métricas do Cloud Run no console do Google Cloud

3-c: Carregar conjuntos de dados

Clique na opção Configure na interface do LIT e selecione Dataset. Carregue o conjunto de dados especificando um nome e fornecendo o URL do conjunto de dados. O formato do conjunto de dados precisa ser .jsonl, em que cada registro contém prompt e campos opcionais target e source.

Conjunto de dados de carga de LIT

4. Preparar modelos do Gemini no Model Garden da Vertex AI

Os modelos de fundação Gemini do Google estão disponíveis na API Vertex AI. O LIT fornece o wrapper de modelo VertexAIModelGarden para usar esses modelos na geração. Basta especificar a versão desejada (por exemplo, "gemini-1.5-pro-001") pelo parâmetro de nome do modelo. Uma das principais vantagens do uso desses modelos é que eles não exigem esforço extra para implantação. Por padrão, você tem acesso imediato a modelos como o Gemini 1.0 Pro e o Gemini 1.5 Pro no GCP, eliminando a necessidade de etapas de configuração extras.

4-a: Conceder permissões da Vertex AI

Para consultar o Gemini no GCP, é necessário conceder permissões da Vertex AI à conta de serviço. Verifique se o nome da conta de serviço é Default compute service account. Copie o e-mail da conta de serviço.

Contas de serviço do GCP

Adicione o e-mail da conta de serviço como principal com o papel Vertex AI User na sua lista de permissões do IAM.

Adicionar e-mail das contas de serviço

4-b: Carregar modelos do Gemini

Você vai carregar modelos do Gemini e ajustar os parâmetros seguindo as etapas abaixo.

    1. Clique na opção Configure na interface do LIT.
    1. Selecione a opção gemini em Select a base model.
    1. É necessário nomear o modelo em new_name.
    1. Insira os modelos Gemini selecionados como model_name.
    1. Clique em Load Model.
    1. Clique em Submit.

Modelo de Gemini de carga de LIT

5. Implantar o servidor de modelos de LLMs auto-hospedado no GCP

A autohospedagem de LLMs com a imagem do Docker do servidor de modelos do LIT permite que você use as funções de saliência e tokenização do LIT para ter insights mais aprofundados sobre o comportamento do modelo. A imagem do servidor de modelos funciona com modelos KerasNLP ou Hugging Face Transformers, incluindo pesos fornecidos pela biblioteca e auto-hospedados, por exemplo, no Google Cloud Storage.

5-a: Configurar modelos

Cada contêiner carrega um modelo, configurado usando variáveis de ambiente.

Especifique os modelos a serem carregados definindo o MODEL_CONFIG. O formato precisa ser name:path, por exemplo, model_foo:model_foo_path. O caminho pode ser um URL, um caminho de arquivo local ou o nome de uma predefinição para o framework de aprendizado profundo configurado. Consulte a tabela a seguir para saber mais. Esse servidor foi testado com Gemma, GPT2, Llama e Mistral em todos os valores DL_FRAMEWORK com suporte. Outros modelos devem funcionar, mas ajustes podem ser necessários.

# 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

Além disso, o servidor de modelo LIT permite a configuração de várias variáveis de ambiente usando o comando abaixo. Consulte a tabela para mais detalhes. Cada variável precisa ser definida individualmente.

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

Variável

Valores

Descrição

DL_FRAMEWORK

kerasnlp, transformers

A biblioteca de modelagem usada para carregar os pesos do modelo no tempo de execução especificado. O valor padrão é kerasnlp.

DL_RUNTIME

torch, tensorflow

O framework de back-end de aprendizado profundo em que o modelo é executado. Todos os modelos carregados por esse servidor vão usar o mesmo back-end, e incompatibilidades vão resultar em erros. O valor padrão é torch.

PRECISÃO

bfloat16, float32

Precisão de ponto flutuante para os modelos LLM. O valor padrão é bfloat16.

BATCH_SIZE

Números inteiros positivos

O número de exemplos a serem processados por lote. O valor padrão é 1.

SEQUENCE_LENGTH

Números inteiros positivos

O tamanho máximo da sequência da solicitação de entrada mais o texto gerado. O valor padrão é 512.

5-b: Implantar o servidor de modelos no Cloud Run

Primeiro, você precisa definir a versão mais recente do servidor de modelos como a versão a ser implantada.

# 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

Depois de definir a tag de versão, você precisa nomear o modelo-servidor.

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

Depois disso, execute o comando a seguir para implantar o contêiner no Cloud Run. Se você não definir as variáveis de ambiente, os valores padrão serão aplicados. Como a maioria dos LLMs exige recursos de computação caros, é altamente recomendável usar a GPU. Se você preferir executar apenas na CPU (o que funciona bem para modelos pequenos, como o GPT2), remova os argumentos --gpu 1 --gpu-type nvidia-l4 --max-instances 7 relacionados.

# 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

Além disso, você pode personalizar as variáveis de ambiente adicionando os comandos a seguir. Inclua apenas as variáveis de ambiente necessárias para suas necessidades específicas.

--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" \

Talvez seja necessário usar outras variáveis de ambiente para acessar determinados modelos. Consulte as instruções do Kaggle Hub (usado para modelos KerasNLP) e do Hugging Face Hub, conforme apropriado.

5-c: Acessar o servidor de modelo

Depois de criar o servidor de modelo, o serviço iniciado pode ser encontrado na seção Cloud Run do seu projeto do GCP.

Selecione o servidor de modelo que você acabou de criar. Verifique se o nome do serviço é o mesmo que MODEL_SERVICE_NAME.

Lista do Cloud Run no Console do Google Cloud

Para encontrar o URL do serviço, clique no serviço de modelo que você acabou de implantar.

URL do serviço do Google Cloud Find

Você pode verificar a seção LOGS para monitorar a atividade, conferir mensagens de erro e acompanhar o progresso da implantação.

Console do Google Cloud: registro do Cloud Run

Você pode conferir a seção MÉTRICAS para ver as métricas do serviço.

Métricas do Cloud Run no console do Google Cloud

5-d: Carregar modelos autohospedados

Se você usar um proxy para o servidor LIT na etapa 3 (consulte a seção "Solução de problemas"), vai precisar executar o comando a seguir para conseguir o token de identidade do GCP.

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

Você vai carregar modelos auto-hospedados e ajustar os parâmetros deles seguindo as etapas abaixo.

  1. Clique na opção Configure na interface do LIT.
  2. Selecione a opção LLM (self hosted) em Select a base model.
  3. É necessário nomear o modelo em new_name.
  4. Insira o URL do servidor de modelo como base_url.
  5. Insira o token de identidade recebido em identity_token se você usar um proxy para o servidor do app LIT (consulte as etapas 3 e 7). Caso contrário, deixe em branco.
  6. Clique em Load Model.
  7. Clique em Submit.

Modelos de LLM de carga de LIT

6. Interagir com o LIT no GCP

A LIT oferece um conjunto de recursos para ajudar você a depurar e entender o comportamento do modelo. Você pode fazer algo tão simples quanto consultar o modelo digitando texto em uma caixa e conferindo as previsões do modelo ou inspecionar os modelos em detalhes com o conjunto de recursos poderosos do LIT, incluindo:

6-a: Consultar o modelo pelo LIT

O LIT consulta automaticamente o conjunto de dados após o carregamento do modelo e do conjunto de dados. Para conferir a resposta de cada modelo, selecione a resposta nas colunas.

Resposta de visualização de LIT

Resposta de LIT

6-b: Usar a técnica de saliência de sequência

No momento, a técnica de saliência de sequência no LIT só oferece suporte a modelos auto-hospedados.

A saliência de sequência é uma ferramenta visual que ajuda a depurar comandos de LLM destacando quais partes de um comando são mais importantes para uma determinada saída. Para mais informações sobre a saliência da sequência, consulte o tutorial completo para saber como usar esse recurso.

Para acessar os resultados de destaque, clique em qualquer entrada ou saída no comando ou na resposta.

Resultados de saliência da sequência LIT

6-c: Manullay Edit Prompt and Target

Com o LIT, você pode editar manualmente qualquer prompt e target para pontos de dados existentes. Ao clicar em Add, a nova entrada será adicionada ao conjunto de dados.

LIT Mannully Edit

6-d: Comparar comando lado a lado

O LIT permite comparar o comando lado a lado em exemplos originais e editados. É possível editar manualmente um exemplo e conferir o resultado da previsão e a análise de saliência da sequência para as versões originais e editadas simultaneamente. Você pode modificar o comando para cada ponto de dados, e o LIT vai gerar a resposta correspondente ao consultar o modelo.

Conjuntos de dados de comparação de LIT

6-e: Comparar vários modelos lado a lado

O LIT permite a comparação lado a lado de modelos em exemplos individuais de geração de texto e pontuação, bem como em exemplos agregados de métricas específicas. Ao consultar vários modelos carregados, você pode comparar facilmente as diferenças nas respostas.

Resposta do modelo de comparação de LIT

6-f: Geradores contrafactuais automáticos

Você pode usar geradores de contrafatos automáticos para criar entradas alternativas e conferir como o modelo se comporta com elas imediatamente.

Geração automática de entrada de LIT

6-g: Avaliar o desempenho do modelo

É possível avaliar o desempenho do modelo usando métricas (atualmente, são aceitos escores BLEU e ROUGE para geração de texto) em todo o conjunto de dados ou em qualquer subconjunto de exemplos filtrados ou selecionados.

Métricas do modelo de visualização de LIT

7. Solução de problemas

7-a: Possíveis problemas de acesso e soluções

Como o --no-allow-unauthenticated é aplicado ao implantar no Cloud Run, você pode encontrar erros proibidos, conforme mostrado abaixo.

Erro proibido do Google Cloud

Há duas abordagens para acessar o serviço de app LIT.

1. Proxy para serviço local

É possível fazer proxy do serviço para o host local usando o comando abaixo.

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

Em seguida, você poderá acessar o servidor LIT clicando no link do serviço proxy.

2. Autenticação direta de usuários

Acesse este link para autenticar usuários, permitindo o acesso direto ao serviço do app LIT. Essa abordagem também pode permitir que um grupo de usuários acesse o serviço. Para o desenvolvimento que envolve colaboração com várias pessoas, essa é uma opção mais eficaz.

7-b: Verificações para garantir que o servidor de modelo foi iniciado

Para garantir que o servidor de modelo foi iniciado, você pode consultar o servidor de modelo diretamente enviando uma solicitação. O servidor de modelo fornece três endpoints: predict, tokenize e salience. Informe os campos prompt e target na solicitação.

# 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 você tiver problemas de acesso, consulte a seção 7-a acima.

8. Parabéns

Parabéns por concluir o codelab. Hora de relaxar!

Limpar

Para limpar o laboratório, exclua todos os serviços do Google Cloud criados para ele. Use o Cloud Shell para executar os comandos a seguir.

Se a conexão com o Google Cloud for perdida devido à inatividade, redefina as variáveis seguindo as etapas anteriores.

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

Se você tiver iniciado o servidor de modelos, também precisará excluir o servidor de modelos.

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

Leia mais

Continue aprendendo sobre os recursos da ferramenta LIT com os materiais abaixo:

  • Gemma: Link
  • Base de código aberto do LIT: repo do Git
  • Artigo da LIT: ArXiv (em inglês)
  • Artigo de depuração de comando da LIT: ArXiv (em inglês)
  • Demonstração em vídeo do recurso LIT: YouTube
  • Demonstração de depuração de comandos do LIT: YouTube
  • Kit de ferramentas de IA generativa responsável: link

Contato

Em caso de dúvidas ou problemas com este codelab, entre em contato conosco no GitHub.

Licença

Este trabalho está licenciado sob a Licença Atribuição 4.0 Genérica da Creative Commons.