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 bien diseñados colectivamente, incluidas sus desventajas. Aplique cada pilar a los requisitos funcionales y no funcionales de la carga de trabajo.

Fiabilidad

Las cargas de trabajo de inteligencia artificial que se ejecutan en Azure deben tener en cuenta muchos de los mismos requisitos de confiabilidad que otras clases de cargas de trabajo. Sin embargo, las consideraciones específicas para el entrenamiento, el hospedaje y la inferencia del modelo son especialmente importantes y se abordan principalmente en este principio. Es importante tener en cuenta que los procedimientos descritos aquí están además de los procedimientos recomendados de diseño estándar para las aplicaciones en la nube y deben integrarse en consecuencia.

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 esto, cree redundancia en todos los componentes críticos. Use plataformas con 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. Utilice 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 los errores, mientras que los mecanismos de reintento y los disyuntores pueden controlar errores transitorios, como las solicitudes de limitación. En la capa de datos, el patrón Cache-Aside se puede usar para calcular previamente las predicciones, lo que permite búsquedas más rápidas y reduce la carga del modelo.
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 tener la capacidad de conmutar por error 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, servir las API de capa, ser recursos de producción críticos, debe 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 usar datos recientes o si los datos ligeramente más antiguos son suficientes, equilibrando la necesidad de información actualizada con la práctica de la frecuencia de actualización. El entrenamiento en línea debe automatizarse debido a sus requisitos de frecuencia y confiabilidad, mientras que el entrenamiento sin conexión se puede justificar a través de un análisis de beneficios de costos y se realiza mediante recursos más baratos.
Diseño para una experiencia de usuario confiable. Use pruebas de carga para evaluar cómo la carga de trabajo controla el estrés y diseña la interfaz de usuario para administrar las expectativas del usuario con 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, se deben usar medidas de seguridad sólidas en todas las capas de la arquitectura. Esto incluye 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 vulnerabilidades, mientras que los mecanismos avanzados de detección de amenazas garantizan respuestas rápidas a posibles amenazas.

Los principios de seguridad son fundamentales para las soluciones de inteligencia artificial, la protección de la integridad de los datos, la integridad de diseño y la privacidad del usuario. Como propietario de la carga de trabajo, es responsable de crear confianza y proteger la información confidencial, lo que garantiza 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 adecuadas 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 que hay una con modo carpa ration exhaustiva que inspecciona los datos en ambas direcciones y filtra 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 usados en la arquitectura. Evalúe 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. Decida los puntos de terminación TLS en cada salto.

El propio modelo debe protegerse para evitar que los atacantes extraigan información confidencial usada durante el entrenamiento. Esto 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 administración de acceso sólida para conservar las identidades (usuario y sistema) que acceden al sistema. Implemente el control de acceso basado en rol (RBAC) y, 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 proteger la privacidad, solo permitiendo el acceso al contenido que están autorizados para ver.
Proteja la integridad del diseño a través de la segmentación. Proporcionar redes privadas para acceder a repositorios centralizados para imágenes de contenedor, datos y recursos de código.

Al compartir la infraestructura con otras cargas de trabajo, se crea una segmentación, por ejemplo, al hospedar el servidor de inferencia en AKS, el grupo de nodos debe aislarse de otras API o de cualquier otra carga de trabajo.
Realice pruebas de seguridad. Desarrolle un plan de prueba detallado que incluya pruebas para detectar comportamientos no éticos 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.

Compensación. Proporcionar la mayor seguridad tiene inconvenientes en el costo y la precisión, ya que la capacidad de analizar, inspeccionar o registrar los datos cifrados es limitado. Las comprobaciones de seguridad del contenido y la obtención de la explicación también pueden ser difíciles en entornos altamente seguros.

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

Optimización de costos

El pilar Optimización de costos tiene como objetivo maximizar la inversión, no necesariamente reducir los costos. Todas las opciones arquitectónicas conllevan impactos financieros directos e indirectos. Comprenda los costos vinculados a varias opciones, incluidas las decisiones de compilación frente a las compras, las selecciones tecnológicas, los modelos de facturación, las licencias, el entrenamiento y los 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 con foco en la optimización de la frecuencia 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 consultas más altos pueden aumentar los costos, especialmente si requieren recursos informáticos significativos.
- Rendimiento. Evalúe el rendimiento esperado, que afecta al nivel de rendimiento que necesita. Una mayor demanda de rendimiento puede dar lugar a mayores costos.
- Costos de dependencia. Es posible que haya costos ocultos en las dependencias. Por ejemplo, al calcular el costo del índice, 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 se requieren características avanzadas, considere las opciones más económicas y las herramientas de código abierto.

Factor en la frecuencia de uso. Se prefieren las opciones de proceso elástico para las herramientas de orquestación para minimizar los costos de uso, ya que siempre están activados. Evite el proceso sin servidor para las operaciones en tiempo completo debido a una posible escalación de 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. Use el proceso basado en GPU solo para las funciones de carga de trabajo de IA para reducir los costos.

