Compartir a través de


Principios de diseño para cargas de trabajo de IA en Azure

En este artículo se describen los principios básicos de las cargas de trabajo de inteligencia artificial en Azure, con un enfoque en los aspectos de la inteligencia artificial de una arquitectura. Es esencial tener en cuenta todos los pilares del Marco de buena arquitectura de Azure colectivamente, incluidas sus desventajas. Aplique cada pilar a los requisitos funcionales y no funcionales de la carga de trabajo.

Fiabilidad

Al ejecutar cargas de trabajo de INTELIGENCIA ARTIFICIAL en Azure, debe tener en cuenta muchos de los mismos requisitos de confiabilidad que considere para otros tipos de cargas de trabajo. Sin embargo, las consideraciones específicas para el entrenamiento, el hospedaje y la inferencia del modelo son especialmente importantes y son el foco de este artículo. Es importante integrar estos procedimientos con los procedimientos recomendados de diseño estándar para las aplicaciones en la nube, que también se aplican a las cargas de trabajo de inteligencia artificial.

Revise los principios de diseño de confiabilidad para comprender los conceptos que se describen aquí.

Principio de diseño Consideraciones
Mitigue los únicos puntos de error. Confiar en una sola instancia de componentes críticos puede provocar problemas importantes. Para evitar estos tipos de problemas, cree redundancia en todos los componentes críticos. Use plataformas que tengan características integradas de tolerancia a errores y alta disponibilidad e implemente redundancia mediante la implementación de varias instancias o nodos.
Realizar análisis del modo de error.

Aproveche los patrones de diseño conocidos.
Analice periódicamente los posibles modos de error en los componentes del sistema y cree resistencia frente a estos errores. Use patrones de diseño conocidos para aislar partes del sistema y evitar errores en cascada. Por ejemplo, el patrón Bulkhead puede ayudar a aislar errores y los mecanismos de reintento y los disyuntores pueden controlar errores transitorios, como las solicitudes de limitación.
Equilibre los objetivos de confiabilidad entre los componentes dependientes. Asegúrese de que el punto de conexión de inferencia o el modelo y el almacén de datos estén alineados en términos de confiabilidad. Los componentes de la aplicación deben permanecer disponibles incluso en condiciones inesperadas, como un aumento en los usuarios simultáneos. Además, la carga de trabajo debe poder transferirse automáticamente a los sistemas de copia de seguridad en caso de errores. Si se produce un error en un componente, afecta a la confiabilidad del otro.

Del mismo modo, las API de nivel de servicio, que son recursos de producción críticos, deben cumplir los mismos estándares de confiabilidad que otros flujos de carga de trabajo de alta importancia. Si estas API requieren alta disponibilidad, la plataforma de hospedaje debe admitir zonas de disponibilidad o un diseño de varias regiones para garantizar el funcionamiento continuo y la resistencia.
Diseño para confiabilidad operativa. Mantenga la confiabilidad de las respuestas del modelo asegurándose de que las actualizaciones son frecuentes y oportunas. Decida si va a usar datos recientes o datos ligeramente más antiguos, equilibrando la necesidad de información actualizada con la práctica de la frecuencia de actualización. Debe automatizar el entrenamiento en línea debido a sus requisitos de frecuencia y confiabilidad. El entrenamiento sin conexión se puede justificar a través de un análisis de beneficios de costos. Puede usar recursos más baratos para el entrenamiento sin conexión.
Diseño para una experiencia de usuario confiable. Utilice pruebas de carga para evaluar cómo maneja su carga de trabajo el estrés, y diseñe la interfaz de usuario para gestionar las expectativas respecto a los tiempos de respuesta. Implemente elementos de interfaz de usuario que informen a los usuarios de posibles tiempos de espera y adopten principios de diseño asincrónicos en la nube para abordar la intermitencia, la latencia o los errores.

Seguridad

Los modelos suelen usar datos de producción confidenciales para generar resultados relevantes. Por lo tanto, debe implementar medidas de seguridad sólidas en todas las capas de la arquitectura. Estas medidas incluyen la implementación del diseño seguro de aplicaciones al principio del ciclo de vida, el cifrado de datos tanto en reposo como en tránsito, y la conformidad con los estándares de cumplimiento del sector. Las evaluaciones de seguridad periódicas son cruciales para identificar y mitigar las vulnerabilidades. Los mecanismos avanzados de detección de amenazas ayudan a garantizar respuestas rápidas a posibles amenazas.

