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.
Você verá um terminal com um shell Bash na parte de baixo da página.
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
.
Para encontrar o URL do serviço, clique no serviço que você acabou de implantar.
Em seguida, você poderá acessar a interface do LIT. Se você encontrar um erro, consulte a seção "Solução de problemas".
Você pode verificar a seção LOGS para monitorar a atividade, conferir mensagens de erro e acompanhar o progresso da implantação.
Você pode conferir a seção MÉTRICAS para ver as métricas do serviço.
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
.
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.
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.
4-b: Carregar modelos do Gemini
Você vai carregar modelos do Gemini e ajustar os parâmetros seguindo as etapas abaixo.
- Clique na opção
Configure
na interface do LIT.
- Clique na opção
- Selecione a opção
gemini
emSelect a base model
.
- Selecione a opção
- É necessário nomear o modelo em
new_name
.
- É necessário nomear o modelo em
- Insira os modelos Gemini selecionados como
model_name
.
- Insira os modelos Gemini selecionados como
- Clique em
Load Model
.
- Clique em
- Clique em
Submit
.
- Clique em
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 |
| A biblioteca de modelagem usada para carregar os pesos do modelo no tempo de execução especificado. O valor padrão é |
DL_RUNTIME |
| 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 é |
PRECISÃO |
| Precisão de ponto flutuante para os modelos LLM. O valor padrão é |
BATCH_SIZE | Números inteiros positivos | O número de exemplos a serem processados por lote. O valor padrão é |
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 é |
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
.
Para encontrar o URL do serviço, clique no serviço de modelo que você acabou de implantar.
Você pode verificar a seção LOGS para monitorar a atividade, conferir mensagens de erro e acompanhar o progresso da implantação.
Você pode conferir a seção MÉTRICAS para ver as métricas do serviço.
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.
- Clique na opção
Configure
na interface do LIT. - Selecione a opção
LLM (self hosted)
emSelect a base model
. - É necessário nomear o modelo em
new_name
. - Insira o URL do servidor de modelo como
base_url
. - 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. - Clique em
Load Model
. - Clique em
Submit
.
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.
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.
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.
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.
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.
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.
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.
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.
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.