Condividi tramite


Ridurre la latenza e migliorare le prestazioni

Questa guida descrive come attenuare la latenza di rete e migliorare le prestazioni del servizio quando si usa il servizio Viso. La velocità e le prestazioni dell'applicazione influiranno sull'esperienza degli utenti finali, ad esempio le persone che si registrano e usano un sistema di identificazione del viso.

Attenuare la latenza

È possibile riscontrare la latenza quando si usa il servizio Viso. La latenza si riferisce a qualsiasi tipo di ritardo che si verifica quando i sistemi comunicano in rete. In generale, le possibili cause della latenza includono:

  • La distanza fisica di ogni pacchetto deve spostarsi dall'origine alla destinazione.
  • Problemi con il mezzo di trasmissione.
  • Errori nei router o commutatori lungo il percorso di trasmissione.
  • Tempo richiesto dalle applicazioni antivirus, dai firewall e da altri meccanismi di sicurezza per esaminare i pacchetti.
  • Malfunzionamenti nelle applicazioni client o server.

Questa sezione descrive come attenuare varie cause di latenza specifiche del servizio Viso di intelligenza artificiale di Azure.

Nota

I servizi di intelligenza artificiale di Azure non forniscono alcun contratto di servizio per quanto riguarda la latenza.

Scegliere l'area appropriata per la risorsa Viso

La latenza di rete, il tempo necessario per il trasferimento delle informazioni dall'origine (l'applicazione) alla destinazione (risorsa di Azure) è fortemente influenzato dalla distanza geografica tra l'applicazione che effettua richieste e il server di Azure che risponde a tali richieste. Ad esempio, se la risorsa Viso si trova in EastUS, ha un tempo di risposta più rapido per gli utenti di New York e gli utenti in Asia riscontrano un ritardo più lungo.

È consigliabile selezionare un'area più vicina agli utenti per ridurre al minimo la latenza. Se gli utenti vengono distribuiti in tutto il mondo, è consigliabile creare più risorse in aree diverse e instradare le richieste all'area più vicina ai clienti. In alternativa, è possibile scegliere un'area vicina al centro geografico di tutti i clienti.

Usare l'archiviazione BLOB di Azure per gli URL remoti

Il servizio Viso offre due modi per caricare immagini per l'elaborazione: caricare i dati di byte non elaborati dell'immagine direttamente nella richiesta o fornire un URL a un'immagine remota. Indipendentemente dal metodo , il servizio Viso deve scaricare l'immagine dal percorso di origine. Se la connessione dal servizio Viso al client o dal server remoto è lenta o scarsa, influisce sul tempo di risposta delle richieste. Se si verifica un problema di latenza, è consigliabile archiviare l'immagine in Archiviazione BLOB di Azure e passare l'URL dell'immagine nella richiesta. Per altre informazioni sull'implementazione, vedere Archiviazione dell'immagine nell'Archiviazione BLOB Premium di Azure. Una chiamata API di esempio:

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

Assicurarsi di usare un account di archiviazione nella stessa area della risorsa Viso. In questo modo si riduce la latenza della connessione tra il servizio Viso e l'account di archiviazione.

Usare dimensioni file ottimali

Se i file di immagine usati sono di grandi dimensioni, influisce sul tempo di risposta del servizio Viso in due modi:

  • Il caricamento del file richiede più tempo.
  • Il servizio richiede più tempo per elaborare il file, in proporzione alle dimensioni del file.

Compromesso tra precisione e velocità di rete

La qualità delle immagini di input influisce sia sull'accuratezza che sulla latenza del servizio Viso. Le immagini con una qualità inferiore possono causare risultati errati. Le immagini di qualità superiore possono consentire interpretazioni più precise. Tuttavia, le immagini di qualità superiore aumentano anche la latenza di rete a causa delle dimensioni dei file più grandi. Il servizio richiede più tempo per ricevere l'intero file dal client e elaborarlo, in proporzione alle dimensioni del file. Al di sopra di un determinato livello, ulteriori miglioramenti qualitativi non miglioreranno significativamente l'accuratezza.

