Implementación de un flujo como punto de conexión en línea administrado para la inferencia en tiempo real
Después de compilar un flujo y probarlo correctamente, es posible que quiera implementarlo como punto de conexión para poder invocar el punto de conexión para la inferencia en tiempo real.
En este artículo, aprenderá a implementar un flujo como un punto de conexión en línea administrado para la inferencia en tiempo real. Los pasos que realizará son:
- Prueba del flujo y prepararación para la implementación
- Creación de una implementación en línea
- Concesión de permisos al punto de conexión
- Prueba del punto de conexión
- Consumo del punto de conexión
Importante
Los elementos marcados (versión preliminar) en este artículo se encuentran actualmente en versión preliminar pública. Se ofrece la versión preliminar sin Acuerdo de Nivel de Servicio y no se recomienda para cargas de trabajo de producción. Es posible que algunas características no sean compatibles o que tengan sus funcionalidades limitadas. Para más información, consulte Términos de uso complementarios de las Versiones Preliminares de Microsoft Azure.
Requisitos previos
Obtenga información sobre cómo compilar y probar un flujo en el flujo de avisos.
Conocimientos básicos sobre los puntos de conexión en línea administrados. Los puntos de conexión en línea administrados funcionan con potentes máquinas de CPU y GPU en Azure de una forma escalable y completamente administrada que le libera de la sobrecarga de configurar y administrar la infraestructura de implementación subyacente. Para más información sobre los puntos de conexión en línea administrados, consulte Puntos de conexión en línea e implementaciones para la inferencia en tiempo real.
Los controles de acceso basado en rol de Azure (RBAC de Azure) se usan para conceder acceso a las operaciones en Azure Machine Learning. Para poder implementar un punto de conexión en el flujo de avisos, se debe asignar a la cuenta de usuario el rol de científico de datos de AzureML o el rol con más privilegios para el área de trabajo de Azure Machine Learning.
Tener conocimientos básicos sobre identidades administradas. Más información sobre las identidades administradas.
Nota:
El punto de conexión en línea administrado solo admite la red virtual administrada. Si el área de trabajo está en una red virtual personalizada, debe probar otras opciones de implementación, como implementar en Punto de conexión en línea de Kubernetes mediante la CLI o el SDK, o Implementar en otras plataformas, como Docker.
Compilación del flujo y preparación para la implementación
Si ya ha completado el tutorial de introducción, ya ha probado correctamente el flujo mediante el envío de una ejecución por lotes y la evaluación de los resultados.
Si no ha completado el tutorial, deberá crear un flujo. La prueba del flujo correctamente mediante una ejecución por lotes y la evaluación antes de la implementación es un procedimiento recomendado.
Usaremos el flujo de ejemplo Clasificación web como ejemplo para mostrar cómo implementar el flujo. Este flujo de ejemplo es un flujo estándar. La implementación de flujos de chat es similar. El flujo de evaluación no admite la implementación.
Definir el entorno usado por la implementación
Al implementar el flujo de avisos en el punto de conexión en línea administrado en la interfaz de usuario, de forma predeterminada, la implementación usará el entorno creado en función de la imagen de flujo de avisos más reciente y las dependencias especificadas en el valor requirements.txt
del flujo. Puede especificar paquetes adicionales necesarios en requirements.txt
. Puede encontrar requirements.txt
en la carpeta raíz de la carpeta del flujo.
Nota:
Si usa fuentes privadas en Azure devops, primero debe crear la imagen con fuentes privadas y seleccionar el entorno personalizado para implementarlo en la interfaz de usuario.
Creación de una implementación en línea
Ahora que ha creado un flujo y lo ha probado correctamente, es el momento de crear el punto de conexión en línea para la inferencia en tiempo real.
El flujo de avisos le permite implementar puntos de conexión a partir de un flujo o de una ejecución por lotes. Se recomienda probar el flujo antes de implementarlo.
En la página de creación de flujo o en la página de detalles de ejecución, seleccione Implementar.
Página de creación de flujo:
Página detallada de la ejecución:
Aparecerá un asistente para que configure el punto de conexión que incluye los siguientes pasos.
Configuración básica
Este paso le permite configurar las opciones básicas de la implementación.
Propiedad | Descripción |
---|---|
Punto de conexión | Puede seleccionar si desea implementar un nuevo punto de conexión o actualizar un punto de conexión existente. Si selecciona Nuevo, debe especificar el nombre del punto de conexión. |
Nombre de implementación | - Dentro del mismo punto de conexión, el nombre de la implementación debe ser único. - Si selecciona un punto de conexión existente y escribe un nombre de implementación existente, esa implementación se sobrescribirá con las nuevas configuraciones. |
Máquina virtual | Tamaño de máquina virtual que se usará para la implementación. Para la lista de tamaños admitidos, consulte Lista de SKU de puntos de conexión en línea administrados. |
Recuento de instancias | El número de instancias que se usarán para la implementación. Especifique el valor en la carga de trabajo esperada. Para lograr alta disponibilidad, se recomienda establecer el valor en al menos 3. Reservamos un 20 % adicional para realizar actualizaciones. Para más información, consulte las cuotas de puntos de conexión en línea administrados. |
Recopilación de datos de inferencia | Si habilita esto, las entradas y salidas del flujo se recopilarán automáticamente en un recurso de datos de Azure Machine Learning y se pueden usar para la supervisión posterior. Para más información, vea Procedimiento para supervisar aplicaciones de IA generativa. |
Después de finalizar la configuración básica, puede seleccionar directamente Revisar y crear para finalizar la creación, o bien puede seleccionar Siguiente para configurar Opciones avanzadas.
Configuración avanzada: punto de conexión
Puede especificar la siguiente configuración para el punto de conexión.
Tipo de autenticación
Método de autenticación del punto de conexión. La autenticación basada en claves proporciona una clave principal y secundaria que no expira. La autenticación basada en tokens de Azure Machine Learning proporciona un token que se actualiza periódicamente de forma automática. Para más información sobre la autenticación, consulte Autenticación en un punto de conexión en línea.
Tipo de identidad
El punto de conexión debe acceder a los recursos de Azure, como Azure Container Registry o las conexiones del área de trabajo para la inferencia. Puede permitir que el permiso del punto de conexión acceda a los recursos de Azure mediante el permiso para conceder permiso a su identidad administrada.
La identidad asignada por el sistema se creará automáticamente después de crear el punto de conexión, mientras que el usuario crea la identidad asignada por el usuario. Más información sobre las identidades administradas.
Asignada por el sistema
Observará que hay una opción Exigir acceso a secretos de conexión (versión preliminar). Si en el flujo se usan conexiones, el punto de conexión debe acceder a las conexiones para realizar la inferencia. La opción está habilitada de forma predeterminada, al punto de conexión se le concederá el rol Lector de secretos de conexión del área de trabajo de Azure Machine Learning para acceder a las conexiones automáticamente si tiene permiso de lector de secretos de conexión. Si deshabilita esta opción, debe conceder este rol manualmente a la identidad asignada por el sistema o pedir ayuda del administrador. Más información sobre cómo conceder permiso a la identidad del punto de conexión.
Asignada por el usuario
Al crear una implementación, Azure intenta extraer la imagen del contenedor del usuario del área de trabajo de Azure Container Registry (ACR) y montar el modelo de usuario y los artefactos de código en el contenedor del usuario desde la cuenta de almacenamiento del área de trabajo.
Si ha creado el punto de conexión asociado con Identidad asignada por el usuario, se debe conceder a la identidad asignada por el usuario los siguientes roles antes de la creación de la implementación; de lo contrario, se producirá un error en la creación de la implementación.
Ámbito | Role | Por qué se necesita |
---|---|---|
Área de trabajo de Azure Machine Learning | Rol de Lector de secretos de conexión del área de trabajo de Azure Machine Learning O BIEN un rol personalizado con "Microsoft.MachineLearningServices/workspaces/connections/listsecrets/action" | Obtener conexiones del área de trabajo |
Registro de contenedor del área de trabajo | Extracción de ACR | Extracción de imagen de contenedor |
Almacenamiento predeterminado del área de trabajo | Lector de datos de blobs de almacenamiento | Cargar el modelo desde el almacenamiento |
Área de trabajo de Azure Machine Learning (opcional) | Escritor de métricas del área de trabajo | Después de implementar el punto de conexión, si desea supervisar las métricas relacionadas con el punto de conexión, como el uso de CPU, GPU, disco o memoria, debe conceder este permiso a la identidad. |
Consulte las instrucciones detalladas sobre cómo conceder permisos a la identidad del punto de conexión en Concesión de permisos al punto de conexión.
Importante
Si el flujo usa conexiones de autenticación basadas en Microsoft Entra ID, independientemente de que use la identidad asignada por el sistema o la identidad asignada por el usuario, siempre debe conceder a la identidad administrada los roles adecuados de los recursos correspondientes para que pueda realizar llamadas API a ese recurso. Por ejemplo, si la conexión de Azure OpenAI usa la autenticación basada en Microsoft Entra ID, debe conceder la identidad administrada del punto de conexión Rol de colaborador de OpenAI de Cognitive Services o de OpenAI de Cognitive Services de los recursos de Azure OpenAI correspondientes.
Configuración avanzada: implementación
En este paso, excepto las etiquetas, también puede especificar el entorno usado por la implementación.
Uso del entorno de definición de flujo actual
De forma predeterminada, la implementación usará el entorno creado en función de la imagen base especificada en el flow.dag.yaml
y las dependencias especificadas en el requirements.txt
.
Puede especificar la imagen base en el
flow.dag.yaml
seleccionandoRaw file mode
del flujo. Si no se especifica ninguna imagen, la imagen base predeterminada es la imagen base del flujo de mensajes más reciente.Puede encontrar
requirements.txt
en la carpeta raíz de la carpeta de flujo y agregar dependencias dentro de ella.
Uso del entorno personalizado
También puede crear un entorno personalizado y usarlo para la implementación.
Nota:
El entorno personalizado debe cumplir los siguientes requisitos:
- La imagen de docker debe crearse en función de la imagen base del flujo del símbolo del sistema,
mcr.microsoft.com/azureml/promptflow/promptflow-runtime-stable:<newest_version>
. Puede encontrar la versión más reciente aquí. - la definición del entorno debe incluir el
inference_config
.
A continuación se muestra un ejemplo de definición de entorno personalizada.
$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
name: pf-customized-test
build:
path: ./image_build
dockerfile_path: Dockerfile
description: promptflow customized runtime
inference_config:
liveness_route:
port: 8080
path: /health
readiness_route:
port: 8080
path: /health
scoring_route:
port: 8080
path: /score
Habilitación del seguimiento mediante la activación de diagnósticos de Application Insights (versión preliminar)
Si lo habilita, los datos de seguimiento y las métricas del sistema durante el tiempo de inferencia (como el recuento de tokens, la latencia del flujo, la solicitud de flujo, etc.) se recopilarán en las áreas de trabajo vinculadas a Application Insights. Para más información, consulte métricas y datos de seguimiento de servicio de flujo de avisos.
Si quiere especificar una instancia de Application Insights diferente a la vinculada al área de trabajo, puede configurarla mediante la CLI.
Configuración avanzada: salidas y conexiones
En este paso, puede ver todas las salidas de flujo y especificar qué salidas se incluirán en la respuesta del punto de conexión que implemente. De forma predeterminada, se seleccionan todas las salidas de flujo.
También puede especificar las conexiones que usa el punto de conexión cuando realiza la inferencia. De manera predeterminada, se heredan del flujo.
Una vez que haya configurado y revisado todos los pasos anteriores, puede seleccionar Revisar y crear para finalizar la creación.
Nota:
Espere que la creación del punto de conexión tarde aproximadamente más de 15 minutos, ya que contiene varias fases, como la creación de un punto de conexión, el registro del modelo, la creación de la implementación, etc.
Puede comprender el progreso de la creación de la implementación a través de la notificación iniciada por implementación del flujo de avisos.
Concesión de permisos al punto de conexión
Importante
La concesión de permisos (agregar asignación de roles) solo está habilitada para el propietario de los recursos específicos de Azure. Es posible que tenga que pedir ayuda al administrador de TI. Se recomienda conceder roles a la identidad asignada por el usuario antes de la creación de la implementación. El permiso concedido puede tardar más de 15 minutos en surtir efecto.
También puede conceder todos los permisos en la interfaz de usuario de Azure Portal si sigue estos pasos.
Vaya a la página de información general del área de trabajo de Azure Machine Learning en Azure Portal.
Seleccione Control de acceso, y seleccione Agregar asignación de rol.
Seleccione lector de secretos de conexión del área de trabajo de Azure Machine Learning, vaya a Siguiente.
Nota:
Lector de secretos de conexión del área de trabajo de Azure Machine Learning es un rol integrado que tiene permiso para obtener conexiones del área de trabajo.
Si desea usar un rol personalizado, asegúrese de que el rol personalizado tenga el permiso "Microsoft.MachineLearningServices/workspaces/connections/listsecrets/action". Obtenga información sobre cómo crear roles personalizados.
Seleccione Identidad administrada y seleccione los miembros.
Para Identidad asignada por el sistema, seleccione Punto de conexión en línea de aprendizaje automático en Identidad administrada asignada por el sistema, y busque por el nombre del punto de conexión.
Para la identidad asignada por el usuario, seleccione Identidad administrada asignada por el usuario y busque por nombre de identidad.
Para la identidad asignada por el usuario, también debe conceder permisos al registro de contenedor del área de trabajo. Puede encontrar el registro de contenedor y la cuenta de almacenamiento en la página de información general del área de trabajo en Azure Portal.
Vaya a la página de información general del registro de contenedor del área de trabajo, seleccione Control de acceso, después Agregar asignación de roles y asigne Extraer ACR |Extraer imagen de contenedor a la identidad del punto de conexión.
Vaya a la página de información general del almacenamiento predeterminado del área de trabajo, seleccione Control de acceso, después Agregar asignación de roles y asigne Lector de datos de blob de almacenamiento a la identidad del punto de conexión.
(opcional) Para la identidad asignada por el usuario, si quiere supervisar las métricas relacionadas con el punto de conexión, como las de uso de CPU, GPU, disco o memoria, también debe conceder el rol Escritor de métricas del área de trabajo a la identidad.
Comprobación del estado del punto de conexión
Habrá notificaciones después de finalizar el asistente de implementación. Una vez que el punto de conexión y la implementación se han creado correctamente, puede seleccionar Implementar detalles en la página de detalles de la notificación al punto de conexión.
También puede ir directamente a la página Puntos de conexión del estudio y comprobar el estado del punto de conexión que implementó.
Prueba del punto de conexión con datos de ejemplo
En la página de detalles del punto de conexión, cambie a la pestaña Prueba.
Puede escribir los valores y seleccionar el botón Probar.
El resultado de la prueba muestra lo siguiente:
Prueba del punto de conexión implementado desde un flujo de chat
En el caso de los puntos de conexión implementados desde el flujo de chat, puede probarlo en una ventana de chat inmersiva.
El chat_input
se estableció durante el desarrollo del flujo de chat. Puede introducir el mensaje chat_input
en la casilla de entrada. El panel Entradas del lado derecho es para especificar los valores de otras entradas además de chat_input
. Obtenga información sobre cómo desarrollar un flujo de chat.
Consumo del punto de conexión
En la página de detalles del punto de conexión, cambie a la pestaña Consumir. Puede encontrar el punto de conexión de REST y la clave o token para consumir el punto de conexión. También hay código de ejemplo para que consuma el punto de conexión en distintos idiomas.
Tenga en cuenta que debe rellenar los valores de datos según las entradas de flujo. Tome el flujo de ejemplo usado en este artículo Clasificación web como ejemplo. Debe especificar data = {"url": "<the_url_to_be_classified>"}
y rellenar la clave o el token en el código de consumo de ejemplo.
Supervisión de puntos de conexión
Visualización de métricas comunes de puntos de conexión en línea administrados con Azure Monitor (opcional)
Puede ver varias métricas (número de solicitudes, latencia de solicitudes, bytes de red, uso de CPU/GPU/Disco/Memoria y más) para un punto de conexión en línea y sus implementaciones mediante los siguientes enlaces de la página Detalles del punto de conexión en el Studio. Si sigue estos vínculos, se le llevará a la página de métricas exactas de Azure Portal para el punto de conexión o la implementación.
Nota
Si especifica la identidad asignada por el usuario para el punto de conexión, asegúrese de que ha asignado el escritor de métricas de área de trabajo de Azure Machine Learning a la identidad asignada por el usuario. De lo contrario, el punto de conexión no podrá registrar las métricas.
Para más información sobre cómo ver las métricas de puntos de conexión en línea, consulte Supervisión de puntos de conexión en línea.
Ver métricas y datos de seguimiento específicos de los puntos de conexión del flujo de avisos (opcional)
Si habilita Diagnósticos de Application Insights en el asistente para la implementación de la interfaz de usuario, las métricas específicas del flujo de avisos y los datos de seguimiento se recopilarán en la instancia de Application Insights vinculada al área de trabajo. Consulte los detalles sobre la habilitación del seguimiento para su implementación.
Solución de problemas de puntos de conexión implementados desde el flujo de mensajes
Falta autorización para realizar la acción "Microsoft.MachineLearningService/workspaces/datastores/read"
Si el flujo contiene la herramienta Búsqueda de índices, después de implementar el flujo, el punto de conexión debe acceder al almacén de datos del área de trabajo para leer el archivo yaml de MLIndex o la carpeta FAISS que contiene fragmentos e incrustaciones. Por lo tanto, debe conceder manualmente el permiso de identidad del punto de conexión para hacerlo.
Puede conceder la identidad del punto de conexión AzureML Data Scientist en el ámbito del área de trabajo o un rol personalizado que contenga la acción "MachineLearningService/workspace/datastore/reader".
Error MissingDriverProgram
Si implementa el flujo con un entorno personalizado y encuentra el siguiente error, puede deberse a que no especificó el inference_config
en la definición del entorno personalizado.
'error':
{
'code': 'BadRequest',
'message': 'The request is invalid.',
'details':
{'code': 'MissingDriverProgram',
'message': 'Could not find driver program in the request.',
'details': [],
'additionalInfo': []
}
}
Hay 2 maneras de corregir este error.
(Recomendado) Puede encontrar el identificador URI de la imagen de contenedor en la página de detalles del entorno personalizado y establecerlo como la imagen base de flujo en el archivo flow.dag.yaml. Al implementar el flujo en la interfaz de usuario, solo tiene que seleccionar Usar entorno de definición de flujo actualy el servicio back-end creará el entorno personalizado en función de esta imagen base y
requirement.txt
para la implementación. Obtenga más información sobre el entorno especificado en la definición de flujo.Para corregir este error, agregue
inference_config
en la definición de entorno personalizada. Obtenga más información sobre cómo usar el entorno personalizado.A continuación se muestra un ejemplo de definición de entorno personalizada.
$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
name: pf-customized-test
build:
path: ./image_build
dockerfile_path: Dockerfile
description: promptflow customized runtime
inference_config:
liveness_route:
port: 8080
path: /health
readiness_route:
port: 8080
path: /health
scoring_route:
port: 8080
path: /score
La respuesta del modelo tarda demasiado tiempo
A veces, es posible que observe que la implementación tarda demasiado tiempo en responder. Hay varios factores potenciales para que esto ocurra.
- El modelo no es lo suficientemente eficaz (por ejemplo, se usa gpt y no text-ada)
- La consulta de índice no está optimizada y tarda demasiado tiempo
- El flujo tiene muchos pasos para procesar
Considere la posibilidad de optimizar el punto de conexión con las consideraciones anteriores para mejorar el rendimiento del modelo.
No se puede capturar el esquema de implementación
Después de implementar el punto de conexión y probarlo en la pestaña Prueba de la página de detalles del punto de conexión, si la pestaña Prueba muestra No se puede capturar el esquema de implementación como se muestra a continuación, puede probar los 2 métodos siguientes para mitigar este problema:
- Asegúrese de que ha concedido el permiso correcto a la identidad del punto de conexión. Obtenga más información sobre cómo conceder permiso a la identidad del punto de conexión.
Acceso denegado a enumerar el secreto del área de trabajo
Si se produce un error como "Acceso denegado a enumerar el secreto del área de trabajo", compruebe si ha concedido el permiso correcto a la identidad del punto de conexión. Obtenga más información sobre cómo conceder permiso a la identidad del punto de conexión.
Limpieza de recursos
Si no va a usar el punto de conexión después de completar este tutorial, debería eliminarlo.
Nota:
La eliminación completa puede tardar aproximadamente 20 minutos.
Pasos siguientes
- Iteración y optimización del flujo mediante la optimización de mensajes con variantes
- Habilitación del seguimiento y recopilar comentarios para su implementación
- Visualización de los costos de un punto de conexión en línea administrado de Azure Machine Learning
- Solución de problemas de implementaciones de flujo de avisos.