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 explicación detallada para implementar un servidor de aplicaciones de LIT en Google Cloud Platform (GCP) para interactuar con los modelos de base de Gemini de Vertex AI y los modelos de lenguaje grandes (LLM) de terceros alojados de forma independiente. También incluye orientación sobre cómo usar la IU de LIT para la depuración y la interpretación de modelos.

Al seguir este lab, los usuarios aprenderán 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 LLMs alojados por el cliente.
  • Usa la IU de LIT para analizar, depurar e interpretar instrucciones para mejorar el rendimiento y las estadísticas del modelo.

¿Qué es LIT?

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

Originalmente, se crearon 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, el modelo y el sistema influyen en el comportamiento de 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 a tus equipos colaborar con un conjunto de herramientas común y escalar 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 la propiedad de Google.

Qué harás

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

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

Conjunto de datos

La demostración usa el conjunto de datos de muestra de depuración de instrucciones LIT de forma predeterminada, o bien 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 la consola de Google Cloud y usarás Google Cloud Shell.

2-a: Inicia una consola de Google Cloud

Inicia un navegador y ve a la consola de Google Cloud.

La consola de Google Cloud es una interfaz de administración web potente y segura que te permite administrar tus recursos de Google Cloud con rapidez. Es una herramienta de DevOps estés donde estés.

2-b: Inicia una instancia de Google Cloud Shell

Cloud Shell es un entorno de operaciones y desarrollo 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 mediante el editor en línea de Cloud Shell. 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 una instancia de 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

2-c: Configura el proyecto de Google Cloud

Debes configurar el ID 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 apps de LIT con Cloud Run

3-a: 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 de eso, 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 establece, se cargará el conjunto de datos de muestra de depuración de la instrucción 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" \

3-b: Consulta el servicio de 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 la consola de Cloud.

Selecciona el servicio de 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 de la consola de Google Cloud

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

URL del servicio de Google Cloud Find

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

Casa de demostración de LIT

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

Registro de Cloud Run de la consola de Google Cloud

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

Métricas de Cloud Run en la consola de Google Cloud

3-c: Cargar conjuntos de datos

Haz clic en la opción Configure en la IU de LIT y selecciona Dataset. Para cargar el conjunto de datos, especifica un nombre y proporciona 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.

Conjunto de datos de carga de LIT

4. Prepara modelos de Gemini en Vertex AI Model Garden

Los modelos de base de Gemini de Google están disponibles en la API de Vertex AI. LIT proporciona el wrapper de modelos VertexAIModelGarden para usar estos modelos para la generación. Simplemente especifica la versión deseada (p.ej., "gemini-1.5-pro-001") a través del parámetro de 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 pasos de configuración adicionales.

4-a: 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 Vertex AI User en tu lista de entidades permitidas de IAM.

Agrega el correo electrónico de las cuentas de servicio

4-b: Carga modelos de Gemini

Cargarás 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 asignarle un nombre al 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.

Modelo de Gemini de carga de LIT

5. Implementa el servidor de modelos de LLMs autohospedado en GCP

La autoalojación de LLM con la imagen de Docker del servidor de modelos de LIT te permite usar las funciones de importancia 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 modelos de KerasNLP o Hugging Face Transformers, incluidos los pesos proporcionados por la biblioteca y alojados por el usuario, p.ej., en Google Cloud Storage.

5-a: Configura modelos

Cada contenedor carga un modelo, configurado con variables de entorno.

Para especificar los modelos que se cargarán, debes configurar 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 de archivo local o el nombre de un parámetro predeterminado para el framework de Deep Learning 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 debas hacer 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 se debe configurar 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 entorno de ejecución especificado. La configuración predeterminada es kerasnlp.

DL_RUNTIME

torch, tensorflow

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

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.

5-b: Implementa el servidor de modelos en Cloud Run

