Perspectiva del marco de trabajo bien diseñado de Azure 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 fundamentadas al usar Azure OpenAI como parte de la arquitectura de la carga de trabajo. Las instrucciones se basan 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 de interés arquitectónicas junto con estrategias de diseño localizadas al ámbito tecnológico.

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 compilar la prueba de concepto o optimizar los entornos existentes.

Arquitectura básica 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.

Fiabilidad

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 errores.

Los principios de diseño de confiabilidad proporcionan una estrategia de diseño de alto nivel aplicada a componentes individuales, flujos del sistema y al 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 sus 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 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 la posibilidad de implementar también 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.

  • Resistencia: supervise el uso de la 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 ajustar con archivos de datos de gran tamaño e importar los datos desde un almacén de blobs de Azure. Los archivos grandes, 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 de 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 un sobreaprovisionamiento habilitando la cuota dinámica en las implementaciones de modelos. La cuota dinámica permite que la implementación consuma más capacidad que la cuota normalmente, siempre que haya capacidad disponible desde una perspectiva de Azure. La capacidad de cuota adicional puede impedir la limitación no deseada.
Ajustar filtros de contenido: ajuste los filtros de contenido para minimizar los falsos positivos de filtros demasiado agresivos. Los filtros de contenido bloquean solicitudes o finalizaciones en función de un análisis de riesgos opaco. Asegúrese de que los filtros de contenido están optimizados para permitir el uso esperado de 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 al aplicar 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 mediante identidades individuales en lugar de claves.

  • Proteger la integridad: Implemente la detección de riesgo de jailbreak para proteger las implementaciones de modelo de lenguaje frente a ataques de inyección de indicaciones.

  • Protección de la disponibilidad: Use controles de seguridad para evitar ataques que podrían 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, puede usar una puerta de enlace para bloquear un 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ándolas en Key Vault reduce la posibilidad de filtrar secretos. La separación también facilita la administración central de secretos, lo que acelera las responsabilidades como la rotación de claves.
Restricción del acceso: Deshabilitar 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). Deshabilitar la autenticación local en Servicios de Azure AI y establecer disableLocalAuth en true. Conceda identidades que realicen finalizaciones o generación de imágenes en el rol de usuario OpenAI de Cognitive Services. Conceda a las canalizaciones de automatización de modelos y a ciencia de datos ad hoc acceso a 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: Uso de claves administradas por el cliente para modelos optimizados y datos de entrenamiento cargados 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 para detectar riesgos de jailbreak. Detecte intentos de jailbreak para identificar y bloquear indicaciones que intentan eludir 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 al tiempo que 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 las desventajas necesarias en las opciones de diseño técnico relacionadas con 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 para la optimización de costos para las 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 los mensajes. 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 de 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 los 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 de 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 de 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 preciso se cobra por hora, use tanto tiempo como tenga disponible por hora para mejorar los resultados de ajuste, a la vez que evita que se produzca un 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 optimizados sin usar cuando ya no se consuman para evitar incurrir en una tarifa de hospedaje en curso.

  • Ajustar el uso: optimice la longitud de la respuesta y la entrada del mensaje. Los mensajes más largos generan costos al consumir más tokens. Sin embargo, las indicaciones que faltan en el contexto suficiente no ayudan a los modelos a producir buenos resultados. Cree avisos 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 solicitud.

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 del número de tokens por modelo () o el número de finalizaciones a la generación (max_tokensn). 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 demasiado 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 los mensajes.
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 que necesita para comprender si está infrautilizando el rendimiento aprovisionado.
Administración de costos: 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 implementar instancias de Azure OpenAI en los distintos entornos, como el desarrollo, la prueba y la producción. Asegúrese de que tiene entornos para admitir el aprendizaje continuo y la experimentación a lo largo del 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 permiten. 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 de modelos de lenguaje grande (LLMOps) para poner en funcionamiento la administración de las LLM de Azure OpenAI, incluida la implementación, el ajuste 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 Diagnósticos de Azure: 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 la optimización de posibles cuellos de botella y la optimización del 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 alta prioridad 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 aprovisionadas (PTU).

  • Capacidad: use el rendimiento aprovisionado para cargas de trabajo de producción. El rendimiento aprovisionado ofrece memoria y proceso dedicados, capacidad reservada y latencia máxima coherente para la versión del modelo especificada. La oferta de pago por uso puede sufrir problemas ruidosos de vecinos , 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 PTU para cubrir el uso previsto y complemente estas PTU 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 alta prioridad de forma sincrónica. Poner en cola las solicitudes de prioridad baja y enviarlos 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 la velocidad 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 podrían ofrecer salidas de mayor calidad a costa del aumento del tiempo de respuesta.

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

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

  • Lograr el rendimiento: considere la posibilidad de usar implementaciones de modelos dedicadas por grupo de consumidores para proporcionar aislamiento de uso por modelo que pueda 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 mediante 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.