Partage via


Atténuer la latence et améliorer les performances

Ce guide explique comment atténuer la latence du réseau et améliorer les performances du service lors de l’utilisation du service Visage. La vitesse et les performances de votre application affectent l’expérience de vos utilisateurs finaux, tels que les personnes qui s’inscrivent et utilisent un système d’identification des visages.

Atténuer la latence

Vous pouvez rencontrer une latence lors de l’utilisation du service Visage. La latence fait référence à tout type de retard qui se produit lorsque des systèmes communiquent sur un réseau. En général, les causes possibles de latence sont les suivantes :

  • Distance physique que chaque paquet doit parcourir entre la source et la destination
  • Problèmes liés au support de transmission
  • Erreurs dans les routeurs ou commutateurs sur le chemin de transmission
  • Temps nécessaire aux applications antivirus, pare-feu et autres mécanismes de sécurité pour inspecter les paquets
  • Dysfonctionnements dans les applications clientes ou serveur

Cette section décrit comment vous pouvez atténuer différentes causes de latence spécifiques au service Azure AI Visage.

Remarque

Azure AI services n’offre pas de Contrat de niveau de service (SLA) concernant la latence.

Choisir la région appropriée pour votre ressource Visage

La latence du réseau, le temps nécessaire pour que les informations passent de la source (votre application) à la destination (votre ressource Azure), est fortement affectée par la distance géographique entre l’application qui effectue des requêtes et le serveur Azure qui y répond. Par exemple, si votre ressource Visage se trouve dans EastUS, elle a un temps de réponse plus rapide pour les utilisateurs à New York et les utilisateurs en Asie ont un retard plus important.

Nous vous recommandons de choisir la région la plus proche de vos utilisateurs afin de minimiser les temps de latence. Si vos utilisateurs sont répartis dans le monde entier, envisagez de créer plusieurs ressources dans différentes régions et de router les requêtes vers la région la plus proche de vos clients. Vous pouvez également choisir une région proche du centre géographique de tous vos clients.

Utiliser le stockage d’objets blob Azure pour les URL distantes

Le service Visage offre deux façons de charger des images à des fins de traitement : charger les données d’octet brutes de l’image directement dans la requête ou fournir une URL à une image distante. Quelle que soit la méthode, le service Visage doit télécharger l’image à partir de son emplacement source. Si la connexion du service Visage au client ou au serveur distant est lente ou médiocre, elle affecte le temps de réponse des requêtes. Si vous rencontrez un problème de latence, envisagez de stocker l’image dans Stockage Blob Azure et de transmettre l’URL de l’image dans la requête. Pour plus d’informations sur l’implémentation, consultez Stocker l’image dans le Stockage Blob Azure Premium. Exemple d’appel d’API :

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;

Veillez à utiliser un compte de stockage dans la même région que la ressource Visage. Ceci réduit la latence de la connexion entre le service Visage et le compte de stockage.

Utiliser des tailles de fichier optimales

Si les fichiers image que vous utilisez sont volumineux, cela affecte le temps de réponse du service Visage de deux façons :

  • Le chargement du fichier prend plus de temps.
  • Le traitement du fichier par le service prend plus de temps, en fonction de la taille du fichier.

Le compromis entre l’exactitude et la vitesse du réseau

La qualité des images d’entrée affecte à la fois l’exactitude et la latence du service Visage. Les images avec une qualité inférieure peuvent entraîner des résultats erronés. Les images de qualité supérieure peuvent permettre des interprétations plus précises. Toutefois, les images de meilleure qualité augmentent également la latence du réseau en raison de la taille plus importante des fichiers. Le service nécessite plus de temps pour recevoir l’intégralité du fichier du client et le traiter, proportionnellement à la taille du fichier. Au-delà d’un certain niveau, des améliorations supplémentaires de la qualité n’amélioreront pas significativement l’exactitude.

Pour obtenir un équilibre optimal entre exactitude et vitesse, suivez ces conseils pour optimiser vos données d’entrée.

Autres conseils concernant la taille des fichiers

