Share via


Perspectiva de Azure Well-Architected Framework en Azure OpenAI Service

El servicio Azure OpenAI proporciona acceso a la API REST a modelos de lenguaje grande (LLM) de OpenAI, lo que agrega funcionalidades de seguridad y redes de Azure. En este artículo se proporcionan recomendaciones arquitectónicas que le ayudarán a tomar decisiones informadas al usar Azure OpenAI como parte de la arquitectura de la carga de trabajo. La guía se basa en los pilares de Azure Well-Architected Framework.

Importante

Cómo usar esta guía

Cada sección tiene una lista de comprobación de diseño que presenta áreas arquitectónicas de preocupación junto con estrategias de diseño localizadas en el ámbito de la tecnología.

También se incluyen recomendaciones sobre las funcionalidades tecnológicas que pueden ayudar a materializar esas estrategias. Las recomendaciones no representan una lista exhaustiva de todas las configuraciones disponibles para Azure OpenAI y sus dependencias. En su lugar, enumeran las recomendaciones clave asignadas a las perspectivas de diseño. Use las recomendaciones para crear la prueba de concepto o optimizar los entornos existentes.

Arquitectura fundamental que muestra las recomendaciones clave: Arquitectura de referencia de chat de un extremo a otro de línea base de OpenAI.

Ámbito de la tecnología

Esta revisión se centra únicamente en Azure OpenAI.

Confiabilidad

El propósito del pilar Confiabilidad es proporcionar funcionalidad continua mediante la creación de suficiente resistencia y la capacidad de recuperarse rápidamente de los errores.

Los principios de diseño de confiabilidad proporcionan una estrategia de diseño de alto nivel aplicada para componentes individuales, flujos del sistema y el sistema en su conjunto.

Diseño de una lista de comprobación

Inicie la estrategia de diseño en función de la lista de comprobación de revisión de diseño para confiabilidad. Determine su relevancia para los requisitos empresariales. Amplíe la estrategia para incluir más enfoques según sea necesario.

  • Resistencia: elija la opción de implementación adecuada de rendimiento de pago por uso o rendimiento aprovisionado en función del caso de uso. Dado que la capacidad reservada aumenta la resistencia, elija el rendimiento aprovisionado para las soluciones de producción. El enfoque de pago por uso es ideal para entornos de desarrollo y pruebas.

  • Redundancia: agregue las puertas de enlace adecuadas delante de las implementaciones de Azure OpenAI. La puerta de enlace debe tener la capacidad de resistir errores transitorios, como la limitación y también enrutar a varias instancias de Azure OpenAI. Considere la posibilidad de enrutar a instancias de diferentes regiones para crear redundancia regional.

  • Resistencia: si usa el rendimiento aprovisionado, considere también la posibilidad de implementar una instancia de pago por uso para controlar el desbordamiento. Puede enrutar las llamadas a la instancia de pago por uso a través de la puerta de enlace cuando se limita el modelo de rendimiento aprovisionado. También puede usar la supervisión para predecir cuándo se limitará el modelo y enrutará de forma preventiva las llamadas a la instancia de pago por uso.

  • Resistencia: supervise el uso de capacidad para asegurarse de que no supera los límites de rendimiento. Revise periódicamente el uso de la capacidad para lograr una previsión más precisa y ayudar a evitar interrupciones del servicio debido a restricciones de capacidad.

  • Resistencia: siga las instrucciones para archivos de datos de gran tamaño e importe los datos desde un almacén de blobs de Azure. Los archivos grandes, de 100 MB o más, pueden ser inestables cuando se cargan a través de formularios de varias partes porque las solicitudes son atómicas y no se pueden reintentar ni reanudar.

  • Recuperación: defina una estrategia de recuperación que incluya un plan de recuperación para los modelos que están ajustados y para los datos de entrenamiento cargados en Azure OpenAI. Dado que Azure OpenAI no tiene conmutación automática por error, debe diseñar una estrategia que abarque todo el servicio y todas las dependencias, como el almacenamiento que contiene datos de entrenamiento.

Recomendaciones

Recomendación Prestación
Supervisar los límites de velocidad de pago por uso: si usa el enfoque de pago por uso, administre los límites de velocidad para las implementaciones del modelo y supervise el uso de tokens por minuto (TPM) y las solicitudes por minuto (RPM). Esta información importante de rendimiento proporciona información necesaria para asegurarse de asignar suficiente TPM desde la cuota para satisfacer la demanda de las implementaciones.