principios de seguridad son fundamentales para proteger la integridad de los datos, la integridad de diseño y la privacidad del usuario en las soluciones de inteligencia artificial. Como propietario de la carga de trabajo, es responsable de crear confianza y proteger la información confidencial para ayudar a garantizar una experiencia de usuario segura.

Principio de diseño Consideraciones
Ganar confianza de usuario. Integre la seguridad del contenido en cada fase del ciclo de vida mediante código personalizado, herramientas y controles de seguridad eficaces.

Quite información personal y confidencial innecesaria en todos los puntos de almacenamiento de datos, incluidos los almacenes de datos agregados, los índices de búsqueda, las memorias caché y las aplicaciones. Mantenga este nivel de seguridad de forma coherente en toda la arquitectura.

Asegúrese de implementar una moderación de contenido exhaustiva que inspeccione los datos en ambas direcciones y filtre el contenido inapropiado y ofensivo.
Proteja los datos en reposo, en tránsito y en uso, según los requisitos de confidencialidad de la carga de trabajo. Como mínimo, use el cifrado de nivel de plataforma con claves administradas por Microsoft o administradas por el cliente en todos los almacenes de datos de la arquitectura. Determine dónde necesita niveles más altos de cifrado y use el cifrado doble si es necesario.

Asegúrese de que todo el tráfico usa HTTPS para el cifrado. Determine los puntos de terminación TLS en cada salto.

El propio modelo debe protegerse para evitar que los atacantes extraigan información confidencial que se usa durante el entrenamiento. El modelo requiere el mayor nivel de medidas de seguridad. Considere la posibilidad de usar el cifrado homomórfico que permite la inferencia en los datos cifrados.
Invierta en una sólida administración de acceso para identidades (usuario y sistema) que acceden al sistema. Implemente el control de acceso basado en rol (RBAC) o el control de acceso basado en atributos (ABAC) para los planos de control y de datos.

Mantenga la segmentación de identidad adecuada para ayudar a proteger la privacidad. Permitir solo el acceso al contenido que las identidades están autorizadas para ver.
Proteja la integridad del diseño mediante la implementación de la segmentación. Proporcionar redes privadas para acceder a repositorios centralizados para imágenes de contenedor, datos y recursos de código.

Cuando se comparte la infraestructura con otras cargas de trabajo, se crea una segmentación, por ejemplo, al hospedar el servidor de inferencia en Azure Kubernetes Service, aísle el grupo de nodos de otras API y cargas de trabajo.
Realice pruebas de seguridad. Desarrolle un plan de prueba detallado que incluya pruebas para detectar un comportamiento no ético cada vez que se introducen cambios en el sistema.

Integre los componentes de inteligencia artificial en las pruebas de seguridad existentes. Por ejemplo, incorpore el punto de conexión de inferencia en las pruebas rutinarias junto con otros puntos de conexión públicos.

Considere la posibilidad de realizar pruebas en el sistema activo, como pruebas de penetración o ejercicios de equipo rojo, para identificar y solucionar posibles vulnerabilidades de forma eficaz.
Reduzca la superficie expuesta a ataques aplicando un estricto acceso de usuario y diseño de API. Requerir autenticación para todos los puntos de conexión de inferencia, incluidas las llamadas del sistema al sistema. Evite puntos de conexión anónimos.

Prefiere el diseño restringido de la API a costa de la flexibilidad del lado cliente.

Compromiso. La implementación de los niveles más altos de seguridad incurre en compromisos en términos de costo y precisión, ya que la capacidad de analizar, inspeccionar o registrar los datos cifrados es limitada. Las comprobaciones de seguridad del contenido y la obtención de la explicación también pueden ser difíciles en entornos altamente seguros.

Las siguientes áreas de diseño proporcionan detalles sobre los principios y consideraciones anteriores:

Optimización de costos

El objetivo del pilar optimización de costos es maximizar la inversión, no necesariamente para reducir los costos. Cada elección arquitectónica crea impactos financieros directos e indirectos. Comprenda los costos asociados a varias opciones, incluidas las decisiones de construcción frente a compra, selecciones tecnológicas, modelos de facturación, licencias, formación y gastos operativos. Es importante maximizar la inversión en el nivel seleccionado y reasignar continuamente los modelos de facturación. Evalúe continuamente los costos asociados a los cambios en la arquitectura, las necesidades empresariales, los procesos y la estructura del equipo.

Revise los principios de optimización de costos , centrándose en la optimización de la velocidad y el uso.