Primero, debes establecer la versión más reciente del servidor de modelos 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 configurar 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 de eso, puedes ejecutar el siguiente comando para implementar el contenedor en Cloud Run. Si no estableces 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 GPU. Si prefieres ejecutar solo en la CPU (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. Solo incluye 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 (se usa para modelos de KerasNLP) y Hugging Face Hub según corresponda.

5-c: Accede al servidor de modelos

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

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

Lista de Cloud Run de la consola de Google Cloud

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

URL del servicio de Google Cloud Find

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

Registro de Cloud Run de la consola de Google Cloud

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

Métricas de Cloud Run en la consola de Google Cloud

5-d: Carga modelos alojados por ti

Si usas un proxy para tu servidor de LIT en el paso 3 (consulta la sección Solución de problemas), deberás ejecutar el siguiente comando para obtener tu token de identidad de GCP.

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

Cargarás modelos alojados por ti 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 asignarle un nombre al modelo en new_name.
  4. Ingresa la URL del servidor de modelos como base_url.
  5. Ingresa el token de identidad obtenido en identity_token si usas un proxy para el servidor de la app de LIT (consulta los pasos 3 y 7). De lo contrario, déjalo en blanco.
  6. Haz clic en Load Model.
  7. Haz clic en Submit.

Carga modelos de LLM con LIT

6. Interactúa con LIT en GCP

LIT ofrece un conjunto completo de funciones para ayudarte a depurar y comprender los comportamientos de los modelos. Puedes hacer algo tan simple como consultar el modelo. Para ello, escribe texto en un cuadro y observa las predicciones del modelo, o bien inspecciona los modelos en profundidad con el paquete de funciones potentes de LIT, que incluye las siguientes:

6-a: 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.

Respuesta de la vista de LIT

Respuesta de LIT

6-b: Usa la técnica de Saliencia de Secuencia

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

La Saliencia de secuencia es una herramienta visual que ayuda a depurar las instrucciones de LLM destacando qué partes de una instrucción son más importantes para un resultado determinado. Para obtener más información sobre la Saliencia de secuencias, consulta el instructivo completo y descubre 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 la prominencia de la secuencia de LIT

6-c: Editar manualmente la instrucción y el objetivo

LIT te permite editar de forma manual cualquier prompt y target para los datos existentes. Si haces clic en Add, la entrada nueva 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 un ejemplo de forma manual y ver el resultado de la predicción y el análisis de Saliencia de secuencias para la versión original y la editada de forma simultánea. Puedes modificar la instrucción para cada dato, y LIT generará la respuesta correspondiente mediante una consulta al modelo.

LIT Compare Datasets

6-e: Compara varios modelos en paralelo

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

Respuesta de la comparación de modelos de LIT

6-f: Generadores de contrafactuales automáticos

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

Entrada generada automáticamente por LIT

6-g: Evalúa el rendimiento del modelo

Puedes evaluar el rendimiento del modelo con métricas (actualmente, admite 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 --no-allow-unauthenticated se aplica cuando se implementa en Cloud Run, es posible que encuentres errores prohibidos, como se muestra a continuación.

Error de acceso prohibido de Google Cloud

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

1. Proxy al servicio local

Puedes usar el siguiente comando para establecer un proxy del servicio en el host local.

# 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 con proxy.

2. Cómo autenticar usuarios directamente

Puedes seguir este vínculo para autenticar a los usuarios, lo que permite 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 de varias personas, esta es una opción más eficaz.

7-b: Verifica que el servidor de modelos se haya iniciado correctamente

Para asegurarte de que el servidor de modelos se haya iniciado correctamente, puedes enviar una solicitud para consultarlo directamente. 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 un problema 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 él. 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

Continúa aprendiendo sobre las funciones de la herramienta LIT con los siguientes materiales:

  • Gemma: Vínculo
  • Base de código de LIT de código abierto: repositorio de Git
  • Artículo de LIT: ArXiv
  • Artículo de depuración de instrucciones de LIT: ArXiv
  • Demostración de video de la función LIT: YouTube
  • Demo 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 cuenta con una licencia Atribución 4.0 Genérica de Creative Commons.