Compartir vía


Mitigación de la latencia y mejora del rendimiento

En esta guía se describe cómo mitigar la latencia de red y mejorar el rendimiento del servicio al usar el servicio Face. La velocidad y el rendimiento de la aplicación afectarán a la experiencia de los usuarios finales, como las personas que se inscriben y usan un sistema de identificación facial.

Mitigación de la latencia

Es posible encontrar latencia cuando se usa el servicio Face. La latencia hace referencia a cualquier tipo de retraso que se produce cuando los sistemas se comunican a través de una red. En general, entre las posibles causas de latencia se incluyen las siguientes:

  • Distancia física que cada paquete debe viajar desde el origen hasta el destino.
  • Problemas con el medio de transmisión.
  • Errores en enrutadores o conmutadores a lo largo de la ruta de transmisión.
  • Tiempo necesario para que las aplicaciones antivirus, los firewalls y otros mecanismos de seguridad inspeccionen los paquetes.
  • Funcionamiento incorrecto de aplicaciones en el lado cliente o servidor.

En esta sección se describe cómo puede mitigar varias causas de latencia específicas del servicio Face de Azure AI.

Nota:

Los servicios de Azure AI no proporcionan ningún Acuerdo de Nivel de Servicio (SLA) con respecto a la latencia.

Elección de la región adecuada para el recurso de Face

La latencia de red, el tiempo necesario para que la información viaje desde el origen (la aplicación) al destino (el recurso de Azure), se ve muy afectada por la distancia geográfica entre la aplicación que realiza las solicitudes y el servidor de Azure que responde a las mismas. Por ejemplo, si su recurso Face está ubicado en EastUS, tiene un tiempo de respuesta más rápido para los usuarios de Nueva York, y los usuarios de Asia experimentan un retraso mayor.

Se recomienda seleccionar una región más cercana a los usuarios para minimizar la latencia. Si los usuarios se distribuyen en todo el mundo, considere la posibilidad de crear varios recursos en diferentes regiones y enrutar solicitudes a la región más cercana a los clientes. Como alternativa, puede elegir una región que esté cerca del centro geográfico de todos los clientes.

Uso de Azure Blob Storage para direcciones URL remotas

El servicio Face proporciona dos maneras de cargar imágenes para su procesamiento: cargar los datos de bytes sin procesar de la imagen directamente en la solicitud o proporcionar una dirección URL a una imagen remota. Independientemente del método, el servicio Face debe descargar la imagen desde su ubicación de origen. Si la conexión del servicio Face al cliente o al servidor remoto es lenta o deficiente, afecta al tiempo de respuesta de las solicitudes. Si tiene un problema con la latencia, considere la posibilidad de almacenar la imagen en Azure Blob Storage y pasar la dirección URL de la imagen en la solicitud. Para más información sobre la implementación, consulte Almacenamiento de la imagen en Azure Premium Blob Storage. Una llamada API de ejemplo:

var url = "https://<storage_account_name>.blob.core.windows.net/<container_name>/<file_name>";
var response = await faceClient.DetectAsync(new Uri(url), FaceDetectionModel.Detection03, FaceRecognitionModel.Recognition04, returnFaceId: false);
var faces = response.Value;

Asegúrese de usar una cuenta de almacenamiento en la misma región que el recurso de Face. Esto reduce la latencia de la conexión entre el servicio Face y la cuenta de almacenamiento.

Uso de tamaños óptimos de archivo

Si los archivos de imagen que usa son grandes, afecta al tiempo de respuesta del servicio Face de dos maneras:

  • Se tarda más tiempo en cargar el archivo.
  • El servicio tarda más tiempo en procesar el archivo, en proporción con el tamaño del archivo.

El equilibrio entre la precisión y la velocidad de red

La calidad de las imágenes de entrada afecta tanto a la precisión como a la latencia del servicio Face. Las imágenes con menor calidad pueden dar lugar a resultados erróneos. Las imágenes de mayor calidad pueden permitir interpretaciones más precisas. Sin embargo, las imágenes de mayor calidad también aumentan la latencia de red debido a sus tamaños de archivo más grandes. El servicio requiere más tiempo para recibir todo el archivo del cliente y procesarlo, en proporción al tamaño del archivo. Por encima de un determinado nivel, las mejoras de calidad adicionales no mejorarán significativamente la precisión.

Para lograr el equilibrio óptimo entre precisión y velocidad, siga estas sugerencias para optimizar los datos de entrada.

Otras sugerencias de tamaño de archivo

