Solución de problemas de implementaciones de flujo de mensajes

En este artículo se proporcionan instrucciones sobre cómo solucionar problemas de implementaciones desde el flujo de solicitud.

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

Problema de tiempo de espera de solicitud ascendente al consumir el punto de conexión

Si usa la CLI o el SDK para implementar el flujo, puede producirse un error de tiempo de espera. De manera predeterminada, el request_timeout_ms es 5000. Puede especificar un máximo de 5 minutos, que son 300 000 ms. A continuación se muestra cómo especificar el tiempo de espera de la solicitud en el archivo yaml de implementación. Para obtener más información, consulte el esquema de implementación.

request_settings:
  request_timeout_ms: 300000

La API de OpenAI alcanza el error de autenticación

Si vuelve a generar la clave de Azure OpenAI y actualiza manualmente la conexión que se usa en el flujo de solicitud, puede que encuentre errores como "No autorizado. Falta el token de acceso, no es válido, la audiencia es incorrecta o ha expirado." al invocar un punto de conexión existente creado antes de volver a generar la clave.

Esto se debe a que las conexiones usadas en los puntos de conexión o las implementaciones no se actualizarán automáticamente. Cualquier cambio de clave o de secretos en las implementaciones se debe realizar mediante la actualización manual, lo que pretende evitar afectar a la implementación de producción en línea debido a una operación sin conexión involuntaria.

  • Si el punto de conexión se implementó en la interfaz de usuario de Studio, puede volver a implementar el flujo en el punto de conexión existente con el mismo nombre de implementación.
  • Si el punto de conexión se implementó mediante el SDK o la CLI, debe realizar alguna modificación en la definición de implementación, como agregar una variable de entorno ficticia y, a continuación, usar az ml online-deployment update para actualizar la implementación.

Problemas de vulnerabilidad en las implementaciones de flujo de solicitud

En el caso de las vulnerabilidades relacionadas con el tiempo de ejecución del flujo de solicitud, estos son los enfoques que pueden ayudar a mitigar:

  • Actualice los paquetes de dependencias del archivo requirements.txt en la carpeta de flujo.
  • Si usa una imagen base personalizada para el flujo, debe actualizar el tiempo de ejecución del flujo de mensajes a la versión más reciente y volver a generar la imagen base y, a continuación, volver a implementar el flujo.

Para cualquier otra vulnerabilidad de las implementaciones en línea administradas, Azure Machine Learning corrige los problemas de forma mensual.

"Error MissingDriverProgram" o "No se pudo encontrar el programa de controladores en la solicitud".

Si implementa el flujo y encuentra el siguiente error, podría estar relacionado con el entorno de implementación.

'error': 
{
    'code': 'BadRequest', 
    'message': 'The request is invalid.', 
    'details': 
         {'code': 'MissingDriverProgram', 
          'message': 'Could not find driver program in the request.', 
          'details': [], 
          'additionalInfo': []
         }
}
Could not find driver program in the request

Existen dos formas de solucionar 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.

    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 usado en el flujo no es lo suficientemente eficaz (por ejemplo: use GPT 3.5 en lugar de 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, puede probar los dos 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ó el flujo en un runtime de una versión anterior y después implementó el flujo que la implementación usó el entorno del runtime que también estaba en la versión anterior. Para actualizar el runtime, siga Actualización de un runtime en la interfaz de usuario y vuelva a ejecutar el flujo en el runtime más reciente y después vuelva a implementar 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.

Pasos siguientes