La asignación de una cuota suficiente impide la limitación de las llamadas a los modelos implementados.
Supervisión del uso administrado por el aprovisionamiento para el rendimiento aprovisionado: si usa el modelo de pago de rendimiento aprovisionado , supervise el uso administrado por el aprovisionamiento. Es importante supervisar el uso administrado por el aprovisionamiento para asegurarse de que no supera el 100 %, para evitar la limitación de las llamadas a los modelos implementados.
Habilite la característica de cuota dinámica: si el presupuesto de la carga de trabajo lo admite, realice el sobreaprovisionamiento habilitando la cuota dinámica en las implementaciones del modelo. La cuota dinámica permite que la implementación consuma más capacidad que la cuota normalmente, siempre y cuando haya capacidad disponible desde una perspectiva de Azure. La capacidad de cuota adicional puede impedir potencialmente la limitación no deseada.
Ajustar filtros de contenido: ajuste los filtros de contenido para minimizar los falsos positivos de filtros excesivamente agresivos. Los filtros de contenido bloquean solicitudes o finalizaciones basadas en un análisis de riesgo opaco. Asegúrese de que los filtros de contenido están optimizados para permitir el uso esperado para la carga de trabajo.

Seguridad

El propósito del pilar seguridad es proporcionar garantías de confidencialidad, integridad y disponibilidad a la carga de trabajo.

Los principios de diseño de seguridad proporcionan una estrategia de diseño de alto nivel para lograr esos objetivos mediante la aplicación de enfoques al diseño técnico en torno a Azure OpenAI.

Diseño de una lista de comprobación

Inicie la estrategia de diseño en función de la lista de comprobación de revisión de diseño de Seguridad e identifique vulnerabilidades y controles para mejorar la posición de seguridad. A continuación, revise la línea de base de seguridad de Azure para Azure OpenAI. Por último, amplíe la estrategia para incluir más enfoques según sea necesario.

  • Protección de la confidencialidad: si carga datos de entrenamiento en Azure OpenAI, use claves administradas por el cliente para el cifrado de datos, implemente una estrategia de rotación de claves y elimine los datos de entrenamiento, validación y resultados de entrenamiento. Si usa un almacén de datos externo para los datos de entrenamiento, siga los procedimientos recomendados de seguridad para ese almacén. Por ejemplo, para Azure Blob Storage, use claves administradas por el cliente para el cifrado e implemente una estrategia de rotación de claves. Use el acceso basado en identidad administrada, implemente un perímetro de red mediante puntos de conexión privados y habilite los registros de acceso.

  • Protección de la confidencialidad: proteja contra la filtración de datos limitando las direcciones URL de salida a las que pueden acceder los recursos de Azure OpenAI.

  • Proteger la integridad: implemente controles de acceso para autenticar y autorizar el acceso de usuario al sistema mediante el principio de privilegios mínimos y el uso de identidades individuales en lugar de claves.

  • Proteger la integridad: implemente la detección de riesgos de jailbreak para proteger las implementaciones del modelo de lenguaje frente a ataques de inyección de mensajes.

  • Proteger la disponibilidad: use controles de seguridad para evitar ataques que puedan agotar las cuotas de uso del modelo. Puede configurar controles para aislar el servicio en una red. Si el servicio debe ser accesible desde Internet, considere la posibilidad de usar una puerta de enlace para bloquear el abuso sospechoso mediante el enrutamiento o la limitación.

Recomendaciones

Recomendación Prestación
Claves seguras: si la arquitectura requiere la autenticación basada en claves de Azure OpenAI, almacene esas claves en Azure Key Vault, no en el código de la aplicación. La separación de secretos del código almacenándolos en Key Vault reduce la posibilidad de filtrar secretos. La separación también facilita la administración central de secretos, lo que facilita las responsabilidades como la rotación de claves.
Restringir el acceso: deshabilite el acceso público a Azure OpenAI a menos que la carga de trabajo lo requiera. Cree puntos de conexión privados si se conecta desde consumidores de una red virtual de Azure. Controlar el acceso a Azure OpenAI ayuda a evitar ataques de usuarios no autorizados. El uso de puntos de conexión privados garantiza que el tráfico de red permanezca privado entre la aplicación y la plataforma.
Microsoft Entra ID: use Microsoft Entra ID para la autenticación y para autorizar el acceso a Azure OpenAI mediante el control de acceso basado en rol (RBAC). Deshabilite la autenticación local en Azure AI Services y establezca en disableLocalAuthtrue. Conceda identidades que realicen finalizaciones o generación de imágenes en el rol de usuario openAI de Cognitive Services . Conceda a canalizaciones de automatización de modelos y acceso a ciencia de datos ad hoc un rol como colaborador de OpenAI de Cognitive Services. El uso de Microsoft Entra ID centraliza el componente de administración de identidades y elimina el uso de claves de API. El uso de RBAC con Microsoft Entra ID garantiza que los usuarios o grupos tengan exactamente los permisos que necesitan para realizar su trabajo. Este tipo de control de acceso específico no es posible con claves de API de Azure OpenAI.
Uso de claves administradas por el cliente: use claves administradas por el cliente para modelos ajustados y datos de entrenamiento que se cargan en Azure OpenAI. El uso de claves administradas por el cliente ofrece mayor flexibilidad para crear, rotar, deshabilitar y revocar controles de acceso.
Protección contra ataques de jailbreak: use Seguridad del contenido de Azure AI Studio para detectar riesgos de jailbreak. Detecte intentos de jailbreak para identificar y bloquear mensajes que intentan omitir los mecanismos de seguridad de las implementaciones de Azure OpenAI.