Principio de diseño Consideraciones
Determine los impulsores de costos mediante un ejercicio completo de modelado de costos. Tenga en cuenta los factores clave de los datos y la plataforma de aplicaciones:
- Volumen de datos. Calcule la cantidad de datos que va a indexar y procesar. Los volúmenes más grandes pueden aumentar los costos de almacenamiento y procesamiento.
- Número de consultas. Predecir la frecuencia y la complejidad de las consultas. Los volúmenes de consulta más altos pueden aumentar los costos, especialmente si las consultas requieren recursos informáticos significativos.
- Rendimiento. Evalúe el rendimiento esperado para determinar qué nivel de rendimiento necesita. Una mayor demanda de rendimiento puede dar lugar a mayores costos.
- Costos de dependencia. Comprenda que puede haber costos ocultos en las dependencias. Por ejemplo, al calcular el costo de la indexación, incluya el costo del conjunto de aptitudes, que forma parte del procesamiento de datos, pero fuera del ámbito del índice.
Paga por lo que piensas usar. Elija una solución tecnológica que satisfaga sus necesidades sin incurrir en gastos innecesarios. Si no necesita características avanzadas, considere las opciones menos costosas y las herramientas de código abierto.

Factor en la frecuencia de uso. Prefiera las opciones de computación elástica para las herramientas de orquestación a fin de minimizar los costes de utilización, ya que siempre están activas. Evite la computación sin servidor para las operaciones a tiempo completo, porque puede aumentar los costos.

No pague por niveles superiores sin usar su capacidad completa. Asegúrese de que el nivel elegido se alinea con los patrones de uso de producción para optimizar el gasto. Use los precios estándar para las tareas normales y los precios puntuales para el entrenamiento altamente interrumpible. Para reducir los costos, use el proceso basado en GPU solo para las funciones de carga de trabajo de IA.

Pruebe y evalúe exhaustivamente su entrenamiento y ajuste para encontrar la SKU que mejor equilibre el rendimiento y el coste.
Usa lo que pagas. Minimice los residuos. Supervise detenidamente las métricas de uso. Las cargas de trabajo de inteligencia artificial pueden ser costosas y los costos pueden aumentar rápidamente si los recursos no se cierran, se reducen o se desasignan cuando no se usan.

Optimice el sistema para escribir una vez, lea muchos para evitar excesos de pendientes en el almacenamiento de datos. Los datos de entrenamiento no requieren la capacidad de respuesta instantánea de una base de datos de producción.

Las pruebas de esfuerzo de un punto de conexión de inferencia del servicio Azure OpenAI pueden ser costosas porque cada llamada incurre en cargos. Para reducir los costos, utilice las PTUs no utilizadas del servicio de OpenAI en un entorno de prueba o simule el endpoint de inferencia.

Las tareas como el análisis exploratorio de datos (EDA), el entrenamiento del modelo y el ajuste fino normalmente no se ejecutan a tiempo completo. Para estas tareas, prefiera una plataforma que se pueda detener cuando no esté en uso. Por ejemplo, los trabajos de EDA suelen ser interactivos, por lo que los usuarios deben poder iniciar máquinas virtuales y detenerlas a medida que ejecutan trabajos.

Asigne las responsabilidades de costos a los equipos de operaciones. Estos equipos deben asegurarse de que los costos permanezcan dentro de los parámetros esperados mediante la supervisión y administración activa del uso de recursos.
Optimizar los costos operativos. El entrenamiento en línea puede ser costoso debido a sus requisitos de frecuencia. La automatización de este proceso ayuda a mantener la coherencia y minimiza el costo de los errores humanos. Además, el uso de datos ligeramente más antiguos para el entrenamiento y retrasar las actualizaciones siempre que sea posible, puede reducir aún más los gastos sin afectar significativamente a la precisión del modelo.

Para el entrenamiento sin conexión, evalúe si se pueden usar recursos más baratos, como hardware sin conexión.

En general, elimine los datos de los almacenes de características para reducir los costos de desorden y almacenamiento de las características.

Desventaja: optimización de costes y eficiencia del rendimiento. El equilibrio entre el coste y el rendimiento en la administración de bases de datos implica desventajas. El diseño eficaz de índices acelera las consultas, pero puede aumentar los costos debido a la administración de metadatos y el tamaño del índice. De forma similar, la creación de particiones de tablas grandes puede mejorar el rendimiento de las consultas y reducir la carga de almacenamiento, pero conlleva costos adicionales. Por el contrario, las técnicas que evitan la indexación excesiva pueden reducir los costos, pero pueden afectar al rendimiento si no se administran correctamente.

