Depuración de instrucciones de LLM con la Herramienta de interpretabilidad de aprendizaje (LIT) en GCP

1. Descripción general

En este lab, se proporciona una guía detallada para implementar un servidor de aplicaciones de LIT en Google Cloud Platform (GCP) para interactuar con los modelos básicos de Gemini de Vertex AI y los modelos de lenguaje grandes (LLM) de terceros alojados por el usuario. También incluye orientación sobre cómo usar la IU de LIT para depurar instrucciones y realizar la interpretación de modelos.

Si sigues este lab, aprenderás a hacer lo siguiente:

  • Configura un servidor LIT en GCP.
  • Conecta el servidor de LIT a los modelos de Gemini de Vertex AI o a otros LLM alojados por tu cuenta.
  • Utiliza la IU de LIT para analizar, depurar e interpretar instrucciones y, así, obtener un mejor rendimiento y estadísticas del modelo.

¿Qué es LIT?

LIT es una herramienta visual interactiva para entender modelos que admite datos tabulares, de texto y en imágenes. Se puede ejecutar como servidor independiente o dentro de entornos de notebook, como Google Colab, Jupyter y Google Cloud Vertex AI. LIT está disponible en PyPI y GitHub.

Originalmente creada para comprender los modelos de clasificación y regresión, las actualizaciones recientes agregaron herramientas para depurar instrucciones de LLM, lo que te permite explorar cómo el contenido del usuario, del modelo y del sistema influye en el comportamiento de la generación.

¿Qué son Vertex AI y Model Garden?

Vertex AI es una plataforma de aprendizaje automático (AA) que te permite entrenar y, también, implementar modelos de AA y aplicaciones de IA, y personalizar LLM para usarlos en tus aplicaciones impulsadas por IA. Vertex AI combina la ingeniería de datos, la ciencia de datos y los flujos de trabajo de ingeniería de AA, lo que permite que tus equipos colaboren con un conjunto de herramientas común y escalen tus aplicaciones con los beneficios de Google Cloud.

Vertex Model Garden es una biblioteca de modelos de AA que te ayuda a descubrir, probar, personalizar e implementar modelos y recursos de terceros y de propiedad de Google.

Qué harás

Usarás Cloud Shell y Cloud Run de Google Cloud para implementar un contenedor de Docker desde la imagen compilada previamente de LIT.

Cloud Run es una plataforma de procesamiento administrada que te permite ejecutar contenedores directamente sobre la infraestructura escalable de Google, incluidas las GPUs.

Conjunto de datos

De forma predeterminada, la demostración usa el conjunto de datos de muestra de depuración de instrucciones de LIT, pero puedes cargar el tuyo a través de la IU.

Antes de comenzar

Para esta guía de referencia, necesitas un proyecto de Google Cloud. Puedes crear uno nuevo o seleccionar un proyecto que ya hayas creado.

2. Inicia la consola de Google Cloud y Cloud Shell

En este paso, iniciarás una consola de Google Cloud y usarás Google Cloud Shell.

2a: Inicia una consola de Google Cloud

Inicia un navegador y ve a Google Cloud Console.

La consola de Google Cloud es una interfaz de administrador web potente y segura que te permite administrar tus recursos de Google Cloud rápidamente. Es una herramienta de DevOps estés donde estés.

2b: Inicia Google Cloud Shell

Cloud Shell es un entorno de desarrollo y operaciones en línea al que puedes acceder desde cualquier lugar con tu navegador. Puedes administrar tus recursos con su terminal en línea que ya cuenta con utilidades, como la herramienta de línea de comandos de gcloud y kubectl, entre otras. También puedes desarrollar, compilar, depurar e implementar tus APPs basadas en la nube con el editor de Cloud Shell en línea. Cloud Shell proporciona un entorno en línea listo para desarrolladores con un conjunto de herramientas favoritas preinstaladas y 5 GB de espacio de almacenamiento persistente. Usarás el símbolo del sistema en los próximos pasos.

Inicia Google Cloud Shell con el ícono que se encuentra en la parte superior derecha de la barra de menú, que se muestra en un círculo azul en la siguiente captura de pantalla.

Inicio de la consola de Google Cloud

Deberías ver una terminal con un shell de Bash en la parte inferior de la página.

Consola de Google Cloud

2c: Configura el proyecto de Google Cloud

Debes configurar el ID del proyecto y la región del proyecto con el 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. Implementa la imagen de Docker del servidor de la app de LIT con Cloud Run

3a: Implementa la app de LIT en Cloud Run

Primero, debes establecer la versión más reciente de LIT-App como la versión que se implementará.

# 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

Después de configurar la etiqueta de versión, debes asignarle un nombre al servicio.

# 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