Optimización de costos

La optimización de costos se centra en detectar patrones de gasto, priorizar las inversiones en áreas críticas y optimizar en otros usuarios para satisfacer el presupuesto de la organización mientras cumple los requisitos empresariales.

Lea los principios de diseño de optimización de costos para obtener información sobre los enfoques para lograr esos objetivos y los inconvenientes necesarios en las opciones de diseño técnico relacionadas con Azure OpenAI.

Diseño de una lista de comprobación

Inicie su estrategia de diseño en función de la lista de comprobación de revisión de diseño para la optimización de costos para inversiones. Ajuste el diseño para que la carga de trabajo esté alineada con su presupuesto asignado. El diseño debe usar las funcionalidades adecuadas de Azure, supervisar las inversiones y encontrar oportunidades para optimizar con el tiempo.

  • Administración de costos: desarrolle el modelo de costos, teniendo en cuenta los tamaños de aviso. Comprender los tamaños de entrada y respuesta de la solicitud y cómo el texto se traduce en tokens le ayuda a crear un modelo de costo viable.

  • Optimización del uso: comience con los precios de pago por uso para Azure OpenAI hasta que el uso del token sea predecible.

  • Optimización de velocidad: cuando el uso del token es lo suficientemente alto y predecible durante un período de tiempo, use el modelo de precios de rendimiento aprovisionado para mejorar la optimización de costos.

  • Optimización del uso: considere los precios y las funcionalidades del modelo al elegir modelos. Comience con modelos menos costosos para tareas menos complejas, como la generación de texto o las tareas de finalización. Para tareas más complejas, como la traducción de idioma o la comprensión del contenido, considere la posibilidad de usar modelos más avanzados. Considere las distintas funcionalidades del modelo y los límites máximos de uso de tokens al elegir un modelo adecuado para casos de uso como la inserción de texto, la generación de imágenes o escenarios de transcripción. Al seleccionar cuidadosamente el modelo que mejor se adapte a sus necesidades, puede optimizar los costos mientras sigue logrando el rendimiento deseado de la aplicación.

  • Optimización del uso: use las restricciones de limitación de tokens que ofrecen las llamadas API, como max_tokens y n, que indican el número de finalizaciones que se van a generar.

  • Optimización del uso: maximice los puntos de interrupción de precios de Azure OpenAI, por ejemplo, ajuste preciso y puntos de interrupción del modelo, como la generación de imágenes. Dado que el ajuste fino se cobra por hora, use tanto tiempo como haya disponible por hora para mejorar los resultados de ajuste preciso, a la vez que evita el deslizamiento en el siguiente período de facturación. Del mismo modo, el costo de generar 100 imágenes es el mismo que el costo de 1 imagen. Maximice los puntos de interrupción del precio a su ventaja.

  • Optimización de uso: quite los modelos sin usar optimizados cuando ya no se consuman para evitar incurrir en una tarifa de hospedaje en curso.

  • Ajuste el uso: optimice la longitud de la respuesta y la entrada del aviso. Los mensajes más largos aumentan los costos al consumir más tokens. Sin embargo, los avisos que faltan suficientes contextos no ayudan a que los modelos produzcan buenos resultados. Cree mensajes concisos que proporcionen suficiente contexto para que el modelo genere una respuesta útil. Asegúrese también de optimizar el límite de la longitud de la respuesta.

  • Rentabilidad: solicitudes por lotes siempre que sea posible para minimizar la sobrecarga por llamada, lo que puede reducir los costos generales. Asegúrese de optimizar el tamaño del lote.

  • Rentabilidad: dado que los modelos tienen diferentes costos de ajuste, tenga en cuenta estos costos si la solución requiere un ajuste preciso.

  • Supervisión y optimización: configure un sistema de seguimiento de costos que supervise el uso del modelo. Use esa información para ayudar a informar sobre las opciones del modelo y los tamaños de aviso.