Per ottenere un equilibrio ottimale tra accuratezza e velocità, seguire questi suggerimenti per ottimizzare i dati di input.

Altri suggerimenti per le dimensioni dei file

Si notino i suggerimenti aggiuntivi seguenti:

  • Per il rilevamento dei volti, quando si usa il modello DetectionModel.Detection01di rilevamento , la riduzione delle dimensioni del file di immagine aumenta la velocità di elaborazione. Quando si usa il modello DetectionModel.Detection02di rilevamento , la riduzione delle dimensioni del file di immagine aumenterà solo la velocità di elaborazione se il file di immagine è inferiore a 1920x1080 pixel.
  • Per il riconoscimento del viso, la riduzione delle dimensioni del viso aumenterà solo la velocità se l'immagine è inferiore a 200x200 pixel.
  • Le prestazioni dei metodi di rilevamento dei volti dipendono anche dal numero di visi presenti in un'immagine. Il servizio Viso può restituire fino a 100 visi per un'immagine. I visi vengono classificati in base alle dimensioni del rettangolo del viso da grandi a piccole.

Chiamare le API in parallelo, quando possibile

Se è necessario chiamare più API, è consigliabile chiamarle in parallelo se la progettazione dell'applicazione lo consente. Ad esempio, se è necessario rilevare i visi in due immagini per eseguire un confronto dei visi, è possibile chiamarli in un'attività asincrona:

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

Smooth over spiky traffic

Le prestazioni del servizio Viso possono essere influenzate da picchi di traffico, che possono causare limitazioni, velocità effettiva inferiore e una latenza più elevata. È consigliabile aumentare gradualmente la frequenza delle chiamate API ed evitare tentativi immediati. Ad esempio, se hai 3000 foto su cui eseguire il rilevamento facciale, non inviare 3000 richieste contemporaneamente. Inviare invece 3000 richieste in sequenza in più di 5 minuti (ovvero circa 10 richieste al secondo) per rendere il traffico di rete più coerente. Se si desidera ridurre il tempo di completamento, aumentare gradualmente il numero di chiamate al secondo per uniformare il traffico. Se si verifica un errore, fare riferimento a Gestire gli errori in modo efficace per gestire la risposta.

Gestire gli errori in modo efficace

Gli errori 429 e 503 possono verificarsi nelle chiamate API Viso per vari motivi. L'applicazione deve essere sempre pronta per gestire questi errori. Di seguito sono elencati alcuni suggerimenti:

Codice di errore HTTP Descrizione Elemento consigliato
429 Limitazione È possibile che si verifichi un limite di frequenza con chiamate simultanee. È consigliabile ridurre la frequenza delle chiamate e riprovare con backoff esponenziale. Evitare tentativi immediati ed evitare l'invio simultaneo di numerose richieste.

Per aumentare il limite, vedere la sezione Richiedere un aumento della guida alle quote.
503 Servizio non disponibile Il servizio potrebbe essere occupato e non è in grado di rispondere immediatamente alla richiesta. È consigliabile adottare una strategia di back-off simile a quella per l'errore 429.

Garantire affidabilità e supporto

Di seguito sono riportati altri suggerimenti per garantire l'affidabilità e il supporto elevato dell'applicazione:

  • Generare un GUID univoco come intestazione della client-request-id richiesta HTTP e inviarlo con ogni richiesta. Ciò consente a Microsoft di analizzare più facilmente eventuali errori se è necessario segnalare un problema con Microsoft.
    • Registrare sempre e client-request-id la risposta ricevuta quando si verifica una risposta imprevista. Se è necessaria assistenza, fornire queste informazioni per supporto tecnico Microsoft, insieme all'ID risorsa di Azure e al periodo di tempo in cui si è verificato il problema.
  • Eseguire un test pilota prima di rilasciare l'applicazione nell'ambiente di produzione. Assicurarsi che l'applicazione possa gestire gli errori in modo corretto ed efficace.

Passaggi successivi

In questa guida si è appreso come migliorare le prestazioni quando si usa il servizio Viso. Successivamente, seguire l'esercitazione per configurare una soluzione software funzionante che combina la logica lato server e lato client per eseguire il rilevamento del liveness sugli utenti.