Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questa guida descrive come ridurre la latenza di rete e migliorare le prestazioni del servizio quando si usa il servizio Viso di Azure. La velocità e le prestazioni dell'applicazione influiscono sull'esperienza degli utenti finali, ad esempio le persone che si registrano e usano il 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 tramite una 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 Azure per intelligenza artificiale.
Nota
Servizi di Azure AI non forniscono alcun contratto di servizio per quanto riguarda la latenza.
Scegliere l'area appropriata per la risorsa Viso
La latenza di rete, ovvero il tempo necessario per il trasferimento delle informazioni dall'origine (l'applicazione) alla destinazione (risorsa di Azure), è fortemente influenzata 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, mentre gli utenti in Asia riscontrano un ritardo maggiore.
È consigliabile selezionare l'area più vicina agli utenti per ridurre al minimo la latenza. Se gli utenti sono 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 Archiviazione BLOB di Azure per gli URL remoti
Il servizio Viso offre due modi per caricare immagini per l'elaborazione: caricare i dati di tipo 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 relativo percorso di origine. Se la connessione dal servizio Viso al client o al server remoto è lenta o scadente, ciò 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 l'argomento relativo all'archiviazione dell'immagine in Archiviazione BLOB Premium di Azure. Una chiamata API di esempio:
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;
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 di file ottimali
I file di immagine usati di grandi dimensioni influiscono 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.
Considerare i suggerimenti aggiuntivi seguenti:
- Per il rilevamento del viso, quando si usa il modello di rilevamento
FaceDetectionModel.Detection01
, la riduzione delle dimensioni del file di immagine aumenta la velocità di elaborazione. Quando si usa il modello di rilevamentoFaceDetectionModel.Detection02
, 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 d rilevamento dei visi 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.
Compromesso tra accuratezza 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 restituire risultati errati. Le immagini di qualità superiore possono garantire interpretazioni più precise. Tuttavia, le immagini di qualità superiore aumentano anche la latenza di rete perché le dimensioni dei file sono maggiori. Il servizio richiede più tempo per ricevere l'intero file dal client ed elaborarlo, in proporzione alle dimensioni del file. Superato 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.
- Per le operazioni di rilevamento e riconoscimento dei visi, vedere Dati di input per il rilevamento dei visi e Dati di input per il riconoscimento dei visi.
- Per il rilevamento della mimica facciale, vedere l'esercitazione.
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 chiamare le API in un'attività asincrona:
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);
Uniformare i picchi di traffico
Le prestazioni del servizio Viso possono essere influenzate da picchi di traffico, che possono causare limitazioni delle richieste, riduzione della velocità effettiva e una latenza più elevata. È consigliabile aumentare gradualmente la frequenza delle chiamate API ed evitare nuovi tentativi immediati. Ad esempio, in presenza di 3000 foto su cui eseguire il rilevamento facciale, non inviare 3000 richieste contemporaneamente. Inviare invece 3000 richieste in sequenza nell'arco di più di 5 minuti (ovvero circa 10 richieste al secondo) per rendere il traffico di rete più coerente. Se si vuole 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 in presenza di chiamate simultanee. È consigliabile ridurre la frequenza delle chiamate e riprovare con backoff esponenziale. Evitare nuovi tentativi immediati ed evitare l'invio simultaneo di numerose richieste.
Per aumentare il limite, vedere l'argomento relativo alla richiesta di un aumento delle quote. |
503 |
Servizio non disponibile | Il servizio potrebbe essere occupato e incapace di rispondere immediatamente alla richiesta. È consigliabile adottare una strategia di backoff simile a quella valida per l'errore 429 . |
Garantire affidabilità e supporto
Di seguito sono riportati altri suggerimenti per garantire elevati livelli di affidabilità e supporto dell'applicazione:
- Generare un GUID univoco come intestazione della richiesta HTTP
client-request-id
e inviarlo con ogni richiesta. Ciò consente a Microsoft di analizzare più facilmente eventuali errori se è necessario segnalare un problema a Microsoft.- Registrare sempre
client-request-id
e la risposta ricevuta quando si verifica una risposta imprevista. Se è necessaria assistenza, fornire queste informazioni al supporto tecnico Microsoft, insieme all'ID risorsa di Azure e all'ora in cui si è verificato il problema.
- Registrare sempre
- Eseguire un test pilota prima di rilasciare l'applicazione nell'ambiente di produzione. Assicurarsi che l'applicazione sia in grado di gestire gli errori in modo corretto ed efficace.
Passaggio successivo
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 combini la logica lato server e lato client per eseguire il rilevamento della mimica facciale degli utenti.