Después, puedes ejecutar el siguiente comando para implementar el contenedor en 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 también te permite agregar el conjunto de datos cuando inicias el servidor. Para ello, configura la variable DATASETS para que incluya los datos que deseas cargar con el formato name:path, por ejemplo, data_foo:/bar/data_2024.jsonl. El formato del conjunto de datos debe ser .jsonl, en el que cada registro contiene prompt y los campos opcionales target y source. Para cargar varios conjuntos de datos, sepáralos con una coma. Si no se configura, se cargará el conjunto de datos de muestra de depuración de instrucciones de LIT.

# Set the dataset.
export DATASETS=[DATASETS]

Si configuras MAX_EXAMPLES, puedes establecer la cantidad máxima de ejemplos que se cargarán desde cada conjunto de evaluación.

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

Luego, en el comando de implementación, puedes agregar

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

3b: Visualiza el servicio de la app de LIT

Después de crear el servidor de la app de LIT, puedes encontrar el servicio en la sección Cloud Run de Cloud Console.

Selecciona el servicio de la app de LIT que acabas de crear. Asegúrate de que el nombre del servicio sea el mismo que LIT_SERVICE_NAME.

Lista de Cloud Run en la consola de Google Cloud

Para encontrar la URL del servicio, haz clic en el servicio que acabas de implementar.

URL de Find Service de Google Cloud

Luego, deberías poder ver la IU de LIT. Si encuentras un error, consulta la sección Solución de problemas.

Página principal de la demostración de LIT

Puedes consultar la sección REGISTROS para supervisar la actividad, ver los mensajes de error y hacer un seguimiento del progreso de la implementación.

Registro de Cloud Run en la consola de Google Cloud

Puedes consultar la sección MÉTRICAS para ver las métricas del servicio.

Métricas de Cloud Run de Google Cloud Console

3c: Carga conjuntos de datos

Haz clic en la opción Configure en la IU de LIT y selecciona Dataset. Carga el conjunto de datos especificando un nombre y proporcionando la URL del conjunto de datos. El formato del conjunto de datos debe ser .jsonl, en el que cada registro contiene prompt y los campos opcionales target y source.

Carga de conjunto de datos de LIT

4. Prepara modelos de Gemini en Model Garden de Vertex AI

Los modelos de base de Gemini de Google están disponibles en la API de Vertex AI. LIT proporciona el wrapper del modelo VertexAIModelGarden para usar estos modelos en la generación. Simplemente especifica la versión deseada (p.ej., "gemini-1.5-pro-001") a través del parámetro del nombre del modelo. Una ventaja clave de usar estos modelos es que no requieren ningún esfuerzo adicional para la implementación. De forma predeterminada, tienes acceso inmediato a modelos como Gemini 1.0 Pro y Gemini 1.5 Pro en GCP, lo que elimina la necesidad de realizar pasos de configuración adicionales.

4a: Otorga permisos de Vertex AI

Para consultar Gemini en GCP, debes otorgar permisos de Vertex AI a la cuenta de servicio. Asegúrate de que el nombre de la cuenta de servicio sea Default compute service account. Copia el correo electrónico de la cuenta de servicio.

Cuentas de servicio de GCP

Agrega el correo electrónico de la cuenta de servicio como principal con el rol de Vertex AI User en tu lista de entidades permitidas de IAM.

Agregar el correo electrónico de las cuentas de servicio

4b: Carga los modelos de Gemini

Cargarás los modelos de Gemini y ajustarás sus parámetros siguiendo los pasos que se indican a continuación.

    1. Haz clic en la opción Configure en la IU de LIT.
    1. Selecciona la opción gemini en la opción Select a base model.
    1. Debes nombrar el modelo en new_name.
    1. Ingresa los modelos de Gemini seleccionados como model_name.
    1. Haz clic en Load Model.
    1. Haz clic en Submit.

LIT Load Gemini Model

5. Implementa el servidor de modelos de LLM autoalojados en GCP

El autoalojamiento de LLM con la imagen de Docker del servidor de modelos de LIT te permite usar las funciones de prominencia y tokenización de LIT para obtener estadísticas más detalladas sobre el comportamiento del modelo. La imagen del servidor de modelos funciona con los modelos de KerasNLP o Hugging Face Transformers, incluidos los pesos proporcionados por la biblioteca y los alojados por el usuario, p.ej., en Google Cloud Storage.

5a: Configura modelos

Cada contenedor carga un modelo, que se configura con variables de entorno.

Debes especificar los modelos que se cargarán configurando MODEL_CONFIG. El formato debe ser name:path, por ejemplo, model_foo:model_foo_path. La ruta de acceso puede ser una URL, una ruta de acceso a un archivo local o el nombre de un parámetro de configuración predeterminado para el framework de aprendizaje profundo configurado (consulta la siguiente tabla para obtener más información). Este servidor se probó con Gemma, GPT2, Llama y Mistral en todos los valores de DL_FRAMEWORK admitidos. Otros modelos deberían funcionar, pero es posible que se necesiten ajustes.

