Reduza a latência e melhore o desempenho

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

Reduza a latência

Você pode encontrar latência ao usar o serviço Face. Latência refere-se a qualquer tipo de atraso que ocorre quando os sistemas se comunicam através de uma rede. Em geral, as possíveis causas de latência incluem:

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

Esta seção descreve como você pode mitigar várias causas de latência específicas do serviço Azure AI Face.

Nota

Os serviços de IA do Azure não fornecem nenhum SLA (Service Level Agreement, contrato de nível de serviço) em relação à latência.

Escolha a região apropriada para o seu recurso Face

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

Recomendamos que você selecione uma região mais próxima de seus usuários para minimizar a latência. Se seus usuários estiverem distribuídos pelo mundo, considere criar vários recursos em regiões diferentes e rotear solicitações para a região mais próxima de seus clientes. Como alternativa, você pode escolher uma região que esteja perto do centro geográfico de todos os seus clientes.

Usar o armazenamento de blob do Azure para URLs remotas

O serviço Face fornece duas maneiras de carregar imagens para processamento: carregando os dados brutos de byte da imagem diretamente na solicitação ou fornecendo uma URL para uma imagem remota. Independentemente do método, o serviço Face precisa baixar a imagem de seu local de origem. Se a conexão do serviço Face com o cliente ou o servidor remoto for lenta ou fraca, isso afetará o tempo de resposta das solicitações. Se você tiver um problema com 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 de implementação, consulte Armazenando a imagem no Armazenamento de Blob Premium do Azure. Um exemplo de chamada de API:

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 Face. Isso reduz a latência da conexão entre o serviço Face e a conta de armazenamento.

Use tamanhos de arquivo ideais

Se os arquivos de imagem que você usa são grandes, isso afeta o tempo de resposta do serviço Face de duas maneiras:

  • Demora mais tempo a carregar o ficheiro.
  • O serviço leva mais tempo para processar o arquivo, proporcionalmente ao tamanho do arquivo.

A compensação entre precisão e velocidade da rede

A qualidade das imagens de entrada afeta a precisão e a latência do serviço Face. Imagens com qualidade inferior podem resultar em resultados errados. Imagens de maior qualidade podem permitir interpretações mais precisas. No entanto, imagens de maior qualidade também aumentam a latência da rede devido aos seus tamanhos de arquivo maiores. O serviço requer mais tempo para receber todo o arquivo do cliente e processá-lo, proporcionalmente ao tamanho do arquivo. Acima de um determinado nível, outras melhorias de qualidade não melhorarão significativamente a precisão.

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

Outras dicas de tamanho de arquivo

Observe as seguintes dicas adicionais:

  • Para deteção de rosto, ao usar o modelo DetectionModel.Detection01de deteção, reduzir o tamanho do arquivo de imagem aumenta a velocidade de processamento. Quando você usa o modelo DetectionModel.Detection02de deteção, reduzir o tamanho do arquivo de imagem só aumentará a velocidade de processamento se o arquivo de imagem for menor que 1920x1080 pixels.
  • Para reconhecimento facial, reduzir o tamanho do rosto só aumentará a velocidade se a imagem for menor que 200x200 pixels.
  • O desempenho dos métodos de deteção de rosto também depende de quantos rostos estão em uma imagem. O serviço Face pode devolver até 100 rostos para uma imagem. Os rostos são classificados pelo tamanho do retângulo facial de grande para pequeno.

Chame APIs em paralelo quando possível

Se você precisar chamar várias APIs, considere chamá-las em paralelo se o design do aplicativo permitir. Por exemplo, se você precisar detetar rostos em duas imagens para executar uma comparação de rostos, poderá 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);

Suave sobre o tráfego espinhoso

O desempenho do serviço Face pode ser afetado por picos de tráfego, que podem causar limitação, menor taxa de transferência e maior latência. Recomendamos que você aumente a frequência de chamadas de API gradualmente e evite tentativas imediatas. Por exemplo, se você tiver 3000 fotos para executar a deteção facial, não envie 3000 solicitações simultaneamente. Em vez disso, envie 3000 solicitações sequencialmente durante 5 minutos (ou seja, cerca de 10 solicitações por segundo) para tornar o tráfego de rede mais consistente. Se você quiser diminuir o tempo de conclusão, aumente o número de chamadas por segundo gradualmente para suavizar o tráfego. Se você encontrar algum erro, consulte Manipular erros efetivamente para lidar com a resposta.

Lide com erros de forma eficaz

Os erros 429 e 503 podem ocorrer em suas chamadas de API Face por vários motivos. Seu aplicativo deve estar sempre pronto para lidar com esses erros. Veja a seguir algumas recomendações:

Código de erro HTTP Description Recomendação
429 Limitação Você pode encontrar um limite de tarifa com chamadas simultâneas. Você deve diminuir a frequência de chamadas e tentar novamente com backoff exponencial. Evite repetições imediatas e evite reenviar várias solicitações simultaneamente.

Se quiser 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 ao seu pedido imediatamente. Você deve adotar uma estratégia de recuo semelhante à do erro 429.

Garanta confiabilidade e suporte

A seguir estão outras dicas para garantir a confiabilidade e o alto suporte do seu aplicativo:

  • Gere um GUID exclusivo como o cabeçalho da solicitação HTTP e envie-o client-request-id com cada solicitação. Isso ajuda a Microsoft a investigar quaisquer erros mais facilmente se você precisar relatar um problema com a Microsoft.
    • Registe sempre a client-request-id resposta recebida quando encontrar uma resposta inesperada. Se precisar de assistência, forneça essas informações ao Suporte da Microsoft, juntamente com 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. Certifique-se de que seu aplicativo possa lidar com erros de forma adequada e eficaz.

Próximos passos

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