Desventaja: optimización de costes y excelencia operativa. Hay desventajas a evaluar al decidir cuál de los dos enfoques principales usar para el entrenamiento del modelo. El entrenamiento en el entorno de desarrollo con datos de producción completos puede reducir los costos computacionales porque el modelo se entrena solo una vez y solo se promueve el artefacto. Sin embargo, este enfoque requiere estrictas medidas de seguridad para controlar los datos de producción en entornos inferiores, lo que puede ser complejo y intensivo de recursos. Por el contrario, el entrenamiento del modelo en cada entorno mejora la estabilidad y la confiabilidad debido a la revisión y las pruebas exhaustivas del código, pero este modelo aumenta los costos de cálculo porque las ejecuciones de entrenamiento se producen varias veces.

Excelencia operativa

El objetivo principal de la excelencia operativa es ofrecer funcionalidades de forma eficaz a lo largo del ciclo de vida de desarrollo. Lograr este objetivo implica establecer procesos repetibles que admitan la metodología de diseño de la experimentación y produzcan resultados para mejorar el rendimiento del modelo. La excelencia operativa también trata de mantener la precisión de los modelos a lo largo del tiempo, implementar prácticas de supervisión eficaces y gobernanza para minimizar los riesgos y desarrollar procesos de administración de cambios para adaptarse al desfase del modelo.

Aunque todos los Principios de excelencia operativa se aplican a las cargas de trabajo de IA, priorice la automatización y la supervisión como estrategias operativas fundamentales.

Principio de diseño Consideraciones
Fomentar una mentalidad de aprendizaje continuo y experimentación a lo largo de los ciclos de vida del desarrollo de aplicaciones, el control de datos y la administración de modelos de IA. Las operaciones de carga de trabajo deben basarse en metodologías probadas en el sector, como DevOps, DataOps, MLOps y GenAIOps.

La colaboración temprana entre las operaciones, el desarrollo de aplicaciones y los equipos de datos es esencial para establecer un conocimiento mutuo del rendimiento aceptable del modelo. Los equipos de operaciones proporcionan señales de calidad y alertas accionables. Los equipos de aplicaciones y datos ayudan a diagnosticar y resolver problemas de forma eficaz.
Elija tecnologías que minimicen la carga operativa. Cuando elija soluciones de plataforma, prefiera plataforma como servicio (PaaS) sobre las opciones autohospedadas para simplificar el diseño, automatizar la orquestación de flujos de trabajo y facilitar las operaciones del día 2.
Cree un sistema de supervisión automatizado que admita la funcionalidad de alertas, incluido el registro y la auditabilidad. Dada la naturaleza no determinista de la inteligencia artificial, es importante establecer medidas de calidad al principio del ciclo de vida. Trabaje con científicos de datos para definir métricas de calidad. Visualice información continua en paneles completos.

Realice un seguimiento de los experimentos mediante herramientas que pueden capturar detalles como versiones de código, entornos, parámetros, ejecuciones y resultados.

Implemente alertas accionables que proporcionen información suficiente para permitir que los operadores respondan rápidamente.
Automatice la detección y mitigación del deterioro del modelo. Use pruebas automatizadas para evaluar el desfase con el tiempo. Asegúrese de que el sistema de supervisión envía alertas cuando las respuestas comienzan a desviarse de los resultados esperados y empiecen a hacerlo de forma periódica. Use herramientas que pueden detectar y actualizar automáticamente nuevos modelos.

Según sea necesario, se adapte a los nuevos casos de uso ajustando la lógica de procesamiento de datos y entrenamiento del modelo.
Implementar implementaciones seguras. Elija entre implementaciones en paralelo o actualizaciones en contexto para minimizar el tiempo de inactividad. Implemente pruebas exhaustivas antes de la implementación para asegurarse de que el modelo está configurado correctamente y cumple los objetivos, las expectativas del usuario y los estándares de calidad. Planee siempre las operaciones de emergencia, independientemente de la estrategia de implementación.
Evalúe continuamente la experiencia del usuario en producción. Permitir que los usuarios de cargas de trabajo proporcionen comentarios sobre su experiencia. Obtenga el consentimiento para compartir parte o todas sus conversaciones en un registro asociado para solucionar problemas. Considere cuánta interacción del usuario es viable, compatible, segura y útil de capturar, y use los datos diligentemente para evaluar el rendimiento de su carga de trabajo con interacciones reales de los usuarios.