Tenga en cuenta las siguientes sugerencias adicionales:

  • En la detección de caras, cuando se usa el modelo de detección FaceDetectionModel.Detection01, reducir el tamaño del archivo de imagen aumenta la velocidad de procesamiento. Al usar el modelo de detección FaceDetectionModel.Detection02, reducir el tamaño del archivo de imagen solo aumentará la velocidad de procesamiento si el archivo de imagen es inferior a 1 920 x 1 080 píxeles.
  • Para el reconocimiento facial, reducir el tamaño de la cara solo aumentará la velocidad si la imagen es inferior a 200 x 200 píxeles.
  • El rendimiento de los métodos de detección de caras también depende del número de caras que hay en una imagen. El servicio Face puede devolver hasta 100 caras de una imagen. Las caras se clasifican por tamaño de rectángulo facial de grande a pequeño.

Llamar a las API en paralelo cuando sea posible

Si necesita llamar a varias API, considere la posibilidad de llamarlas en paralelo si el diseño de la aplicación lo permite. Por ejemplo, si necesita detectar caras en dos imágenes para realizar una comparación de caras, puede llamarlas en una tarea asincrónica:

string url1 = "https://raw.githubusercontent.com/Azure-Samples/cognitive-services-sample-data-files/master/Face/images/detection1.jpg";
string url2 = "https://raw.githubusercontent.com/Azure-Samples/cognitive-services-sample-data-files/master/Face/images/detection2.jpg";
var response1 = client.DetectAsync(new Uri(url1), FaceDetectionModel.Detection03, FaceRecognitionModel.Recognition04, returnFaceId: false);
var response2 = client.DetectAsync(new Uri(url2), FaceDetectionModel.Detection03, FaceRecognitionModel.Recognition04, returnFaceId: false);

Task.WaitAll(new Task<Response<IReadOnlyList<FaceDetectionResult>>>[] { response1, response2 });
IEnumerable<FaceDetectionResult> results = response1.Result.Value.Concat(response2.Result.Value);

Suavizado del tráfico con picos

El rendimiento del servicio Face puede verse afectado por los picos de tráfico, lo que puede provocar una limitación, un menor rendimiento y una mayor latencia. Se recomienda aumentar la frecuencia de las llamadas API gradualmente y evitar reintentos inmediatos. Por ejemplo, si tiene 3 000 fotos para realizar la detección facial, no envíe 3 000 solicitudes simultáneamente. En su lugar, envíe 3 000 solicitudes secuencialmente durante 5 minutos (es decir, aproximadamente 10 solicitudes por segundo) para que el tráfico de red sea más consistente. Si desea reducir el tiempo de finalización, aumente gradualmente el número de llamadas por segundo para suavizar el tráfico. Si se produce algún error, consulte Control de errores de forma eficaz para controlar la respuesta.

Control de errores de forma eficaz

Los errores 429 y 503 pueden producirse en sus llamadas API de Face por diversos motivos. La aplicación siempre debe estar lista para controlar estos errores. Estas son algunas recomendaciones:

Código de error HTTP Descripción Recomendación
429 Limitaciones Es posible que encuentre un límite de velocidad con llamadas simultáneas. Debe reducir la frecuencia de las llamadas y volver a intentarlo con retroceso exponencial. Evite reintentos inmediatos y evite volver a enviar numerosas solicitudes simultáneamente.

Si desea aumentar el límite, consulte la sección Solicitar un aumento de la guía de cuotas.
503 Servicio no disponible Es posible que el servicio esté ocupado y no pueda responder a su solicitud inmediatamente. Debe adoptar una estrategia de retroceso similar a la del error 429.

Garantizar la confiabilidad y soporte

A continuación se muestran otras sugerencias para garantizar la confiabilidad y la alta compatibilidad de la aplicación:

  • Genere un GUID único como encabezado de solicitud HTTP client-request-id y envíelo con cada solicitud. Esto ayuda a Microsoft a investigar los errores más fácilmente si necesita notificar un problema con Microsoft.
    • Registre siempre el client-request-id y la respuesta que recibió cuando encuentre una respuesta inesperada. Si necesita ayuda, proporcione esta información al Soporte técnico de Microsoft, junto con el identificador de recurso de Azure y el período de tiempo en que se produjo el problema.
  • Realice una prueba piloto antes de lanzar su aplicación a producción. Asegúrese de que su aplicación puede manejar los errores de forma adecuada y eficaz.

Pasos siguientes

En esta guía, ha aprendido a mejorar el rendimiento al usar el servicio Face. A continuación, siga el tutorial para configurar una solución de software en funcionamiento que combine la lógica del lado servidor y del lado cliente para realizar la detección de la vivacidad facial de los usuarios.