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:

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.

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.

Captura de pantalla del texto de los requisitos de flujo.

Si usa el entorno de cliente para crear el entorno de ejecución de la instancia de proceso, puede encontrar la imagen en la página de detalles del entorno en Estudio de Azure Machine Learning. Para más información, consulte Personalización del entorno con el contexto de Docker para tiempo de ejecución.

Captura de pantalla del nombre de la imagen en la página de detalles del entorno.

Después tendrá que especificar también la imagen en environment en flow.dag.yaml en la carpeta de flujo.

Captura de pantalla del entorno de personalización del runtime automático en la página de 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:

Captura de pantalla de Clasificación web en la página de creación de flujos.

Página detallada de la ejecución:

Captura de pantalla de Clasificación web en la página de detalles de la ejecución.

Aparecerá un asistente para que configure el punto de conexión que incluye los siguientes pasos.

Configuración básica

Captura de pantalla del asistente de implementación en la página del punto de conexión.

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.
Diagnóstico de Application Insights Si habilita esto, las métricas del sistema durante el tiempo de inferencia (como el recuento de tokens, la latencia de flujo, la solicitud de flujo, etc.) se recopilarán en el área de trabajo predeterminada de Application Insights. Para más información, vea Métricas de servicio de flujo de avisos.

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.

Captura de pantalla de la configuración del punto de conexión del asistente de implementació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 LearningO 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.

Configuración avanzada: implementación

En este paso, excepto las etiquetas, también puede especificar el entorno usado por la implementación.

Captura de pantalla del entorno de 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 seleccionando Raw 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.

    Captura de pantalla de la especificación de la imagen base en el archivo yaml sin formato del flujo.

  • Puede encontrar requirements.txt en la carpeta raíz de la carpeta de flujo y agregar dependencias dentro de ella.

    Captura de pantalla del texto de los requisitos de flujo.

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

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. Captura de pantalla de la notificación de implementación.

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

  1. Vaya a la página de información general del área de trabajo de Azure Machine Learning en Azure Portal.

  2. Seleccione Control de acceso, y seleccione Agregar asignación de rol. Captura de pantalla del control de acceso con agregar asignación de rol resaltado.

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

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

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

    Captura de pantalla de la página de información general con el almacenamiento y el registro de contenedores resaltados.

    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.

  6. (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ó.

Captura de pantalla de la página de detalles del punto de conexión que muestra una implementación correcta.

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:

Captura de pantalla de la página de detalles del punto de conexión en la pestaña de prueba.

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.

Captura de pantalla de un punto de conexión implementado desde el flujo de chat.

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.

Captura de pantalla de la página de detalles del punto de conexión con el código de consumo.

Visualización de las métricas del punto 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.

Captura de pantalla de la página de detalles del punto de conexión con ver métricas resaltado.

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.

Visualización de métricas específicas de los puntos de conexión de flujo de avisos (opcional)

Si habilita los diagnósticos de Application Insights en el asistente para la implementación de la interfaz de usuario, o establece app_insights_enabled=true en la definición de implementación mediante código, se recopilarán las siguientes métricas específicas del flujo de avisos en el área de trabajo predeterminada de Application Insights.

Nombre de la métrica Tipo Dimensions Descripción
token_consumption counter - flow
- node
- llm_engine
- token_type: prompt_tokens: tokens de entrada de la API de LLM; completion_tokens: tokens de respuesta de la API de LLM; total_tokens = prompt_tokens + completion tokens
Métricas de consumo de tokens de OpenAI
flow_latency histogram flow,response_code,streaming,response_type costo de ejecución de solicitudes, response_type significa si es full/firstbyte/lastbyte
flow_request counter flow,response_code,exception,streaming recuento del flujo de solicitudes
node_latency histogram flow,node,run_status costo de ejecución del nodo
node_request counter flow,node,exception,run_status recuento de ejecuciones de nodos
rpc_latency histogram flow,node,api_call costo de rpc
rpc_request counter flow,node,api_call,exception recuento de rpc
flow_streaming_response_duration histogram flujo costo de envío de respuesta de transmisión, desde el envío del primer byte al envío del último byte

Puede encontrar el área de trabajo predeterminada de Application Insights en la página del área de trabajo en Azure Portal.

Captura de pantalla del área de trabajo predeterminada Application Insights.

Abra Application Insights y seleccione Uso y costos estimados en el panel de navegación de la izquierda. Seleccione Métricas personalizadas (versión preliminar), después Con dimensiones y guarde el cambio.

Captura de pantalla de la habilitación de las métricas multidimensionales.

Seleccione la pestaña Métricas en el panel de navegación de la izquierda. Seleccione métricas estándar de flujo de avisos en Espacio de nombres de métricas y puede explorar las métricas de la lista desplegable Métrica con diferentes métodos de agregación.

Captura de pantalla de las métricas del punto de conexión del flujo de solicitudes.

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.

    Captura de pantalla de la página de detalles del entorno personalizado.

    Captura de pantalla de la especificación de la imagen base en el archivo yaml sin formato del 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:

Captura de pantalla del error

  • 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.
  • Puede ser porque ejecutó su flujo en un runtime de versión antigua y después implementó el flujo, la implementación usó el entorno del runtime que también estaba en la versión antigua. Actualice el runtime siguiendo esta guía y vuelva a ejecutar el flujo en el último runtime para después implementar de nuevo el flujo.

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