Pruebe y pruebe ampliamente el entrenamiento y ajuste preciso para encontrar la SKU ideal que equilibra el rendimiento y el costo.
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 se pueden escalar rápidamente si los recursos no se cierran, se reducen verticalmente o se desasignan cuando no están en uso.

Optimice el sistema para escribir una vez, lea muchos para evitar excesos de pendientes en el almacenamiento de datos. Los datos de entrenamiento no necesitan 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 de Azure OpenAI pueden ser costosas debido a cargos por cada llamada. Para reducir los costos, use PTUs no utilizados de OpenAI en un entorno de prueba o simule el punto de conexión de inferencia en su lugar.

Las actividades como el análisis de datos exploratorios (EDA), el entrenamiento del modelo y el ajuste fino normalmente no se ejecutan a tiempo completo, prefieren una plataforma que se puede 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.

Establezca las cuentas de costos en los equipos de operaciones, que deben garantizar 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 su naturaleza frecuente. La automatización de este proceso ayuda a mantener la coherencia y minimiza los costos 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.

Compensación: Optimización de costos y eficiencia del rendimiento. El equilibrio de costos con el rendimiento en la administración de bases de datos implica tener en cuenta los inconvenientes. 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.

Compensación: Optimización de costos y Excelencia operativa. Existen inconvenientes en los dos enfoques principales para el entrenamiento del modelo. El entrenamiento en el entorno de desarrollo con datos de producción completos puede reducir los costos computacionales al entrenar el modelo una vez y promover solo el artefacto, pero requiere estrictas medidas de seguridad para controlar los datos de producción en entornos inferiores, lo que puede ser complejo y intensivo en recursos. Por el contrario, entrenar el modelo en cada entorno mejora la estabilidad y la confiabilidad a través de la revisión y las pruebas exhaustivas del código, pero aumenta los costos computacionales debido a varias ejecuciones de entrenamiento.

Excelencia operativa

El objetivo principal es ofrecer funcionalidades de forma eficaz a lo largo del ciclo de vida de desarrollo. Esto implica establecer procesos repetibles que admiten la metodología de diseño de experimentación y generar resultados para mejorar el rendimiento del modelo. La excelencia operativa también trata sobre la precisión sostenida de los modelos a lo largo del tiempo, la implementación de prácticas de supervisión eficaces y la gobernanza para minimizar los riesgos y el desarrollo de procesos de administración de cambios para adaptarse a los desfases del modelo.

Aunque todos los principios de excelencia operativa se aplican a las cargas de trabajo de inteligencia artificial, 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, mientras que los equipos de aplicaciones y datos ayudan a diagnosticar y resolver problemas de forma eficaz.
Elija tecnologías que minimicen la carga operativa. Al elegir soluciones de plataforma, prefiere 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 y visualizar 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 con suficiente información para 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.

Adaptarse a nuevos casos de uso ajustando el procesamiento de datos y la lógica de entrenamiento del modelo, según sea necesario.
Practicar 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.
Evaluar continuamente la experiencia del usuario en producción Permitir que los usuarios de la carga de trabajo proporcionen comentarios sobre su experiencia y obtengan consentimiento para compartir partes o toda su conversación, un registro asociado para solucionar problemas. Considere la cantidad de interacción del usuario viable, compatible, segura y útil para capturar y usar los datos diligentemente para evaluar el rendimiento de la carga de trabajo con interacciones reales del usuario.

Compensación: excelencia operativa y el costo de la complejidad.

Estas á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. Esto implica evaluar varias métricas, como la precisión, 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. La aplicación de principios de eficiencia del rendimiento ayuda a medir el rendimiento frente a una barra de calidad aceptable, que es clave para detectar degradación o descomposición. Para mantener la carga de trabajo, incluidos los componentes de inteligencia artificial, se necesitan 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 solo 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 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 adecuado. 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 proceso optimizado para GPU de alto rendimiento suele ser necesario para el entrenamiento del modelo y el ajuste preciso, mientras que 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, lo que afecta 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 los 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 las operaciones de lectura y escritura.
Para el índice de búsqueda, considere las métricas, como la latencia de consulta, el rendimiento, 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 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. Lassas, como las respuestas de voz o vídeo, pueden experimentar una latencia significativa, lo que conduce a tiempos de respuesta más largos.
Mejorar continuamente el rendimiento del banco de pruebas mediante mediciones de calidad de producción. La recopilación y el análisis automatizados de métricas de rendimiento, alertas y reentrenamiento de modelos son necesarios para mantener la eficacia del modelo.

Compensación. Al considerar las funcionalidades de la plataforma, es importante equilibrar el costo y el rendimiento. Por ejemplo, las SKU de GPU son costosas, por lo que se supervisa continuamente la infrautilización y los recursos de tamaño correcto 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 según la línea base. Para conocer las estrategias de optimización de costos, consulte Recomendaciones para optimizar los costos de los componentes.

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

Paso siguiente