Notez les conseils supplémentaires suivants :

  • Pour la détection des visages, quand vous utilisez le modèle de détection FaceDetectionModel.Detection01, la réduction de la taille du fichier image accélère la vitesse de traitement. Quand vous utilisez le modèle de détection FaceDetectionModel.Detection02, la réduction de la taille du fichier image n’accélère la vitesse de traitement que si la taille du fichier image est inférieure à 1920 x 1080 pixels.
  • Pour la reconnaissance faciale, la réduction de la taille du visage augmente uniquement la vitesse si l’image est plus petite que 200 x 200 pixels.
  • Les performances des méthodes de détection des visages dépendent également du nombre de visages dans une image. Le service Visage peut retourner jusqu’à 100 visages pour une image. Les visages sont classés par taille du rectangle du visage dans l’ordre décroissant.

Appeler des API en parallèle lorsque cela est possible

Si vous devez appeler plusieurs API, appelez-les en parallèle si la conception de votre application le permet. Par exemple, si vous devez détecter les visages dans deux images pour effectuer une comparaison des visages, vous pouvez les appeler dans une tâche asynchrone :

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);

Garder un trafic régulier, éviter les pics

Les performances du service Visage peuvent être affectées par les pics de trafic, ce qui peut entraîner une limitation, un débit inférieur et une latence plus élevée. Nous vous recommandons d’augmenter progressivement la fréquence des appels d’API et d’éviter les nouvelles tentatives immédiates. Par exemple, si vous avez 3000 photos sur lesquelles vous devez effectuer une détection des visages, n’envoyez pas 3000 requêtes simultanément. Envoyez plutôt 3000 requêtes de manière séquentielle sur 5 minutes (autrement dit, environ 10 requêtes par seconde) pour rendre le trafic réseau plus cohérent. Si vous souhaitez réduire le temps d’achèvement, augmentez progressivement le nombre d’appels par seconde pour faciliter le trafic. Si vous rencontrez une erreur, reportez-vous à Gérer efficacement les erreurs pour gérer la réponse.

Gérer efficacement les erreurs

Les erreurs 429 et 503 peuvent se produire sur vos appels d’API Visage pour différentes raisons. Votre application doit toujours être prête à gérer ces erreurs. Voici quelques recommandations :

Code d'erreur HTTP Description Recommandation
429 Limitation Vous pouvez rencontrer une limitation du débit avec des appels simultanés. Vous devez réduire la fréquence des appels et réessayer avec un backoff exponentiel. Évitez les nouvelles tentatives immédiates et évitez de renvoyer simultanément de nombreuses requêtes.

Si vous souhaitez augmenter la limite, consultez la section Demander une augmentation du guide des quotas.
503 Service non disponible Le service peut être occupé et incapable de répondre immédiatement à votre requête. Vous devez adopter une stratégie de backoff similaire à celle de l’erreur 429.

Garantir la fiabilité et la prise en charge

Voici d’autres conseils pour garantir la fiabilité et une bonne prise en charge de votre application :

  • Générez un GUID unique en tant qu’en-tête de requête HTTP de client-request-id et envoyez-le avec chaque requête. Cela permet à Microsoft d’enquêter plus facilement sur les erreurs éventuelles si vous devez signaler un problème à Microsoft.
    • Enregistrez toujours le client-request-id et la réponse que vous avez reçue lorsque vous rencontrez une réponse inattendue. Si vous avez besoin d’aide, fournissez ces informations au Support Microsoft, ainsi que l’ID de la ressource Azure et l’heure à laquelle le problème s’est produit.
  • Effectuez un test pilote avant de mettre votre application en production. Assurez-vous que votre application peut gérer les erreurs correctement et efficacement.

Étapes suivantes

Dans ce guide, vous avez appris à améliorer les performances lors de l’utilisation du service Visage. Ensuite, suivez le tutoriel pour configurer une solution logicielle fonctionnelle qui combine la logique côté serveur et côté client pour la détection de liveness des visages des utilisateurs.