Compartilhar via


Atenuar a latência e melhorar o desempenho

Este guia descreve como atenuar a latência de rede e melhorar o desempenho do serviço ao usar o serviço de Detecção Facial. A velocidade e o desempenho do aplicativo afetarão a experiência dos usuários finais, como pessoas que se inscrevem e usam um sistema de identificação facial.

Mitigar a latência

Você pode encontrar latência ao usar o serviço de Detecção Facial. A latência refere-se a todo tipo de atraso que ocorre quando sistemas se comunicam por uma rede. Em geral, as possíveis causas de latência incluem:

  • A distância física que cada pacote precisa percorrer da origem para o destino.
  • Problemas com o meio de transmissão.
  • Erros em roteadores ou comutadores ao longo do caminho de transmissão.
  • O tempo exigido por aplicativos antivírus, firewalls e outros mecanismos de segurança para inspecionar os pacotes.
  • Problemas de funcionamento em aplicativos cliente ou do servidor.

Esta seção descreve como você pode atenuar várias causas de latência específicas do serviço de Detecção Facial de IA do Azure.

Observação

Os serviços de IA do Azure não fornecem nenhum SLA (Contrato de Nível de Serviço) em relação à latência.

Escolha a região apropriada para o recurso de Detecção Facial

A latência de rede, o tempo necessário para que as informações viajem da origem (seu aplicativo) para o destino (seu recurso do Azure), é fortemente afetada pela distância geográfica entre o aplicativo que está fazendo solicitações e o servidor do Azure que responde a essas solicitações. Por exemplo, se o recurso de Detecção Facial estiver localizado em EastUS, ele terá um tempo de resposta mais rápido para os usuários em Nova York e os usuários na Ásia sofrerão um atraso maior.

É recomendável selecionar uma região mais próxima dos usuários para minimizar a latência. Se os usuários estiverem distribuídos em todo o mundo, considere a criação de vários recursos em regiões diferentes e solicitações de roteamento para a região mais próxima dos clientes. Opcionalmente, é possível escolher uma região próxima ao centro geográfico de todos os clientes.

Usar o armazenamento de blobs do Azure para URLs remotas

O serviço de Detecção Facial fornece duas maneiras de carregar imagens para processamento: carregar os dados de bytes brutos da imagem diretamente na solicitação ou fornecer uma URL para uma imagem remota. Independente do método, o serviço de Detecção Facial precisa baixar a imagem do seu local de origem. Se a conexão do serviço de Detecção Facial ao cliente ou ao servidor remoto for lenta ou ruim, isso afetará o tempo de resposta das solicitações. Se você sofrer um problema de latência, considere armazenar a imagem no Armazenamento de Blobs do Azure e passar a URL da imagem na solicitação. Para obter mais detalhes da implementação, consulte Como armazenar a imagem no Armazenamento de Blobs do Azure Premium. Uma chamada de API de exemplo:

var faces = await client.Face.DetectWithUrlAsync("https://<storage_account_name>.blob.core.windows.net/<container_name>/<file_name>");

Certifique-se de usar uma conta de armazenamento na mesma região que o recurso de Detecção Facial. Isso reduz a latência da conexão entre o serviço de Detecção Facial e a conta de armazenamento.

Usar tamanhos do arquivo ideais

Se os arquivos de imagem usados forem grandes, isso afetará o tempo de resposta do serviço de Detecção Facial de duas maneiras:

  • Levará mais tempo para carregar o arquivo.
  • O serviço levará mais tempo para processar o arquivo, proporcionalmente ao tamanho dele.

As vantagens e desvantagens entre precisão e velocidade da rede

A qualidade das imagens de entrada afeta a precisão e a latência do serviço de Detecção Facial. Imagens com baixa qualidade podem resultar em resultados incorretos. Imagens de qualidade superior podem habilitar interpretações mais precisas. No entanto, imagens de qualidade superior também aumentam a latência de rede devido aos maiores tamanhos do arquivo. O serviço necessita de mais tempo para receber todo o arquivo do cliente e processá-lo, proporcionalmente ao tamanho do arquivo. Acima de um determinado nível, aprimoramentos de qualidade adicionais não melhorarão a precisão significativamente.

Para obter o equilíbrio ideal entre precisão e velocidade, siga estas dicas para otimizar seus dados de entrada.

Outras dicas de tamanho do arquivo

