En este documento del Google Cloud marco de trabajo bien diseñado: perspectiva de la IA y el aprendizaje automático se ofrece una descripción general de los principios y las recomendaciones para diseñar y operar sistemas de IA y aprendizaje automático fiables en Google Cloud. Se explica cómo integrar prácticas de fiabilidad y observabilidad avanzadas en tus planos de arquitectura. Las recomendaciones de este documento se ajustan al pilar de fiabilidad del Google Cloud framework Well-Architected.
En el panorama de la IA y el aprendizaje automático, que está en constante evolución, los sistemas fiables son esenciales para garantizar la satisfacción de los clientes y alcanzar los objetivos empresariales. Para satisfacer las demandas únicas del aprendizaje automático predictivo y de la IA generativa, necesitas sistemas de IA y aprendizaje automático que sean sólidos, fiables y adaptables. Para gestionar las complejidades de MLOps (desde el desarrollo hasta la implementación y la mejora continua), debes usar un enfoque basado en la fiabilidad. Google Cloud ofrece una infraestructura de IA diseñada específicamente que se ajusta a los principios de ingeniería de fiabilidad de sitios (SRE) y que proporciona una base sólida para sistemas de IA y aprendizaje automático fiables.
Las recomendaciones de este documento se corresponden con los siguientes principios básicos:
- Asegurarse de que la infraestructura sea escalable y de alta disponibilidad
- Usar una arquitectura modular y con bajo acoplamiento
- Crear una plataforma de MLOps integral automatizada
- Mantener la confianza y el control mediante la gestión de datos y modelos
- Implementar prácticas de observabilidad y fiabilidad integrales
Asegurarse de que la infraestructura de aprendizaje automático sea escalable y de alta disponibilidad
Los sistemas de IA y aprendizaje automático fiables en la nube requieren una infraestructura escalable y de alta disponibilidad. Estos sistemas tienen demandas dinámicas, diversas necesidades de recursos y dependencias críticas de la disponibilidad de modelos. Las arquitecturas escalables se adaptan a las cargas fluctuantes y a las variaciones en el volumen de datos o las solicitudes de inferencia. La alta disponibilidad ayuda a asegurar la resiliencia frente a fallos a nivel de componente, zona o región.
Para crear una infraestructura de aprendizaje automático escalable y de alta disponibilidad, ten en cuenta las siguientes recomendaciones.
Implementar funciones de escalado automático y dinámico
Las cargas de trabajo de IA y aprendizaje automático son dinámicas, y la demanda fluctúa en función de las tasas de llegada de datos, la frecuencia de entrenamiento y el volumen de tráfico de inferencia. El escalado automático y dinámico adapta los recursos de infraestructura a las fluctuaciones de la demanda sin interrupciones. Escalar tus cargas de trabajo de forma eficaz te ayuda a evitar el tiempo de inactividad, mantener el rendimiento y optimizar los costes.
Para escalar automáticamente tus cargas de trabajo de IA y aprendizaje automático, usa los siguientes productos y funciones de Google Cloud:
- Flujos de procesamiento de datos: crea flujos de procesamiento de datos en Dataflow. Configura las canalizaciones para que usen la función de autoescalado horizontal de Dataflow, que ajusta de forma dinámica el número de instancias de trabajador en función del uso de la CPU, el paralelismo de la canalización y los datos pendientes. Puedes configurar los parámetros de escalado automático mediante las opciones de la canalización al iniciar los trabajos.
- Tareas de entrenamiento: automatiza el escalado de las tareas de entrenamiento con el entrenamiento personalizado de Vertex AI. Puede definir las especificaciones del grupo de trabajadores, como el tipo de máquina, el tipo y el número de aceleradores, y el número de grupos de trabajadores. En el caso de los trabajos que pueden tolerar interrupciones y de los trabajos en los que el código de entrenamiento implementa la creación de puntos de control, puedes reducir los costes usando máquinas virtuales de acceso puntual.
- Inferencia online: para la inferencia online, usa los endpoints de Vertex AI. Para habilitar el autoescalado, configura el número mínimo y máximo de réplicas. Especifica un mínimo de dos réplicas para la alta disponibilidad. Vertex AI ajusta automáticamente el número de réplicas en función del tráfico y de las métricas de autoescalado configuradas, como el uso de CPU y el uso de réplicas.
- Cargas de trabajo en contenedores en Google Kubernetes Engine: configura el autoescalado a nivel de nodo y de pod. Configura el autoescalador de clústeres y el aprovisionamiento automático de nodos para ajustar el número de nodos en función de las solicitudes de recursos de pods pendientes, como CPU, memoria, GPU y TPU. Usa Horizontal Pod Autoscaler (HPA) para los despliegues y define políticas de escalado basadas en métricas como el uso de CPU y memoria. También puedes escalar en función de métricas personalizadas de IA y aprendizaje automático, como el uso de GPU o TPU y las solicitudes de predicción por segundo.
- Servicios en contenedores sin servidor: despliega los servicios en Cloud Run y configura el autoescalado especificando el número mínimo y máximo de instancias de contenedor. Sigue las prácticas recomendadas para autoescalar instancias con GPU especificando el tipo de acelerador. Cloud Run escala automáticamente las instancias entre los límites mínimo y máximo configurados en función de las solicitudes entrantes. Cuando no hay solicitudes, se escala de forma eficiente a cero instancias. Puedes aprovechar el escalado automático y basado en solicitudes de Cloud Run para desplegar agentes de Vertex AI y cargas de trabajo de terceros, como modelos cuantificados con Ollama, inferencia de modelos LLM con vLLM y Hugging Face Text Generation Inference (TGI).
Diseñar para la alta disponibilidad y la tolerancia a fallos
En el caso de las cargas de trabajo de IA y aprendizaje automático de nivel de producción, es fundamental que asegures el funcionamiento continuo y la resiliencia frente a los fallos. Para implementar la alta disponibilidad y la tolerancia a fallos, debes crear redundancia y replicación en tu arquitectura en Google Cloud. Este enfoque ayuda a garantizar que el fallo de un componente individual no provoque el fallo de todo el sistema.
- Para conseguir alta disponibilidad y baja latencia en el servicio de modelos, sobre todo en el caso de los modelos de inferencia en tiempo real y de IA generativa, distribuye tus implementaciones en varias ubicaciones.
- Para disfrutar de disponibilidad y resiliencia globales, despliega los modelos en varios endpoints de Vertex AI en diferentes regiones o usa el endpoint global. Google Cloud
- Usa el balanceo de carga global para enrutar el tráfico.
- Para entrenar modelos en MIGs de GKE o Compute Engine, implementa la monitorización de errores Xid. Cuando identifiques errores de Xid, toma las medidas correctoras oportunas. Por ejemplo, puedes reiniciar GPUs, reiniciar instancias de Compute Engine o activar la sustitución de hardware mediante el comando gcloud CLI report faulty host.
- Descubre soluciones de entrenamiento tolerantes a fallos, flexibles y resistentes, como las recetas para usar la biblioteca de resiliencia de Google o la integración de la lógica de entrenamiento resistente con Pathways para cargas de trabajo de TPU.
Implementa la redundancia de los componentes críticos de IA y aprendizaje automático en Google Cloud. A continuación, se muestran ejemplos de productos y funciones que te permiten implementar la redundancia de recursos:
- Despliega clústeres regionales de GKE en varias zonas.
- Asegúrate de que los conjuntos de datos y los puntos de control tengan redundancia de datos usando segmentos multirregionales o birregionales de Cloud Storage.
- Usa Spanner para almacenar metadatos de forma coherente a nivel mundial y con alta disponibilidad.
- Configura réplicas de lectura de Cloud SQL para bases de datos operativas.
- Asegúrate de que las bases de datos vectoriales para la generación aumentada de recuperación (RAG) tengan una alta disponibilidad y sean multizonales o multirregionales.
Gestionar los recursos de forma proactiva y anticiparse a los requisitos
Una gestión eficaz de los recursos es importante para optimizar los costes, el rendimiento y la fiabilidad. Las cargas de trabajo de IA y aprendizaje automático son dinámicas y hay una gran demanda de hardware especializado, como GPUs y TPUs. Por lo tanto, es fundamental que apliques una gestión de recursos proactiva y que asegures la disponibilidad de los recursos.
Planifica la capacidad en función de los datos de monitorización históricos, como la utilización de la GPU o la TPU y las tasas de procesamiento, de Cloud Monitoring y los registros de Cloud Logging. Analiza estos datos de telemetría con BigQuery o Looker Studio y predice la demanda futura de GPUs en función del crecimiento o de los nuevos modelos. El análisis de los patrones y las tendencias de uso de los recursos te ayuda a predecir cuándo y dónde necesitas aceleradores especializados críticos.
- Valida las estimaciones de capacidad mediante pruebas de carga rigurosas. Simula el tráfico en servicios de IA y aprendizaje automático, como el servicio y las canalizaciones, con herramientas como Apache JMeter o LoadView.
- Analiza el comportamiento del sistema en condiciones de estrés.
- Para anticipar y satisfacer las mayores demandas de carga de trabajo en producción, identifica de forma proactiva los requisitos de recursos. Monitoriza la latencia, el rendimiento, los errores y la utilización de recursos, especialmente la utilización de GPUs y TPUs. Aumenta las cuotas de recursos según sea necesario.
- Para el servicio de IA generativa, haz pruebas con cargas simultáneas elevadas e identifica el nivel en el que la disponibilidad del acelerador limita el rendimiento.
- Monitoriza continuamente las consultas de modelos y configura alertas proactivas para los agentes.
- Usa el panel de control de observabilidad del modelo para ver las métricas que recoge Cloud Monitoring, como las consultas por segundo (CPS) del modelo, el rendimiento de los tokens y las latencias del primer token.
Optimizar la disponibilidad y la obtención de recursos
Optimiza los costes y asegúrate de que los recursos estén disponibles seleccionando estratégicamente los recursos de computación adecuados en función de los requisitos de la carga de trabajo.
- Para inferencias estables las 24 horas del día o para cargas de trabajo de entrenamiento con requisitos de capacidad fijos o predecibles, usa descuentos por compromiso de uso (CUDs) para máquinas virtuales y aceleradores.
En el caso de los nodos de GKE y las VMs de Compute Engine, utiliza las VMs de spot y las funciones de Dynamic Workload Scheduler (DWS):
- Para tareas tolerantes a fallos, como cargas de trabajo de evaluación y experimentación, usa máquinas virtuales de Spot. Las máquinas virtuales de acceso puntual se pueden interrumpir, pero pueden ayudarte a reducir los costes generales.
- Para gestionar el riesgo de expropiación de aceleradores de alta demanda, puedes mejorar la disponibilidad usando DWS.
- Para el entrenamiento por lotes complejo que necesita GPUs de gama alta para ejecutarse hasta siete días, usa el modo de inicio flexible de DWS.
- Para cargas de trabajo de mayor duración (hasta tres meses), usa el modo Calendario para reservar GPUs específicas (H100 y H200) y TPUs (Trillium).
Para optimizar la inferencia de IA en GKE, puedes ejecutar un motor vLLM que use de forma dinámica las TPUs y las GPUs para satisfacer las necesidades de capacidad y rendimiento fluctuantes. Para obtener más información, consulta Fungibilidad de GPU/TPU de vLLM.
En los casos avanzados con necesidades complejas de recursos y topología que impliquen aceleradores, usa herramientas para abstraer la gestión de recursos.
- Cluster Director te permite desplegar y gestionar grupos de aceleradores con colocación y programación para el entrenamiento con varias GPUs (A3 Ultra H200 y A4 B200). Cluster Director es compatible con los clústeres de GKE y Slurm.
- Ray en Vertex AI abstrae la infraestructura de computación distribuida. Permite que las aplicaciones soliciten recursos para el entrenamiento y el servicio sin necesidad de gestionar directamente las máquinas virtuales y los contenedores.
Distribuir el tráfico entrante entre varias instancias
El balanceo de carga eficaz es fundamental para las aplicaciones de IA que tienen demandas fluctuantes. El balanceo de carga distribuye el tráfico, optimiza el uso de los recursos, proporciona alta disponibilidad y baja latencia, y ayuda a garantizar una experiencia de usuario fluida.
- Inferencia con necesidades de recursos variables: implementa el balanceo de carga en función de las métricas del modelo. GKE Inference Gateway te permite desplegar modelos detrás de un balanceador de carga con enrutamiento basado en modelos. La puerta de enlace prioriza las instancias con aceleradores de GPU y TPU para tareas que requieren muchos recursos de computación, como la IA generativa y la inferencia de LLMs. Configura comprobaciones de estado detalladas para evaluar el estado del modelo. Usa frameworks de servicio como vLLM o Triton para las métricas de LLM e integra las métricas en Cloud Monitoring mediante Google Cloud Managed Service para Prometheus.
- Cargas de trabajo de inferencia que necesitan GPUs o TPUs: para asegurarte de que las cargas de trabajo de inferencia de IA y aprendizaje automático críticas se ejecuten de forma coherente en máquinas adecuadas para los requisitos de las cargas de trabajo, sobre todo cuando la disponibilidad de GPUs y TPUs es limitada, usa clases de computación personalizadas de GKE. Puedes definir perfiles de cálculo específicos con políticas de respaldo para el escalado automático. Por ejemplo, puedes definir un perfil que especifique una prioridad más alta para las instancias de GPU o TPU reservadas. El perfil puede incluir un fallback para usar máquinas virtuales de acceso puntual rentables si los recursos reservados no están disponibles temporalmente.
- IA generativa en diversas plataformas de orquestación: usa un balanceador de carga centralizado. Por ejemplo, para optimizar los costes y la gestión, puedes dirigir las solicitudes que requieran pocos recursos de GPU a Cloud Run y las tareas más complejas que consuman muchos recursos de GPU a GKE. Para la comunicación entre servicios y la gestión de políticas, implementa una malla de servicios mediante Cloud Service Mesh. Asegúrate de que el almacenamiento de registros y la monitorización sean coherentes mediante Cloud Logging y Cloud Monitoring.
- Distribución de carga global: para balancear la carga del tráfico de usuarios de todo el mundo que necesitan una latencia baja, usa un balanceador de carga de aplicación externo global. Configura el enrutamiento por geolocalización a la región más cercana e implementa la conmutación por error. Establece la replicación de endpoints regionales en Vertex AI o GKE. Configura Cloud CDN para los recursos estáticos. Monitoriza el tráfico y la latencia globales con Cloud Monitoring.
- Gestión granular del tráfico: en el caso de las solicitudes que tienen tipos de datos o complejidad diversos y las solicitudes de larga duración, implementa una gestión granular del tráfico.
- Configura el enrutamiento basado en contenido para dirigir las solicitudes a backends especializados en función de atributos como las rutas de URL y los encabezados. Por ejemplo, solicitudes directas a back-ends habilitados para GPU para modelos de imagen o vídeo, y a back-ends optimizados para CPU para modelos basados en texto.
- Para las solicitudes de IA generativa de larga duración o las cargas de trabajo por lotes, usa WebSockets o gRPC. Implementa la gestión del tráfico para gestionar los tiempos de espera y el almacenamiento en búfer. Configura los tiempos de espera y los reintentos de las solicitudes, e implementa límites de frecuencia y cuotas con API Gateway o Apigee.
Usar una arquitectura modular y con bajo acoplamiento
En una arquitectura de IA y aprendizaje automático modular y con bajo acoplamiento, los sistemas complejos se dividen en componentes más pequeños y autónomos que interactúan a través de interfaces bien definidas. Esta arquitectura minimiza las dependencias de los módulos, simplifica el desarrollo y las pruebas, mejora la reproducibilidad y aumenta la tolerancia a fallos al contener los errores. El enfoque modular es fundamental para gestionar la complejidad, acelerar la innovación y garantizar el mantenimiento a largo plazo.
Para diseñar una arquitectura modular y poco acoplada para cargas de trabajo de IA y aprendizaje automático, ten en cuenta las siguientes recomendaciones.
Implementar módulos o componentes pequeños e independientes
Divide tu sistema de IA y aprendizaje automático de extremo a extremo en módulos o componentes pequeños e independientes. Cada módulo o componente se encarga de una función específica, como la ingestión de datos, la transformación de características, el entrenamiento de modelos, el servicio de inferencias o la evaluación. Un diseño modular ofrece varias ventajas clave para los sistemas de IA y aprendizaje automático: mejora del mantenimiento, aumento de la escalabilidad, reutilización y mayor flexibilidad y agilidad.
En las siguientes secciones se describen los Google Cloud productos, las funciones y las herramientas que puedes usar para diseñar una arquitectura modular para tus sistemas de IA y aprendizaje automático.
Microservicios en contenedores en GKE
En el caso de los sistemas complejos de IA y aprendizaje automático o las complejas pipelines de IA generativa que necesiten una orquestación precisa, implementa los módulos como microservicios que se orquesten mediante GKE. Empaqueta cada fase distinta como un microservicio individual en contenedores Docker. Estas fases distintas incluyen la ingestión de datos adaptada a diversos formatos, el preprocesamiento de datos especializados o la ingeniería de funciones, el entrenamiento de modelos distribuidos o el ajuste de modelos fundacionales grandes, la evaluación o la publicación.
Despliega los microservicios contenerizados en GKE y aprovecha el escalado automático basado en el uso de CPU y memoria, o en métricas personalizadas como el uso de GPU, las actualizaciones continuas y las configuraciones reproducibles en manifiestos YAML. Asegúrate de que la comunicación entre los microservicios sea eficiente mediante el descubrimiento de servicios de GKE. Para los patrones asíncronos, usa colas de mensajes como Pub/Sub.
El enfoque de microservicios en GKE te ayuda a crear plataformas escalables y resilientes para tareas como aplicaciones RAG complejas, en las que las fases se pueden diseñar como servicios distintos.
Servicios sin servidor basados en eventos
Para las tareas basadas en eventos que pueden beneficiarse de un escalado automático sin servidor, usa Cloud Run o Cloud Run functions. Estos servicios son ideales para tareas asíncronas, como el preprocesamiento, o para tareas de inferencia más pequeñas. Activa funciones de Cloud Run en eventos, como la creación de un nuevo archivo de datos en Cloud Storage o las actualizaciones de modelos en Artifact Registry. Para las tareas de webhook o los servicios que necesiten un entorno de contenedor, usa Cloud Run.
Los servicios y las funciones de Cloud Run pueden aumentar rápidamente y reducirse a cero, lo que ayuda a garantizar la rentabilidad de las cargas de trabajo fluctuantes. Estos servicios son adecuados para componentes modulares en flujos de trabajo de agentes de Vertex AI. Puedes orquestar secuencias de componentes con Workflows o Application Integration.
Servicios gestionados de Vertex AI
Los servicios de Vertex AI admiten la modularidad y te ayudan a simplificar el desarrollo y el despliegue de tus sistemas de IA y aprendizaje automático. Los servicios abstraen las complejidades de la infraestructura para que puedas centrarte en la lógica de la aplicación.
- Para orquestar flujos de trabajo creados a partir de pasos modulares, usa Vertex AI Pipelines.
- Para ejecutar código personalizado de IA y aprendizaje automático, empaqueta el código en contenedores Docker que puedan ejecutarse en servicios gestionados como el entrenamiento personalizado de Vertex AI y la predicción de Vertex AI.
- Para las pipelines de ingeniería de características modulares, usa Vertex AI Feature Store.
- Para explorar y crear prototipos de forma modular, usa entornos de cuadernos como Vertex AI Workbench o Colab Enterprise. Organiza tu código en funciones, clases y secuencias de comandos reutilizables.
Aplicaciones autónomas
En el caso de los agentes de IA, el Agent Development Kit (ADK) proporciona funciones modulares, como Herramientas y Estado. Para habilitar la interoperabilidad entre frameworks como LangChain, LangGraph, LlamaIndex y Vertex AI, puedes combinar el ADK con el protocolo Agent2Agent (A2A) y el protocolo Model Context (MCP). Esta interoperabilidad te permite crear flujos de trabajo de agentes mediante diversos componentes.
Puedes desplegar agentes en Vertex AI Agent Engine, que es un tiempo de ejecución gestionado optimizado para el despliegue de agentes escalables. Para ejecutar agentes en contenedores, puedes aprovechar las funciones de escalado automático de Cloud Run.
Diseñar interfaces bien definidas
Para crear sistemas de software sólidos y fáciles de mantener, es fundamental asegurarse de que los componentes de un sistema estén poco acoplados y modularizados. Este enfoque ofrece ventajas significativas, ya que minimiza las dependencias entre las diferentes partes del sistema. Cuando los módulos están poco acoplados, los cambios en un módulo tienen un impacto mínimo en otros módulos. Este aislamiento permite que los módulos se actualicen y desarrollen de forma independiente.
En las siguientes secciones se ofrecen directrices para garantizar una comunicación y una integración fluidas entre los módulos de tus sistemas de IA y aprendizaje automático.
Elección del protocolo
- Para que el acceso sea universal, usa APIs HTTP, sigue los principios de RESTful y usa JSON para el intercambio de datos independientemente del lenguaje. Diseña los endpoints de la API para representar acciones en los recursos.
- Para disfrutar de una comunicación interna de alto rendimiento entre microservicios, usa gRPC
con Protocol Buffers (ProtoBuf)
para conseguir una serialización eficiente y un tipado estricto. Define estructuras de datos como ModelInput, PredictionResult o datos de herramientas del ADK mediante archivos
.proto
y, a continuación, genera enlaces de lenguaje. - En los casos prácticos en los que el rendimiento es fundamental, aprovecha el streaming de gRPC para conjuntos de datos grandes o para flujos continuos, como las aplicaciones de conversión de texto a voz o de vídeo en directo. Despliega los servicios gRPC en GKE.
Documentación estandarizada y completa
Independientemente del protocolo de interfaz que elijas, es fundamental que la documentación sea estándar. La especificación de OpenAPI describe las APIs RESTful. Usa OpenAPI para documentar tus APIs de IA y aprendizaje automático: rutas, métodos, parámetros, formatos de solicitud y respuesta vinculados a esquemas JSON y seguridad. La documentación completa de las APIs ayuda a mejorar la visibilidad y la integración de los clientes. Para crear y visualizar APIs, usa herramientas de interfaz de usuario como Swagger Editor. Para acelerar el desarrollo y garantizar la coherencia, puedes generar SDKs de cliente y stubs de servidor con herramientas de codificación asistidas por IA, como Gemini Code Assist. Integra la documentación de OpenAPI en tu flujo de CI/CD.
Interacción con Google Cloud servicios gestionados como Vertex AI
Elige entre la mayor abstracción del SDK de Vertex AI, que es la opción preferida para aumentar la productividad del desarrollo, y el control granular que ofrece la API REST.
- El SDK de Vertex AI simplifica las tareas y la autenticación. Usa el SDK cuando necesites interactuar con Vertex AI.
- La API REST es una alternativa eficaz, sobre todo cuando se requiere interoperabilidad entre las capas del sistema. Es útil para herramientas en idiomas que no tienen un SDK o cuando necesitas un control preciso.
Usa APIs para aislar módulos y abstraer los detalles de implementación
Para garantizar la seguridad, la escalabilidad y la visibilidad, es fundamental que implementes una gestión de APIs sólida para tus servicios de IA y aprendizaje automático. Para implementar la gestión de APIs en tus interfaces definidas, usa los siguientes productos:
- API Gateway: En el caso de las APIs que se exponen y gestionan externamente, API Gateway proporciona un punto de entrada centralizado y seguro. Simplifica el acceso a servicios de backend sin servidor, como las APIs de predicción, entrenamiento y datos. API Gateway ayuda a consolidar los puntos de acceso, aplicar contratos de API y gestionar funciones de seguridad, como claves de API y OAuth 2.0. Para proteger los backends frente a la sobrecarga y garantizar la fiabilidad, implementa límites de frecuencia y cuotas de uso en API Gateway.
- Cloud Endpoints: para simplificar el desarrollo y el despliegue de APIs en GKE y Cloud Run, usa Cloud Endpoints, que ofrece una solución sencilla para desarrolladores para generar claves de API. También proporciona monitorización y seguimiento integrados para las llamadas a la API y automatiza la generación de especificaciones de OpenAPI, lo que simplifica la documentación y la integración de clientes. Puedes usar Cloud Endpoints para gestionar el acceso a APIs de IA y aprendizaje automático internas o controladas, como las que se usan para activar el entrenamiento y gestionar almacenes de características.
- Apigee: Para la IA y el aprendizaje automático a escala empresarial, especialmente las APIs de IA generativa sofisticadas, Apigee ofrece una gestión de APIs avanzada y completa. Usa Apigee para disfrutar de seguridad avanzada, como protección contra amenazas y OAuth 2.0, para gestionar el tráfico (por ejemplo, con almacenamiento en caché, cuotas y mediación) y para obtener analíticas. Apigee puede ayudarte a obtener información valiosa sobre los patrones de uso, el rendimiento y la interacción de las APIs, lo que es fundamental para comprender el uso de las APIs de IA generativa.
Planificar la degradación gradual
En los sistemas de IA y aprendizaje automático de producción, los fallos de los componentes son inevitables, al igual que en otros sistemas. La degradación gradual asegura que las funciones esenciales sigan funcionando, aunque puede que con un rendimiento reducido. Este enfoque evita las interrupciones completas y mejora la disponibilidad general. La degradación gradual es fundamental para la inferencia sensible a la latencia, el entrenamiento distribuido y la IA generativa.
En las siguientes secciones se describen las técnicas que se usan para planificar e implementar la degradación elegante.
Aislamiento de fallos
- Para aislar los componentes defectuosos en arquitecturas distribuidas, implementa el patrón de interruptor automático mediante bibliotecas de resiliencia, como Resilience4j en Java y CircuitBreaker en Python.
- Para evitar fallos en cascada, configura umbrales basados en métricas de carga de trabajo de IA y aprendizaje automático, como las tasas de error y la latencia, y define alternativas, como modelos más sencillos y datos almacenados en caché.
Redundancia de componentes
En el caso de los componentes críticos, implementa la redundancia y la conmutación por error automática. Por ejemplo, usa clústeres multizona o regionales de GKE y despliega servicios de Cloud Run de forma redundante en diferentes regiones. Para enrutar el tráfico a instancias en buen estado cuando se detecten instancias en mal estado, usa Cloud Load Balancing.
Asegúrate de que los datos tengan redundancia usando segmentos multirregionales de Cloud Storage. En el entrenamiento distribuido, implementa la creación de puntos de control asíncrona para reanudar el entrenamiento después de errores. Para disfrutar de un entrenamiento flexible y resistente, usa Pathways.
Monitorización proactiva
La degradación controlada ayuda a asegurar la disponibilidad del sistema durante los fallos, pero también debes implementar medidas proactivas para realizar comprobaciones continuas del estado y una monitorización exhaustiva. Recoge métricas específicas de la IA y el aprendizaje automático, como la latencia, el rendimiento y la utilización de la GPU. También puedes recoger métricas de degradación del rendimiento de los modelos, como la deriva de modelos y datos, mediante Cloud Monitoring y Vertex AI Model Monitoring.
Las comprobaciones de estado pueden provocar la necesidad de sustituir nodos defectuosos, desplegar más capacidad o activar automáticamente el reentrenamiento o el ajuste continuo de las canalizaciones que usan datos actualizados. Este enfoque proactivo ayuda a evitar tanto la degradación basada en la precisión como la degradación gradual a nivel del sistema, y contribuye a mejorar la fiabilidad general.
Prácticas de SRE
Para monitorizar el estado de tus sistemas, te recomendamos que adoptes prácticas de SRE para implementar objetivos de nivel de servicio. Las alertas sobre la pérdida del presupuesto de errores y la velocidad de gasto pueden ser indicadores tempranos de problemas de fiabilidad del sistema. Para obtener más información sobre las prácticas de SRE, consulta el libro de SRE de Google.
Crear una plataforma de MLOps integral y automatizada
Un sistema de IA y aprendizaje automático sólido, escalable y fiable requiere una plataforma de MLOps integral y automatizada para el ciclo de vida del desarrollo de modelos. Google CloudEl ciclo de vida del desarrollo incluye la gestión inicial de los datos, el entrenamiento continuo de los modelos, el despliegue y la monitorización en producción. Al automatizar estas fases en Google Cloud, se establecen procesos repetibles, se reduce el trabajo manual, se minimizan los errores y se acelera el ritmo de innovación.
Una plataforma de MLOps automatizada es esencial para establecer una fiabilidad de nivel de producción en tus aplicaciones. La automatización ayuda a asegurar la calidad de los modelos, garantizar la reproducibilidad y permitir la integración y la entrega continuas de artefactos de IA y aprendizaje automático.
Para crear una plataforma de MLOps integral y automatizada, ten en cuenta las siguientes recomendaciones.
Automatizar el ciclo de vida del desarrollo de modelos
Un elemento fundamental de una plataforma de MLOps automatizada es la orquestación de todo el flujo de trabajo de IA y aprendizaje automático como una serie de pasos conectados y automatizados: desde la preparación y la validación de los datos hasta el entrenamiento, la evaluación, el despliegue y la monitorización de los modelos.
- Usa Vertex AI Pipelines como orquestador central:
- Define flujos de trabajo integrales con componentes modulares para el procesamiento, el entrenamiento, la evaluación y la implementación de datos.
- Automatiza las ejecuciones de la canalización mediante programaciones o activadores, como datos nuevos o cambios de código.
- Implementa la parametrización y el control de versiones automatizados para cada ejecución de la canalización y crea un historial de versiones.
- Monitoriza el progreso de las canalizaciones y el uso de recursos mediante el registro y el trazado integrados, y utiliza las alertas de Cloud Monitoring.
- Define tus flujos de procesamiento de aprendizaje automático de forma programática mediante el SDK de Kubeflow Pipelines (KFP) o el SDK de TensorFlow Extended. Para obtener más información, consulta Interfaces de Vertex AI Pipelines.
- Orquesta las operaciones mediante servicios como Google Cloud Dataflow, entrenamiento personalizado de Vertex AI, registro de modelos de Vertex AI y endpoints de Vertex AI.
- En los flujos de trabajo de IA generativa, coordina los pasos para la gestión de peticiones, la inferencia por lotes, la evaluación de la intervención humana (HITL) y la coordinación de los componentes del ADK.
Gestionar la infraestructura como código
La infraestructura como código (IaC) es fundamental para gestionar la infraestructura de los sistemas de IA y aprendizaje automático, así como para permitir implementaciones reproducibles, escalables y fáciles de mantener. Las necesidades de infraestructura de los sistemas de IA y aprendizaje automático son dinámicas y complejas. Los sistemas suelen requerir hardware especializado, como GPUs y TPUs. La IaC ayuda a mitigar los riesgos de la gestión manual de la infraestructura, ya que garantiza la coherencia, permite restauraciones y hace que las implementaciones sean repetibles.
Para gestionar de forma eficaz los recursos de tu infraestructura como código, utiliza las siguientes técnicas.
Automatizar el aprovisionamiento de recursos
Para gestionar de forma eficaz la IaC en Google Cloud, define y aprovisiona tus recursos de infraestructura de IA y aprendizaje automático con Terraform. La infraestructura puede incluir recursos como los siguientes:
- Clústeres de GKE configurados con grupos de nodos. Los grupos de nodos se pueden optimizar en función de los requisitos de la carga de trabajo. Por ejemplo, puedes usar GPUs A100, H100, H200 o B200 para el entrenamiento y GPUs L4 para la inferencia.
- Endpoints de Vertex AI configurados para servir modelos, con tipos de máquina y políticas de escalado definidos.
- Segmentos de Cloud Storage para datos y artefactos.
Usar plantillas de configuración
Organiza tus configuraciones de Terraform como plantillas modulares. Para acelerar el aprovisionamiento de recursos de IA y AA, puedes usar Cluster Toolkit. El kit de herramientas proporciona planos de ejemplo, que son plantillas de Terraform seleccionadas por Google que puedes usar para desplegar clústeres de HPC, IA y AA listos para usar en Slurm o GKE. Puedes personalizar el código de Terraform y gestionarlo en tu sistema de control de versiones. Para automatizar el flujo de trabajo de aprovisionamiento y actualización de recursos, puedes integrar el código en tus flujos de procesamiento de CI/CD mediante Cloud Build.
Automatizar los cambios de configuración
Una vez que haya aprovisionado su infraestructura, gestione los cambios de configuración de forma declarativa:
- En entornos centrados en Kubernetes, gestiona tus Google Cloud recursos como objetos de Kubernetes mediante Config Connector.
- Define y gestiona recursos de Vertex AI, como conjuntos de datos, modelos y endpoints, instancias de Cloud SQL, temas de Pub/Sub y segmentos de Cloud Storage, mediante manifiestos YAML.
- Despliega los manifiestos en tu clúster de GKE para integrar la configuración de la aplicación y la infraestructura.
- Automatiza las actualizaciones de configuración mediante flujos de procesamiento de CI/CD y usa plantillas para gestionar las diferencias entre entornos.
- Implementa configuraciones para políticas de Gestión de Identidades y Accesos (IAM) y cuentas de servicio mediante IaC.
Integración con CI/CD
- Automatiza el ciclo de vida de los recursos de Google Cloud infraestructura integrando IaC en las canalizaciones de CI/CD mediante herramientas como Cloud Build e Infrastructure Manager.
- Define activadores para las actualizaciones automáticas en las confirmaciones de código.
- Implementa pruebas y validaciones automatizadas en la canalización. Por ejemplo, puedes crear una secuencia de comandos para ejecutar automáticamente los comandos de Terraform
validate
yplan
. - Almacena las configuraciones como artefactos y habilita el control de versiones.
- Define entornos independientes, como desarrollo, preproducción y producción, con configuraciones distintas en el control de versiones y automatiza la promoción de entornos.
Validar el comportamiento del modelo
Para mantener la precisión y la relevancia de los modelos a lo largo del tiempo, automatiza el proceso de entrenamiento y evaluación en tu plataforma de MLOps. Esta automatización, junto con una validación rigurosa, ayuda a asegurar que los modelos se comporten como se espera con los datos pertinentes antes de implementarse en producción.
- Configurar pipelines de entrenamiento continuo que se activen con datos nuevos y señales de monitorización, como la deriva de datos, o que se ejecuten según una programación.
- Para gestionar los trabajos de entrenamiento automatizados, como las pruebas de ajuste de hiperparámetros y las configuraciones de entrenamiento distribuido para modelos más grandes, usa el entrenamiento personalizado de Vertex AI.
- Para ajustar modelos básicos, automatiza el proceso de ajuste e integra las tareas en tus pipelines.
- Implementa el control de versiones de modelos automatizado y almacena de forma segura los artefactos de modelos entrenados después de cada ronda de entrenamiento realizada correctamente. Puedes almacenar los artefactos en Cloud Storage o registrarlos en Model Registry.
- Define métricas de evaluación y establece umbrales claros, como la precisión mínima, la tasa de error máxima y la puntuación F1 mínima.
- Asegúrate de que un modelo cumpla los umbrales para superar automáticamente la evaluación y se tenga en cuenta para la implementación.
- Automatiza la evaluación usando servicios como la evaluación de modelos en Vertex AI.
- Asegúrate de que la evaluación incluya métricas específicas de la calidad de los resultados generados, la precisión de los datos, los atributos de seguridad y el cumplimiento del estilo o formato especificados.
- Para registrar y monitorizar automáticamente los parámetros, las versiones de código, las versiones del conjunto de datos y los resultados de cada ejecución de entrenamiento y evaluación, usa Vertex AI Experiments. Este enfoque proporciona un historial útil para hacer comparaciones, depurar y reproducir.
- Para optimizar el ajuste de hiperparámetros y automatizar la búsqueda de configuraciones de modelos óptimas en función del objetivo definido, usa Vertex AI Vizier.
- Para visualizar las métricas de entrenamiento y depurar durante el desarrollo, usa Vertex AI TensorBoard.
Validar las entradas y salidas de las canalizaciones de IA y aprendizaje automático
Para garantizar la fiabilidad y la integridad de tus sistemas de IA y aprendizaje automático, debes validar los datos cuando entran en los sistemas y se mueven por las canalizaciones. También debes verificar las entradas y salidas en los límites de los componentes. Una validación sólida de todas las entradas y salidas (datos sin procesar, datos procesados, configuraciones, argumentos y archivos) ayuda a evitar comportamientos inesperados y a mantener la calidad del modelo durante todo el ciclo de vida de MLOps. Si integras este enfoque proactivo en tu plataforma de MLOps, podrás detectar errores antes de que se propaguen por todo el sistema, lo que te permitirá ahorrar tiempo y recursos.
Para validar de forma eficaz las entradas y salidas de tus canalizaciones de IA y aprendizaje automático, usa las siguientes técnicas.
Automatizar la validación de datos
- Implementa la validación de datos automatizada en tus flujos de procesamiento de ingestión y preprocesamiento de datos mediante TensorFlow Data Validation (TFDV).
- Monitoriza las distribuciones de datos a lo largo del tiempo con las funciones de TFDV.
- Visualiza las tendencias con herramientas integradas en Cloud Monitoring para detectar la deriva de los datos. Puedes activar automáticamente las canalizaciones de reentrenamiento de modelos cuando los patrones de datos cambien significativamente.
- Almacena los resultados de la validación y las métricas en BigQuery para analizarlos y hacer un seguimiento histórico, y archiva los artefactos de validación en Cloud Storage.
Validar las configuraciones de la canalización y los datos de entrada
Para evitar fallos en la canalización o comportamientos inesperados causados por ajustes incorrectos, implementa una validación estricta para todas las configuraciones de la canalización y los argumentos de línea de comandos:
- Define esquemas claros para tus archivos de configuración, como YAML o JSON, usando bibliotecas de validación de esquemas, como jsonschema para Python. Valida los objetos de configuración con estos esquemas antes de que se inicie una ejecución de la canalización y antes de que se ejecute un componente.
- Implementa la validación de entrada para todos los argumentos de línea de comandos y parámetros de la canalización mediante bibliotecas de análisis de argumentos, como
argparse
. La validación debe comprobar que los tipos de datos sean correctos, que los valores sean válidos y que los argumentos sean obligatorios. - En Vertex AI Pipelines, define los tipos y las propiedades esperados de los parámetros de los componentes mediante las funciones de validación de entrada de componentes integradas.
- Para asegurar la reproducibilidad de las ejecuciones de la canalización y mantener un registro de auditoría, almacena los archivos de configuración validados y versionados en Cloud Storage o Artifact Registry.
Validar archivos de entrada y salida
Valida los archivos de entrada y salida, como los conjuntos de datos, los artefactos de modelos y los informes de evaluación, para comprobar su integridad y que el formato sea correcto:
- Valida formatos de archivo como CSV, Parquet y tipos de imagen mediante bibliotecas.
- En el caso de archivos grandes o artefactos críticos, valida los tamaños de los archivos y las sumas de comprobación para detectar si están dañados o si las transferencias están incompletas. Para ello, usa la validación de datos y la detección de cambios de Cloud Storage.
- Valida los archivos mediante Cloud Run functions (por ejemplo, en función de los eventos de subida de archivos) o en las pipelines de Dataflow.
- Almacena los resultados de la validación en BigQuery para facilitar la recuperación y el análisis.
Automatizar la implementación y aplicar la monitorización continua
El despliegue automatizado y la monitorización continua de los modelos en producción ayudan a garantizar la fiabilidad, realizar actualizaciones rápidas y detectar problemas rápidamente. Esto implica gestionar versiones de modelos, controlar la implementación, automatizar la implementación mediante CI/CD y monitorizar de forma exhaustiva, tal como se describe en las siguientes secciones.
Gestionar versiones de modelos
Gestiona las iteraciones de modelos y los artefactos asociados mediante herramientas de control de versiones:
- Para hacer un seguimiento de las versiones y los metadatos de los modelos, así como para vincularlos a los artefactos del modelo subyacente, usa Model Registry.
- Implementa un esquema de control de versiones claro (por ejemplo, el control de versiones semántico). En cada versión del modelo, adjunta metadatos completos, como parámetros de entrenamiento, métricas de evaluación de las canalizaciones de validación y la versión del conjunto de datos.
- Almacena artefactos de modelos, como archivos de modelos, pesos preentrenados e imágenes de contenedores de servicio, en Artifact Registry y usa sus funciones de control de versiones y etiquetado.
- Para cumplir los requisitos de seguridad y gobernanza, define políticas de control de acceso estrictas para Model Registry y Artifact Registry.
- Para registrar y gestionar versiones de forma automática, así como para integrar versiones en flujos de procesamiento de CI/CD automatizados, usa el SDK o la API de Vertex AI.
Realizar una implementación controlada
Controla el despliegue de versiones de modelos en endpoints mediante las funciones de gestión del tráfico de tu plataforma de servicio.
- Implementa un despliegue gradual mediante la función de división del tráfico de los endpoints de Vertex AI.
- Si despliega su modelo en GKE, utilice técnicas avanzadas de gestión del tráfico, como el despliegue canary:
- Dirige un pequeño subconjunto del tráfico de producción a una nueva versión del modelo.
- Monitoriza continuamente el rendimiento y las tasas de errores mediante métricas.
- Demuestra que el modelo es fiable.
- Implementa la versión en todo el tráfico.
- Realiza pruebas A/B de agentes de IA:
- Despliega dos versiones diferentes de un modelo-agente o modelos completamente distintos en el mismo endpoint.
- Dividir el tráfico entre los despliegues.
- Analiza los resultados en función de los objetivos de negocio.
- Implementa mecanismos de reversión automatizados que puedan restaurar rápidamente el tráfico de los endpoints a una versión estable anterior del modelo si se activan alertas de monitorización o no se alcanzan los umbrales de rendimiento.
- Configura la división del tráfico y los ajustes de implementación de forma programática mediante el SDK o la API de Vertex AI.
- Usa Cloud Monitoring para monitorizar el rendimiento y el tráfico de las versiones.
- Automatiza la implementación con flujos de procesamiento de CI/CD. Puedes usar Cloud Build para compilar contenedores, crear versiones de artefactos y activar el despliegue en endpoints de Vertex AI.
- Asegúrate de que los flujos de procesamiento de CI/CD gestionen las versiones y extraigan datos de Artifact Registry.
- Antes de cambiar el tráfico, realiza pruebas automatizadas de los endpoints para comprobar la exactitud de las predicciones, la latencia, el rendimiento y la función de la API.
- Almacena todas las configuraciones en el control de versiones.
Monitorizar continuamente
- Usa Model Monitoring para detectar automáticamente la degradación del rendimiento, la deriva de los datos (cambios en la distribución de las entradas en comparación con el entrenamiento) y la deriva de las predicciones (cambios en las salidas del modelo).
- Configura tareas de detección de desviaciones con umbrales y alertas.
- Monitoriza el rendimiento en tiempo real: latencia de las predicciones, rendimiento y tasas de error.
- Define métricas personalizadas en Cloud Monitoring para los KPIs de tu empresa.
- Integra los resultados de Model Monitoring y las métricas personalizadas con Cloud Monitoring para recibir alertas y crear paneles de control.
- Configura canales de notificación, como correo electrónico, Slack o PagerDuty, y configura la corrección automatizada.
- Para depurar los registros de predicción, usa Cloud Logging.
- Integra la monitorización con la gestión de incidentes.
En el caso de los endpoints de IA generativa, monitoriza las características de los resultados, como la toxicidad y la coherencia:
- Monitoriza el servicio de características para detectar la deriva.
- Implementa una validación de predicciones granular: valida los resultados con respecto a los intervalos y formatos esperados mediante una lógica personalizada.
- Monitoriza las distribuciones de predicciones para detectar cambios.
- Valida el esquema de salida.
- Configura alertas para salidas y cambios inesperados.
- Monitoriza y responde a eventos de validación en tiempo real con Pub/Sub.
Asegúrate de que los resultados de la monitorización exhaustiva se incluyan en el entrenamiento continuo.
Mantener la confianza y el control mediante el gobierno de los datos y los modelos
La fiabilidad de la IA y el aprendizaje automático va más allá del tiempo de actividad técnica. Incluye confianza y una gestión sólida de los datos y los modelos. Los resultados generados por IA pueden ser inexactos, estar sesgados o estar desactualizados. Estos problemas minan la confianza y pueden causar daños. La trazabilidad completa, el control de acceso estricto, la validación automatizada y las prácticas transparentes ayudan a asegurar que los resultados de la IA sean fiables, dignos de confianza y cumplan los estándares éticos.
Para mantener la confianza y el control mediante el gobierno de los datos y los modelos, ten en cuenta las siguientes recomendaciones.
Establecer catálogos de datos y modelos para la trazabilidad
Para facilitar la trazabilidad, la auditoría y la comprensión del linaje de tus recursos de IA y aprendizaje automático, mantén un registro sólido y centralizado de las versiones de datos y modelos a lo largo de su ciclo de vida. Un catálogo de datos y modelos fiable actúa como única fuente de información veraz para todos los artefactos que usan y producen tus pipelines de IA y aprendizaje automático, desde fuentes de datos sin procesar y conjuntos de datos procesados hasta versiones de modelos entrenados y endpoints desplegados.
Utilice los siguientes productos, herramientas y técnicas para crear y mantener catálogos de sus recursos de datos:
- Crea un catálogo de tus recursos de datos en toda la empresa con Dataplex Universal Catalog. Para descubrir y crear automáticamente inventarios de los recursos de datos, integra Dataplex Universal Catalog con tus sistemas de almacenamiento, como BigQuery, Cloud Storage y Pub/Sub.
- Asegúrate de que tus datos tengan una alta disponibilidad y durabilidad almacenándolos en segmentos multirregionales o de dos regiones de Cloud Storage. Los datos que subas a estos contenedores se almacenan de forma redundante en al menos dos ubicaciones geográficas distintas. Esta redundancia proporciona una resiliencia integrada frente a las interrupciones regionales y ayuda a garantizar la integridad de los datos.
- Etiqueta y anota tus conjuntos de datos con metadatos empresariales relevantes, información sobre la propiedad, niveles de sensibilidad y detalles del linaje. Por ejemplo, vincular un conjunto de datos procesado a su fuente sin procesar y a la canalización que creó el conjunto de datos.
- Crea un repositorio central para las versiones de modelos con Registro de modelos.
Registre cada versión del modelo entrenado y vincúlela a los metadatos asociados.
Los metadatos pueden incluir lo siguiente:
- Parámetros de entrenamiento.
- Métricas de evaluación de las canalizaciones de validación.
- Versión del conjunto de datos que se ha usado para el entrenamiento, con el linaje rastreado hasta la entrada de Dataplex Universal Catalog correspondiente.
- Versión del código que ha generado el conjunto de datos.
- Detalles sobre el framework o el modelo fundacional que se ha usado.
- Antes de importar un modelo en Model Registry, almacena los artefactos del modelo, como los archivos del modelo y los pesos preentrenados, en un servicio como Cloud Storage. Almacena imágenes de contenedor personalizadas para tareas de servicio o de entrenamiento personalizadas en un repositorio seguro como Artifact Registry.
- Para asegurarte de que los datos y los recursos del modelo se registren y actualicen automáticamente en los catálogos correspondientes cuando se creen o modifiquen, implementa procesos automatizados en tus flujos de trabajo de MLOps. Este catálogo completo proporciona una trazabilidad integral desde los datos sin procesar hasta la predicción, lo que le permite auditar las entradas y los procesos que han llevado a una versión o predicción específicas del modelo. La función de auditoría es fundamental para depurar comportamientos inesperados, asegurar el cumplimiento de las políticas de uso de datos y comprender el impacto de los cambios en los datos o modelos a lo largo del tiempo.
- En el caso de la IA generativa y los modelos fundacionales, tu catálogo también debe registrar detalles sobre el modelo fundacional específico utilizado, los parámetros de ajuste y los resultados de la evaluación que sean específicos de la calidad y la seguridad del resultado generado.
Implementar controles de acceso y registros de auditoría sólidos
Para mantener la confianza y el control en tus sistemas de IA y aprendizaje automático, es fundamental que protejas los datos y los modelos sensibles frente a accesos no autorizados y que asegures la rendición de cuentas de todos los cambios.
- Implementa controles de acceso estrictos y mantén registros de auditoría detallados en todos los componentes de tus sistemas de IA y aprendizaje automático en Google Cloud.
- Define permisos granulares en Gestión de Identidades y Accesos para usuarios, grupos y cuentas de servicio que interactúen con tus recursos de IA y aprendizaje automático.
- Sigue el principio de mínimos accesos de forma rigurosa.
- Concede solo los permisos mínimos necesarios para tareas específicas. Por ejemplo, una cuenta de servicio de entrenamiento necesita acceso de lectura a los datos de entrenamiento y acceso de escritura a los artefactos del modelo, pero es posible que el servicio no necesite acceso de escritura a los endpoints de servicio de producción.
Aplica las políticas de gestión de identidades y accesos de forma coherente en todos los recursos y elementos pertinentes de tus sistemas de IA y aprendizaje automático, incluidos los siguientes:
- Segmentos de Cloud Storage que contienen datos sensibles o artefactos de modelos.
- Conjuntos de datos de BigQuery.
- Recursos de Vertex AI, como repositorios de modelos, endpoints, pipelines y recursos de Feature Store.
- Recursos de computación, como clústeres de GKE y servicios de Cloud Run.
Usa la auditoría y los registros para registrar, monitorizar y analizar la actividad de acceso:
- Habilita los registros de auditoría de Cloud en todos los Google Cloud servicios que utilice tu sistema de IA y aprendizaje automático.
- Configura los registros de auditoría para registrar información detallada sobre las llamadas a la API, los eventos de acceso a datos y los cambios de configuración realizados en tus recursos. Monitoriza los registros para detectar actividad sospechosa, intentos de acceso no autorizados o modificaciones inesperadas en datos críticos o recursos del modelo.
- Para realizar análisis, alertas y visualizaciones en tiempo real, transmite los registros de auditoría a Cloud Logging.
- Para almacenar datos a largo plazo de forma rentable y realizar análisis de seguridad retrospectivos o auditorías de cumplimiento, exporta los registros a BigQuery.
- Para centralizar la monitorización de la seguridad, integra los registros de auditoría con tus sistemas de gestión de eventos y de información de seguridad (SIEM). Revisa periódicamente las políticas de acceso y los registros de auditoría para asegurarte de que se ajustan a tus requisitos de gobernanza y detectar posibles infracciones de las políticas.
- En el caso de las aplicaciones que gestionan datos sensibles, como la información personal identificable (IPI) para el entrenamiento o la inferencia, utiliza las comprobaciones de Protección de Datos Sensibles en las canalizaciones o en el almacenamiento de datos.
- En el caso de las soluciones de IA generativa y de agentes, usa los registros de auditoría para hacer un seguimiento de quién ha accedido a modelos o herramientas específicos, qué datos se han usado para el ajuste o las peticiones, y qué consultas se han enviado a los endpoints de producción. Los registros de auditoría te ayudan a asegurar la rendición de cuentas y te proporcionan datos cruciales para investigar el uso inadecuado de los datos o las infracciones de las políticas.
Abordar los sesgos, la transparencia y la explicabilidad
Para crear sistemas de IA y aprendizaje automático fiables, debes abordar los posibles sesgos inherentes a los datos y los modelos, esforzarte por lograr la transparencia en el comportamiento del sistema y proporcionar explicaciones de los resultados del modelo. Es especialmente importante crear sistemas fiables en ámbitos sensibles o cuando se usan modelos complejos, como los que se suelen utilizar en aplicaciones de IA generativa.
- Implementa prácticas proactivas para identificar y mitigar los sesgos a lo largo del ciclo de vida de MLOps.
- Analiza los datos de entrenamiento para detectar sesgos mediante herramientas que detecten desviaciones en las distribuciones de las características en diferentes grupos demográficos o atributos sensibles.
- Evalúa el rendimiento general del modelo y el rendimiento de las porciones de datos predefinidas. Esta evaluación te ayuda a identificar el rendimiento dispar o los sesgos que afectan a subgrupos específicos.
Para que los modelos sean transparentes y explicables, usa herramientas que ayuden a los usuarios y a los desarrolladores a entender por qué un modelo ha hecho una predicción concreta o ha generado un resultado específico.
- En el caso de los modelos tabulares que se despliegan en endpoints de Vertex AI, genera atribuciones de funciones con Vertex Explainable AI. Las atribuciones de características indican las características de entrada que más han contribuido a la predicción.
- Explora de forma interactiva el comportamiento de los modelos y los posibles sesgos de un conjunto de datos mediante herramientas independientes del modelo, como la herramienta de hipótesis, que se integra con TensorBoard.
- Integra la interpretabilidad en tus paneles de control de monitorización. En situaciones en las que es importante entender el razonamiento del modelo para generar confianza o tomar decisiones, proporciona datos de explicabilidad directamente a los usuarios finales a través de las interfaces de tu aplicación.
- En el caso de los modelos complejos, como los LLMs que se usan en los modelos de IA generativa, explica el proceso que ha seguido un agente, por ejemplo, mediante registros de seguimiento. La interpretabilidad es relativamente difícil en estos modelos, pero sigue siendo fundamental.
- En las aplicaciones de RAG, proporciona citas de la información obtenida. También puedes usar técnicas como la ingeniería de peticiones para guiar al modelo y que te proporcione explicaciones o muestre los pasos de su razonamiento.
- Detecta cambios en el comportamiento o en los resultados del modelo que puedan indicar que están surgiendo sesgos o injusticias. Para ello, implementa una monitorización continua en producción. Documenta las limitaciones del modelo, los casos prácticos previstos y los posibles sesgos conocidos como parte de los metadatos del modelo en el registro de modelos.
Implementar prácticas integrales de observabilidad y fiabilidad de la IA y el aprendizaje automático
La observabilidad integral es fundamental para gestionar sistemas complejos de IA y aprendizaje automático en producción. También es esencial para medir la fiabilidad de los sistemas complejos de IA y aprendizaje automático, especialmente en el caso de la IA generativa, debido a su complejidad, a la intensidad de los recursos y a la posibilidad de que genere resultados impredecibles. La observabilidad integral implica observar la infraestructura, el código de la aplicación, los datos y el comportamiento del modelo para obtener información valiosa que permita detectar, diagnosticar y responder a los problemas de forma proactiva. Esta observabilidad lleva a sistemas fiables y de alto rendimiento. Para conseguir una observabilidad integral, debes hacer lo siguiente:
- Adopta los principios de SRE.
- Define objetivos de fiabilidad claros.
- Monitoriza métricas en las distintas capas del sistema.
- Usa las estadísticas de observabilidad para mejorar continuamente y gestionar de forma proactiva.
Para implementar prácticas de observabilidad y fiabilidad integrales en cargas de trabajo de IA y aprendizaje automático en Google Cloud, ten en cuenta las siguientes recomendaciones.
Establecer objetivos de fiabilidad y métricas empresariales
Identifica los indicadores clave de rendimiento (KPIs) que afectan directamente a tu sistema de IA y aprendizaje automático. Entre los KPIs se pueden incluir los ingresos influidos por las recomendaciones de la IA, la pérdida de clientes que los sistemas de IA han predicho o mitigado, y las tasas de conversión y de interacción de los usuarios que se han conseguido gracias a las funciones de IA generativa.
En el caso de cada KPI, define las métricas de fiabilidad técnica correspondientes que afecten al KPI. Por ejemplo, si el KPI es "satisfacción del cliente con un asistente de IA conversacional", las métricas de fiabilidad correspondientes pueden incluir las siguientes:
- El porcentaje de solicitudes de los usuarios que se han completado correctamente.
- La latencia de las respuestas: tiempo hasta el primer token (TTFT) y streaming de tokens para los LLMs.
- La tasa de respuestas irrelevantes o dañinas.
- El porcentaje de tareas que el agente ha completado correctamente.
En el caso del entrenamiento de IA y AA, las métricas de fiabilidad pueden incluir la utilización de FLOPS del modelo (MFU), las iteraciones por segundo, los tokens por segundo y los tokens por dispositivo.
Para medir y mejorar de forma eficaz la fiabilidad de la IA y el AA, empieza por definir objetivos de fiabilidad claros que estén alineados con los objetivos empresariales generales. Adopta el enfoque de SRE definiendo SLOs que cuantifiquen los niveles aceptables de fiabilidad y rendimiento de tus servicios de IA y aprendizaje automático desde la perspectiva de los usuarios. Cuantifica estas métricas de fiabilidad técnica con objetivos de SLO específicos.
Estos son algunos ejemplos de objetivos de SLO:
- El 99,9% de las llamadas a la API deben devolver una respuesta correcta.
- La latencia de inferencia del percentil 95 debe ser inferior a 300 ms.
- El TTFT debe ser inferior a 500 ms en el 99% de las solicitudes.
- El porcentaje de respuestas dañinas debe ser inferior al 0,1%.
Si los SLOs se ajustan directamente a las necesidades de la empresa, se garantiza que los esfuerzos para mejorar la fiabilidad se centren en el comportamiento más crítico del sistema, que afecta a los usuarios y a la empresa. Este enfoque ayuda a transformar la fiabilidad en una propiedad de ingeniería medible y útil.
Monitorizar el rendimiento de la infraestructura y las aplicaciones
Monitoriza las métricas de infraestructura de todos los recursos que utilizan tus sistemas de IA y aprendizaje automático. Las métricas incluyen el uso del procesador (CPU, GPU y TPU), el uso de memoria, el rendimiento y la latencia de la red, y las E/S de disco. Monitoriza las métricas de los entornos gestionados, como el entrenamiento y el servicio de Vertex AI, y de los recursos autogestionados, como los nodos de GKE y las instancias de Cloud Run.
Monitoriza las cuatro señales de oro de tus aplicaciones de IA y aprendizaje automático:
- Latencia: tiempo que se tarda en responder a las solicitudes.
- Tráfico: volumen de solicitudes o carga de trabajo.
- Tasa de errores: tasa de solicitudes u operaciones fallidas.
- Saturación: uso de recursos críticos, como CPU, memoria y aceleradores de GPU o TPU, que indica lo cerca que está tu sistema de los límites de capacidad.
Realiza la monitorización con las siguientes técnicas:
- Recoge, almacena y visualiza las métricas de infraestructura y aplicaciones con Cloud Monitoring.
Puedes usar paneles predefinidos para los servicios de Google Cloud y crear paneles personalizados que se adapten a los indicadores de rendimiento y al estado de la infraestructura específicos de tu carga de trabajo.
- Recoge e integra métricas de frameworks de servicio especializados, como vLLM o NVIDIA Triton Inference Server, en Cloud Monitoring mediante Google Cloud Managed Service para Prometheus.
- Crea paneles de control y configura alertas para métricas relacionadas con el entrenamiento personalizado, los endpoints y el rendimiento, así como para métricas que Vertex AI exporta a Cloud Monitoring.
- Recoge registros detallados de tus aplicaciones de IA y aprendizaje automático, así como de la infraestructura subyacente, mediante Cloud Logging. Estos registros son esenciales para solucionar problemas y analizar el rendimiento. Proporcionan contexto sobre eventos y errores.
- Identifica problemas de latencia y comprende los flujos de solicitudes en microservicios de IA y aprendizaje automático distribuidos con Cloud Trace. Esta función es fundamental para depurar interacciones complejas de agentes de Vertex AI o flujos de inferencia de varios componentes.
- Identifica los cuellos de botella del rendimiento en los bloques de funciones del código de la aplicación con Cloud Profiler. Identificar los cuellos de botella del rendimiento puede ayudarte a optimizar el uso de los recursos y el tiempo de ejecución.
- Recoge métricas específicas relacionadas con los aceleradores, como el uso detallado de la GPU por proceso, el uso de memoria por proceso y la temperatura, mediante herramientas como NVIDIA Data Center GPU Manager (DCGM).
Implementar la observabilidad de los datos y los modelos
Los sistemas de IA generativa fiables requieren una observabilidad sólida de los datos y los modelos, que empieza con la monitorización integral de la canalización.
- Monitoriza las tasas de ingestión de datos, los volúmenes procesados y las latencias de transformación mediante servicios como Dataflow.
- Monitoriza las tasas de éxito y de error de los trabajos en tus flujos de procesamiento de MLOps, incluidos los flujos de procesamiento gestionados por Vertex AI Pipelines.
Es fundamental evaluar continuamente la calidad de los datos.
- Gestiona y controla los datos con Dataplex Universal Catalog:
- Evalúa la precisión validando los datos con la verdad fundamental o monitorizando las tasas de detección de valores atípicos.
- Monitoriza la actualización en función de la antigüedad de los datos y la frecuencia de las actualizaciones en comparación con los acuerdos de nivel de servicio.
- Evalúa la integridad haciendo un seguimiento de los porcentajes de valores nulos y de las tasas de relleno de los campos obligatorios.
- Asegura la validez y la coherencia mediante comprobaciones de cumplimiento del esquema y de duplicación.
- Detecta anomalías de forma proactiva mediante las alertas de Cloud Monitoring y el linaje de datos claro para la trazabilidad.
- En el caso de los sistemas RAG, analiza la relevancia del contexto obtenido y la fundamentación (atribución a la fuente) de las respuestas.
- Monitoriza el rendimiento de las consultas de bases de datos vectoriales.
Entre las métricas clave de observabilidad de los modelos se incluyen los recuentos de tokens de entrada y salida, así como las tasas de error específicas de los modelos, como las alucinaciones o los fallos en la resolución de consultas. Para hacer un seguimiento de estas métricas, usa Model Monitoring.
- Monitoriza continuamente las puntuaciones de toxicidad de los resultados y las valoraciones de los usuarios.
- Automatiza la evaluación de los resultados de los modelos en función de los criterios definidos mediante el servicio de evaluación de IA generativa.
- Asegura un rendimiento constante monitorizando sistemáticamente la deriva de datos y de conceptos con métricas de tasa de error completas.
Para monitorizar las métricas del modelo, puedes usar TensorBoard o MLflow. Para realizar análisis y perfilado detallados con el fin de solucionar problemas de rendimiento, puedes usar PyTorch XLA profiling o NVIDIA Nsight.
Colaboradores
Autores:
- Rick (Rugui) Chen | Arquitecto de soluciones de campo de infraestructura de IA
- Stef Ruinard | Arquitecto de soluciones de campo de IA generativa
Otros colaboradores:
- Filipe Gracio, doctor | Ingeniero de clientes y especialista en IA y aprendizaje automático
- Hossein Sarshar | Arquitecto de soluciones de campo de infraestructura de IA
- Jose Andrade | Ingeniero de clientes, especialista en SRE
- Kumar Dhanagopal | Desarrollador de soluciones entre productos
- Laura Hyatt | Ingeniera de clientes, FSI
- Olivier Martin | Arquitecto de soluciones de campo de infraestructura de IA
- Radhika Kanakam | Responsable del programa Google Cloud Well-Architected Framework