# 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

Además, el servidor de modelos de LIT permite configurar varias variables de entorno con el siguiente comando. Consulta la tabla para obtener más detalles. Ten en cuenta que cada variable debe establecerse de forma individual.

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

Variable

Valores

Descripción

DL_FRAMEWORK

kerasnlp, transformers

Es la biblioteca de modelado que se usa para cargar los pesos del modelo en el tiempo de ejecución especificado. La configuración predeterminada es kerasnlp.

DL_RUNTIME

torch, tensorflow

Es el framework de backend de aprendizaje profundo en el que se ejecuta el modelo. Todos los modelos que cargue este servidor usarán el mismo backend, y las incompatibilidades generarán errores. La configuración predeterminada es torch.

PRECISIÓN

bfloat16, float32

Es la precisión de punto flotante para los modelos de LLM. La configuración predeterminada es bfloat16.

BATCH_SIZE

Números enteros positivos

Es la cantidad de ejemplos que se procesarán por lote. La configuración predeterminada es 1.

SEQUENCE_LENGTH

Números enteros positivos

Es la longitud máxima de la secuencia de la instrucción de entrada más el texto generado. La configuración predeterminada es 512.

5b: Implementa el servidor de modelos en Cloud Run

Primero debes establecer la versión más reciente de Model Server como la versión que se implementará.

# 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

Después de establecer la etiqueta de versión, debes asignarle un nombre a tu servidor de modelos.

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

Después, puedes ejecutar el siguiente comando para implementar el contenedor en Cloud Run. Si no configuras las variables de entorno, se aplicarán los valores predeterminados. Como la mayoría de los LLM requieren recursos de procesamiento costosos, se recomienda usar la GPU. Si prefieres ejecutar solo en la CPU (lo que funciona bien para modelos pequeños como GPT2), puedes quitar los argumentos relacionados --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

Además, puedes personalizar las variables de entorno agregando los siguientes comandos. Incluye solo las variables de entorno que sean necesarias para tus necesidades 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" \

Es posible que se necesiten variables de entorno adicionales para acceder a ciertos modelos. Consulta las instrucciones de Kaggle Hub (que se usa para los modelos de KerasNLP) y Hugging Face Hub según corresponda.

5c: Accede al servidor de modelos

Después de crear el servidor del modelo, el servicio iniciado se puede encontrar en la sección Cloud Run de tu proyecto de GCP.

Selecciona el servidor del modelo que acabas de crear. Asegúrate de que el nombre del servicio sea el mismo que MODEL_SERVICE_NAME.

Lista de Cloud Run en la consola de Google Cloud

Para encontrar la URL del servicio, haz clic en el servicio del modelo que acabas de implementar.

URL de Find Service de Google Cloud

Puedes consultar la sección REGISTROS para supervisar la actividad, ver los mensajes de error y hacer un seguimiento del progreso de la implementación.

Registro de Cloud Run en la consola de Google Cloud

Puedes consultar la sección MÉTRICAS para ver las métricas del servicio.

Métricas de Cloud Run de Google Cloud Console

5-d: Carga modelos alojados por tu cuenta

Si envías tu servidor de LIT a través de un proxy en el paso 3 (consulta la sección Solución de problemas), deberás obtener tu token de identidad de GCP ejecutando el siguiente comando.

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

Cargarás modelos autoalojados y ajustarás sus parámetros siguiendo los pasos que se indican a continuación.

  1. Haz clic en la opción Configure en la IU de LIT.
  2. Selecciona la opción LLM (self hosted) en la opción Select a base model.
  3. Debes nombrar el modelo en new_name.
  4. Ingresa la URL de tu servidor de modelos como base_url.
  5. Ingresa el token de identidad obtenido en identity_token si envías el servidor de la app de LIT a través de un proxy (consulta los pasos 3 y 7). De lo contrario, déjalo vacío.
  6. Haz clic en Load Model.
  7. Haz clic en Submit.

Carga modelos de LLM con LIT

6. Interactúa con LIT en GCP

La LIT ofrece un amplio conjunto de funciones para ayudarte a depurar y comprender los comportamientos del modelo. Puedes hacer algo tan simple como consultar el modelo escribiendo texto en un cuadro y viendo las predicciones del modelo, o bien inspeccionar los modelos en profundidad con el conjunto de funciones potentes de LIT, que incluyen las siguientes:

6a: Consulta el modelo a través de LIT

LIT consulta automáticamente el conjunto de datos después de cargar el modelo y el conjunto de datos. Para ver la respuesta de cada modelo, selecciona la respuesta en las columnas.