Observe as dicas adicionais a seguir:

  • Na detecção facial, ao usar o modelo de detecção DetectionModel.Detection01, reduzir o tamanho do arquivo de imagem aumenta a velocidade de processamento. Ao usar o modelo de detecção DetectionModel.Detection02, a redução do tamanho do arquivo de imagem só aumentará a velocidade de processamento se o arquivo de imagem for inferior a 1920x1080 pixels.
  • No reconhecimento facial, reduzir o tamanho do rosto só aumentará a velocidade se a imagem for inferior a 200x200 pixels.
  • O desempenho dos métodos de detecção facial depende também de quantos rostos existem em uma imagem. O serviço de Detecção Facial pode retornar até cem rostos em uma imagem. Os rostos são classificados pelo tamanho do retângulo ao redor do rosto, do maior para o menor.

Chamar APIs em paralelo quando possível

Se for necessário chamar várias APIs, considere chamá-las em paralelo se o design do seu aplicativo permitir. Por exemplo, for necessário detectar rostos em duas imagens para realizar uma comparação facial, será possível chamá-los em uma tarefa assíncrona:

var faces_1 = client.Face.DetectWithUrlAsync("https://www.biography.com/.image/t_share/MTQ1MzAyNzYzOTgxNTE0NTEz/john-f-kennedy---mini-biography.jpg");
var faces_2 = client.Face.DetectWithUrlAsync("https://www.biography.com/.image/t_share/MTQ1NDY3OTIxMzExNzM3NjE3/john-f-kennedy---debating-richard-nixon.jpg");

Task.WaitAll (new Task<IList<DetectedFace>>[] { faces_1, faces_2 });
IEnumerable<DetectedFace> results = faces_1.Result.Concat (faces_2.Result);

Suavizar picos de tráfego

O desempenho do serviço de Detecção Facial pode ser afetado por picos de tráfego, o que pode causar limitação, menor taxa de transferência e maior latência. É recomendável aumente gradualmente a frequência de chamadas à API e evitar novas tentativas imediatas. Por exemplo, se você tiver 3 mil fotos para realizar a detecção facial, não envie 3 mil solicitações ao mesmo tempo. Em vez disso, envie 3 mil solicitações sequencialmente ao longo de 5 minutos (ou seja, cerca de 10 solicitações por segundo) para tornar o tráfego de rede mais consistente. Se desejar diminuir o tempo de conclusão, aumente o número de chamadas gradualmente por segundo para suavizar o tráfego. Se você se deparar com algum erro, consulte Tratar erros com eficiência para tratar a resposta.

Tratar erros com eficiência

Os erros 429 e 503 podem ocorrer em suas chamadas à API de Detecção Facial por vários motivos. Seu aplicativo deve estar sempre pronto para tratar esses erros. Veja algumas recomendações:

Código de erro do HTTP Descrição Recomendação
429 Limitação Você pode se deparar com um limite de taxa em chamadas simultâneas. É necessário diminuir a frequência de chamadas e tentar novamente com retirada exponencial. Evite novas tentativas imediatas e evite enviar novamente várias solicitações ao mesmo tempo.

Se desejar aumentar o limite, consulte a seção Solicitar um aumento do guia de cotas.
503 Serviço indisponível O serviço pode estar ocupado e não conseguir responder à solicitação imediatamente. Você deve adotar uma estratégia de retirada semelhante à do erro 429.

Garantir confiabilidade e suporte

Confira a seguir outras dicas para garantir a confiabilidade e o alto nível de suporte do aplicativo:

  • Gere um GUID único como o cabeçalho de solicitação HTTP client-request-id e envie-o com cada solicitação. Isso ajuda a Microsoft a investigar erros mais facilmente, caso seja necessário relatar um problema com a Microsoft.
    • Sempre registre a client-request-id e a resposta recebida quando receber uma resposta inesperada. Se precisar de assistência, forneça essas informações ao Suporte da Microsoft, junto a ID do recurso do Azure e o período de tempo em que o problema ocorreu.
  • Realize um teste piloto antes de liberar seu aplicativo para produção. Verifique se seu aplicativo pode lidar com erros de forma correta e eficaz.

Próximas etapas

Neste guia, você aprendeu a melhorar o desempenho ao usar o serviço de Detecção Facial. Em seguida, siga o tutorial para configurar uma solução de software funcional que combina a lógica do lado do servidor e do cliente para fazer a detecção de atividade facial nos usuários.