Recomendaciones

Recomendación Prestación
Diseño del código de cliente para establecer límites: los clientes personalizados deben usar las características de límite de la API de finalizaciones de Azure OpenAI, como el límite máximo en el número de tokens por modelo (max_tokens) o el número de finalizaciones en la generación (n). Establecer límites garantiza que el servidor no genere más de lo que necesita el cliente. El uso de características de API para restringir el uso alinea el consumo del servicio con las necesidades del cliente. Esto ahorra dinero asegurándose de que el modelo no genera una respuesta excesivamente larga que consume más tokens de los necesarios.
Supervisar el uso de pago por uso: si usa el enfoque de pago por uso, supervise el uso de TPM y RPM. Use esa información para informar a las decisiones de diseño arquitectónico, como qué modelos usar y para optimizar los tamaños de aviso. La supervisión continua de TPM y RPM proporciona métricas relevantes para optimizar el costo de los modelos de Azure OpenAI. Puede acoplar esta supervisión con las características del modelo y los precios del modelo para optimizar el uso del modelo. También puede usar esta supervisión para optimizar los tamaños de aviso.
Supervisión del uso del rendimiento aprovisionado: si usa el rendimiento aprovisionado, supervise el uso administrado por el aprovisionamiento para asegurarse de que no está infrautilizando el rendimiento aprovisionado que compró. La supervisión continua del uso administrado por el aprovisionamiento proporciona la información necesaria para comprender si está infrautilizando el rendimiento aprovisionado.
Administración decostos: use características de administración de costos con OpenAI para supervisar los costos, establecer presupuestos para administrar los costos y crear alertas para notificar a las partes interesadas los riesgos o anomalías. La supervisión de costos, la configuración de presupuestos y la configuración de alertas proporcionan gobernanza con los procesos de responsabilidad adecuados.

Excelencia operativa

La excelencia operativa se centra principalmente en los procedimientos para las prácticas de desarrollo, la observabilidad y la administración de versiones.

Los principios de diseño de excelencia operativa proporcionan una estrategia de diseño de alto nivel para lograr esos objetivos hacia los requisitos operativos de la carga de trabajo.

Diseño de una lista de comprobación

Inicie la estrategia de diseño en función de la lista de comprobación de revisión de diseño para la excelencia operativa. Esta lista de comprobación define los procesos de observabilidad, pruebas e implementación relacionados con Azure OpenAI.

  • Referencia cultural de Azure DevOps: asegúrese de la implementación de instancias de Azure OpenAI en los distintos entornos, como el desarrollo, la prueba y la producción. Asegúrese de tener entornos para admitir el aprendizaje continuo y la experimentación durante todo el ciclo de desarrollo.

  • Observabilidad: supervise, agregue y visualice las métricas adecuadas.

  • Observabilidad: si los diagnósticos de Azure OpenAI no son suficientes para sus necesidades, considere la posibilidad de usar una puerta de enlace como Azure API Management delante de Azure OpenAI para registrar las solicitudes entrantes y las respuestas salientes donde se permite. Esta información puede ayudarle a comprender la eficacia del modelo para las solicitudes entrantes.

  • Implementación con confianza: use la infraestructura como código (IaC) para implementar Azure OpenAI, implementaciones de modelos y otra infraestructura necesaria para ajustar los modelos.

  • Implementación con confianza: siga las prácticas de operaciones del modelo de lenguaje grande (LLMOps) para operacionalizar la administración de las LLMS de Azure OpenAI, incluida la implementación, el ajuste preciso y la ingeniería de mensajes.

  • Automatización de la eficacia: si usa la autenticación basada en claves, implemente una estrategia automatizada de rotación de claves.

Recomendaciones

Recomendación Prestación
Habilitar y configurar Azure Diagnostics: habilite y configure Diagnósticos para el servicio Azure OpenAI. Los diagnósticos recopilan y analizan métricas y registros, lo que le ayuda a supervisar la disponibilidad, el rendimiento y el funcionamiento de Azure OpenAI.

Eficiencia del rendimiento

La eficiencia del rendimiento consiste en mantener la experiencia del usuario incluso cuando hay un aumento de la carga mediante la administración de la capacidad. La estrategia incluye el escalado de recursos, la identificación y optimización de posibles cuellos de botella y la optimización para lograr un rendimiento máximo.