Ver respuesta de LIT

Respuesta de LIT

6-b: Usa la técnica de prominencia de secuencia

Actualmente, la técnica de prominencia de secuencia en LIT solo admite modelos alojados por el usuario.

La relevancia de la secuencia es una herramienta visual que ayuda a depurar las instrucciones de los LLM destacando qué partes de una instrucción son más importantes para un resultado determinado. Para obtener más información sobre la relevancia de la secuencia, consulta el instructivo completo sobre cómo usar esta función.

Para acceder a los resultados de relevancia, haz clic en cualquier entrada o salida de la instrucción o la respuesta, y se mostrarán los resultados de relevancia.

Resultados de prominencia de la secuencia de LIT

6-c: Edita manualmente la instrucción y el destino

LIT te permite editar manualmente cualquier prompt y target para un punto de datos existente. Si haces clic en Add, la nueva entrada se agregará al conjunto de datos.

Edición manual de LIT

6-d: Comparar instrucciones en paralelo

LIT te permite comparar instrucciones en paralelo en ejemplos originales y editados. Puedes editar manualmente un ejemplo y ver el resultado de la predicción y el análisis de la relevancia de la secuencia para las versiones original y editada de forma simultánea. Puedes modificar la instrucción para cada punto de datos, y LIT generará la respuesta correspondiente consultando el modelo.

Compara conjuntos de datos de LIT

6e: Compara varios modelos en paralelo

LIT permite comparar modelos de forma paralela en ejemplos individuales de generación y puntuación de texto, así como en ejemplos agregados para métricas específicas. Si consultas varios modelos cargados, puedes comparar fácilmente las diferencias en sus respuestas.

Comparación de la respuesta del modelo de LIT

6-f: Automatic Counterfactual Generators

Puedes usar generadores de contrafácticos automáticos para crear entradas alternativas y ver cómo se comporta tu modelo con ellas de inmediato.

LIT Automatically Generate Input

6-g: Evalúa el rendimiento del modelo

Puedes evaluar el rendimiento del modelo con métricas (actualmente, se admiten las puntuaciones BLEU y ROUGE para la generación de texto) en todo el conjunto de datos o en cualquier subconjunto de ejemplos filtrados o seleccionados.

Métricas del modelo de vista de LIT

7. Solución de problemas

7-a: Posibles problemas de acceso y soluciones

Como se aplica --no-allow-unauthenticated cuando se realiza la implementación en Cloud Run, es posible que encuentres errores prohibidos, como se muestra a continuación.

Error de prohibición de Google Cloud

Existen dos enfoques para acceder al servicio de la app de LIT.

1. Proxy para el servicio local

Puedes enviar un proxy del servicio al host local con el siguiente comando.

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

Luego, deberías poder acceder al servidor de LIT haciendo clic en el vínculo del servicio proxy.

2. Autentica usuarios directamente

Puedes seguir este vínculo para autenticar a los usuarios y permitir el acceso directo al servicio de la app de LIT. Este enfoque también puede permitir que un grupo de usuarios acceda al servicio. Para el desarrollo que implica la colaboración con varias personas, esta es una opción más eficaz.

7-b: Verificaciones para garantizar que el servidor del modelo se haya iniciado correctamente

Para asegurarte de que el servidor de modelos se haya iniciado correctamente, puedes consultarlo directamente enviando una solicitud. El servidor de modelos proporciona tres extremos: predict, tokenize y salience. Asegúrate de proporcionar los campos prompt y target en tu solicitud.

# 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]}]}'

Si tienes problemas de acceso, consulta la sección 7-a anterior.

8. Felicitaciones

¡Felicitaciones por completar el codelab! ¡Es hora de relajarse!

Limpia

Para limpiar el lab, borra todos los servicios de Google Cloud que se crearon para el lab. Usa Google Cloud Shell para ejecutar los siguientes comandos.

Si se pierde la conexión de Google Cloud debido a la inactividad, restablece las variables siguiendo los pasos anteriores.

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

Si iniciaste el servidor de modelos, también debes borrarlo.

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

Lecturas adicionales

Sigue aprendiendo sobre las funciones de la herramienta LIT con los siguientes materiales:

  • Gemma: Vínculo
  • Base de código fuente abierto de LIT: Repositorio de Git
  • Artículo sobre LIT: ArXiv
  • Documento de depuración de instrucciones de LIT: ArXiv
  • Video de demostración de la función LIT: YouTube
  • Demostración de depuración de instrucciones LIT: YouTube
  • Kit de herramientas de IA generativa responsable: Vínculo

Contacto

Si tienes preguntas o problemas con este codelab, comunícate con nosotros en GitHub.

Licencia

Esta obra se ofrece bajo la licencia Atribución 4.0 Genérica de Creative Commons.