Las siguientes áreas de diseño proporcionan detalles sobre los principios y consideraciones anteriores:

Eficiencia del rendimiento

El objetivo de la evaluación del rendimiento del modelo de IA es determinar la eficacia de un modelo para realizar sus tareas previstas. Lograr este objetivo implica evaluar varias métricas, como la exactitud, la precisión y la equidad. Además, el rendimiento de la plataforma y los componentes de la aplicación que admiten el modelo es fundamental.

El rendimiento del modelo también se ve afectado por la eficacia de las operaciones, como el seguimiento de experimentos y el procesamiento de datos. Aplicar los principios de eficiencia del rendimiento ayuda a medir el rendimiento frente a un nivel de calidad aceptable. Esta comparación es clave para detectar degradación o descomposición. Para mantener la carga de trabajo, incluidos los componentes de inteligencia artificial, necesita procesos automatizados para la supervisión y evaluación continuas.

Principio de diseño Consideraciones
Establecer pruebas comparativas de rendimiento. Realice pruebas rigurosas de rendimiento en diferentes áreas arquitectónicas y establezca objetivos aceptables. Esta evaluación continua debe formar parte de los procesos operativos, no una prueba única.

La prueba comparativa se aplica al rendimiento de la predicción. Comience con una línea base para comprender el rendimiento inicial del modelo y volver a evaluar continuamente el rendimiento para asegurarse de que cumple las expectativas.
Evalúe las necesidades de recursos para satisfacer los objetivos de rendimiento. Comprenda las características de carga para elegir la plataforma adecuada y los recursos de tamaño correcto. Tenga en cuenta estos datos para planear la capacidad para operar a escala.

Por ejemplo, use pruebas de carga para determinar la plataforma de proceso óptima y la SKU. El cómputo optimizado para GPU de alto rendimiento suele ser necesario para el entrenamiento y ajuste fino del modelo, pero las SKU de uso general son adecuadas para las herramientas de orquestación.

De forma similar, elija una plataforma de datos que controle eficazmente la ingesta de datos, administre escrituras simultáneas y mantenga el rendimiento de escritura individual sin degradación.

Los distintos servidores de inferencia tienen distintas características de rendimiento. Estas características afectan al rendimiento del modelo en tiempo de ejecución. Seleccione un servidor que cumpla las expectativas de línea de base.
Recopile y analice las métricas de rendimiento e identifique cuellos de botella.

Evalúe la telemetría de la canalización de datos para asegurarse de que se cumplen los objetivos de rendimiento y de lectura y escritura.

Para el índice de búsqueda, considere las métricas como la latencia de consulta, el rendimiento y la precisión de los resultados. A medida que aumenta el volumen de datos, las tasas de error no deben aumentar.

Analice la telemetría de los componentes de código, como el orquestador, que recopila datos de las llamadas de servicio. El análisis de esos datos puede ayudarle a comprender el tiempo invertido en el procesamiento local frente a las llamadas de red e identificar la posible latencia en otros componentes.

Evalúe la experiencia de la interfaz de usuario mediante métricas de interacción para determinar si los usuarios están comprometidos o frustrados positivamente. El aumento del tiempo en una página puede indicar cualquiera de los dos. Las funcionalidades multimodales, como las respuestas de voz o vídeo, pueden provocar una latencia significativa, lo que conduce a tiempos de respuesta más largos.
Mejore continuamente el rendimiento de referencia mediante mediciones de calidad de producción. Implemente la recopilación automatizada y el análisis de métricas de rendimiento, alertas y reentrenamiento de modelos para mantener la eficacia del modelo.

Desventaja. Cuando considere las funcionalidades de la plataforma, debe equilibrar el costo y el rendimiento. Por ejemplo, las SKU de GPU son costosas, por lo que supervisa continuamente los recursos infrautilizados y ajusta el tamaño de los recursos según sea necesario. Después de los ajustes, pruebe el uso de recursos para garantizar un equilibrio entre el costo de los recursos de la plataforma y sus operaciones y el rendimiento esperado, como se indica en la línea base. Para conocer las estrategias de optimización de costos, consulte Recomendaciones para optimizar los costos de los componentes.

Las siguientes áreas de diseño proporcionan detalles sobre los principios y consideraciones anteriores:

Paso siguiente