Los principios de diseño de eficiencia del rendimiento proporcionan una estrategia de diseño de alto nivel para lograr esos objetivos de capacidad con respecto al uso esperado.

Diseño de una lista de comprobación

Inicie la estrategia de diseño en función de la lista de comprobación de revisión de diseño para la eficiencia del rendimiento para definir una línea base basada en indicadores clave de rendimiento para cargas de trabajo de Azure OpenAI.

  • Capacidad: calcule las demandas de elasticidad de los consumidores. Identifique el tráfico de prioridad alta que requiere respuestas sincrónicas y tráfico de prioridad baja que puede ser asincrónico y por lotes.

  • Capacidad: requisitos de consumo de tokens de pruebas comparativas en función de las demandas estimadas de los consumidores. Considere la posibilidad de usar la herramienta de pruebas comparativas de Azure OpenAI para ayudarle a validar el rendimiento si usa implementaciones de unidades de rendimiento (PTU) aprovisionadas.

  • Capacidad: use el rendimiento aprovisionado para cargas de trabajo de producción. El rendimiento aprovisionado ofrece memoria dedicada y proceso, capacidad reservada y latencia máxima coherente para la versión del modelo especificada. La oferta de pago por uso puede sufrir problemas de vecino ruidosos , como una mayor latencia y limitación en regiones con un uso intensivo. Además, el enfoque de pago por uso no ofrece capacidad garantizada.

  • Capacidad: agregue las puertas de enlace adecuadas delante de las implementaciones de Azure OpenAI. Asegúrese de que la puerta de enlace puede enrutar a varias instancias de las mismas regiones o diferentes.

  • Capacidad: asigne PTUs para cubrir el uso previsto y complemente estas PTUs con una implementación de TPM para controlar la elasticidad por encima de ese límite. Este enfoque combina el rendimiento base con rendimiento elástico para mejorar la eficacia. Al igual que otras consideraciones, este enfoque requiere una implementación de puerta de enlace personalizada para enrutar las solicitudes a la implementación de TPM cuando se alcanzan los límites de PTU.

  • Capacidad: envíe solicitudes de prioridad alta de forma sincrónica. Poner en cola las solicitudes de prioridad baja y enviarlas por lotes cuando la demanda es baja.

  • Capacidad: seleccione un modelo que se alinee con los requisitos de rendimiento, teniendo en cuenta el equilibrio entre la velocidad y la complejidad de la salida. El rendimiento del modelo puede variar significativamente en función del tipo de modelo elegido. Los modelos diseñados para acelerar ofrecen tiempos de respuesta más rápidos, lo que puede ser beneficioso para las aplicaciones que requieren interacciones rápidas. Por el contrario, los modelos más sofisticados pueden ofrecer salidas de mayor calidad a costa del aumento del tiempo de respuesta.

  • Lograr rendimiento: para aplicaciones como bots de chat o interfaces conversacionales, considere la posibilidad de implementar streaming. El streaming puede mejorar el rendimiento percibido de las aplicaciones openAI de Azure mediante la entrega de respuestas a los usuarios de forma incremental, lo que mejora la experiencia del usuario.

  • Lograr el rendimiento: determine cuándo se debe usar el ajuste preciso antes de confirmar el ajuste preciso. Aunque hay buenos casos de uso para ajustar el ajuste, como cuando la información necesaria para dirigir el modelo es demasiado larga o compleja para ajustarse al aviso, asegúrese de que los enfoques de ingeniería y generación aumentada de recuperación (RAG) rápidos no funcionan o son más caros.

  • Lograr rendimiento: considere la posibilidad de usar implementaciones de modelos dedicadas por grupo de consumidores para proporcionar aislamiento de uso por modelo que puede ayudar a evitar vecinos ruidosos entre los grupos de consumidores.

Recomendaciones

No hay configuraciones recomendadas para la eficiencia del rendimiento para Azure OpenAI.

Azure Policy

Azure proporciona un amplio conjunto de directivas integradas relacionadas con Azure OpenAI y sus dependencias. Algunas de las recomendaciones anteriores se pueden auditar a través de Azure Policy. Tenga en cuenta las siguientes definiciones de directiva:

Estas definiciones de Azure Policy también son recomendaciones de procedimientos recomendados de seguridad de Azure Advisor para Azure OpenAI.

Pasos siguientes

Tenga en cuenta los siguientes artículos como recursos que muestran las recomendaciones resaltadas en este artículo.