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.
Deberías ver una terminal con un shell de Bash en la parte inferior de la página.
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
.
Para encontrar la URL del servicio, haz clic en el servicio que acabas de implementar.
Luego, deberías poder ver la IU de LIT. Si encuentras un error, consulta la sección Solución de problemas.
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.
Puedes consultar la sección MÉTRICAS para ver las métricas del servicio.
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
.
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.
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.
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.
- Haz clic en la opción
Configure
en la IU de LIT.
- Haz clic en la opción
- Selecciona la opción
gemini
en la opciónSelect a base model
.
- Selecciona la opción
- Debes asignarle un nombre al modelo en
new_name
.
- Debes asignarle un nombre al modelo en
- Ingresa los modelos de gemini seleccionados como
model_name
.
- Ingresa los modelos de gemini seleccionados como
- Haz clic en
Load Model
.
- Haz clic en
- Haz clic en
Submit
.
- Haz clic en
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 |
| 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 |
DL_RUNTIME |
| 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 |
PRECISIÓN |
| Precisión de punto flotante para los modelos de LLM. La configuración predeterminada es |
BATCH_SIZE | Números enteros positivos | Es la cantidad de ejemplos que se procesarán por lote. La configuración predeterminada es |
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 |
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
.
Para encontrar la URL del servicio, haz clic en el servicio de modelo que acabas de implementar.
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.
Puedes consultar la sección MÉTRICAS para ver las métricas del servicio.
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.
- Haz clic en la opción
Configure
en la IU de LIT. - Selecciona la opción
LLM (self hosted)
en la opciónSelect a base model
. - Debes asignarle un nombre al modelo en
new_name
. - Ingresa la URL del servidor de modelos como
base_url
. - 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. - Haz clic en
Load Model
. - Haz clic en
Submit
.
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.
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.
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.
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.
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.
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.
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.
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.
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.