Sdílet prostřednictvím


Zmírnění latence a zvýšení výkonu

Tato příručka popisuje, jak zmírnit latenci sítě a zlepšit výkon služby při používání služby Azure Face. Rychlost a výkon vaší aplikace ovlivní prostředí koncových uživatelů, jako jsou lidé, kteří se zaregistrují a používají systém identifikace tváře.

Zmírnění latence

Při používání služby Rozpoznávání tváře může dojít k latenci. Latence označuje jakýkoli druh zpoždění, ke kterému dochází, když systémy komunikují přes síť. Mezi možné příčiny latence obecně patří:

  • Fyzická vzdálenost každého paketu musí cestovat ze zdroje do cíle.
  • Problémy s přenosovým médium.
  • Chyby ve směrovačích nebo přepínačích podél přenosové cesty
  • Doba potřebná antivirovými aplikacemi, bránami firewall a dalšími mechanismy zabezpečení ke kontrole paketů.
  • Poruchy v klientských nebo serverových aplikacích

Tato část popisuje, jak můžete zmírnit různé příčiny latence specifické pro službu Azure AI Face.

Poznámka:

Služby Azure AI neposkytují žádnou smlouvu o úrovni služeb (SLA) týkající se latence.

Zvolte odpovídající oblast pro prostředek rozpoznávání tváře.

Latence sítě, doba potřebnou k přesunu informací ze zdroje (vaší aplikace) do cíle (prostředek Azure) je silně ovlivněna geografickou vzdáleností mezi aplikací provádějícími požadavky a serverem Azure, který na tyto požadavky reaguje. Pokud se například prostředek rozpoznávání tváře nachází, EastUSmá rychlejší dobu odezvy pro uživatele v New Yorku a uživatelé v Asii mají delší zpoždění.

Doporučujeme vybrat oblast, která je nejblíže vašim uživatelům, aby se minimalizovala latence. Pokud jsou vaši uživatelé distribuovaní po celém světě, zvažte vytvoření více prostředků v různých oblastech a žádosti o směrování do nejbližší oblasti vašim zákazníkům. Případně můžete zvolit oblast, která se nachází blízko geografického centra všech vašich zákazníků.

Použití úložiště objektů blob v Azure pro vzdálené adresy URL

Služba Rozpoznávání tváře nabízí dva způsoby, jak nahrát obrázky ke zpracování: nahrání nezpracovaných bajtů obrázku přímo v požadavku nebo poskytnutí adresy URL vzdálenému obrázku. Bez ohledu na metodu musí služba Rozpoznávání tváře stáhnout obrázek ze zdrojového umístění. Pokud je připojení ze služby Rozpoznávání tváře k klientovi nebo vzdálenému serveru pomalé nebo špatné, ovlivní dobu odezvy požadavků. Pokud máte problém s latencí, zvažte uložení image ve službě Azure Blob Storage a předání adresy URL obrázku v požadavku. Další podrobnosti o implementaci najdete v tématu uložení image ve službě Azure Premium Blob Storage. Příklad volání rozhraní 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;

Nezapomeňte použít účet úložiště ve stejné oblasti jako prostředek rozpoznávání tváře. Tím se sníží latence připojení mezi službou Rozpoznávání tváře a účtem úložiště.

Použití optimálních velikostí souborů

Pokud jsou soubory obrázků, které používáte, velké, ovlivní dobu odezvy služby Rozpoznávání tváře dvěma způsoby:

  • Nahrání souboru trvá déle.
  • Zpracování souboru trvá více času službou, a to v poměru k velikosti souboru.

Všimněte si následujících dalších tipů:

  • Při rozpoznávání tváře při použití modelu FaceDetectionModel.Detection01detekce se snížením velikosti souboru obrázku zvýší rychlost zpracování. Při použití modelu FaceDetectionModel.Detection02detekce se zmenšení velikosti souboru obrázku zvýší rychlost zpracování pouze v případě, že je soubor obrázku menší než 1920 × 1080 pixelů.
  • Při rozpoznávání tváře se zmenšení velikosti tváře zvětší rychlost jenom v případě, že je obrázek menší než 200 × 200 pixelů.
  • Výkon metod rozpoznávání tváře také závisí na tom, kolik tváří je na obrázku. Služba Rozpoznávání tváře může pro obrázek vrátit až 100 tváří. Tváře jsou seřazené podle velikosti obdélníku tváře od velkých po malé.

Kompromis mezi přesností a rychlostí sítě

Kvalita vstupních obrázků ovlivňuje přesnost i latenci služby Rozpoznávání tváře. Obrázky s nižší kvalitou můžou vést k chybným výsledkům. Obrázky s vyšší kvalitou mohou umožňovat přesnější interpretace. Obrázky s vyšší kvalitou ale také zvyšují latenci sítě kvůli jejich větším velikostem souborů. Služba vyžaduje více času, než obdrží celý soubor od klienta a zpracuje ho v poměru k velikosti souboru. Vyšší než určitá úroveň, další vylepšení kvality výrazně nezlepší přesnost.

Pokud chcete dosáhnout optimální rovnováhy mezi přesností a rychlostí, postupujte podle těchto tipů a optimalizujte vstupní data.

Paralelní volání rozhraní API, pokud je to možné

Pokud potřebujete volat více rozhraní API, zvažte jejich paralelní volání, pokud to návrh vaší aplikace umožňuje. Pokud například potřebujete rozpoznat tváře na dvou obrázcích, abyste provedli porovnání tváří, můžete je volat v asynchronní úloze:

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

Plynulý provoz přes spiky

Na výkon služby Rozpoznávání tváře můžou mít vliv špičky provozu, což může způsobit omezování, nižší propustnost a vyšší latenci. Doporučujeme zvýšit frekvenci volání rozhraní API postupně a vyhnout se okamžitým opakovaným pokusům. Pokud máte například 3000 fotek k detekci obličeje, neodesílejte současně 3000 požadavků. Místo toho odešlete 3000 požadavků postupně více než 5 minut (tj. přibližně 10 požadavků za sekundu), aby byl síťový provoz konzistentnější. Pokud chcete zkrátit dobu dokončení, zvyšte počet volání za sekundu postupně, aby se provoz vyhladit. Pokud dojde k nějaké chybě, projděte si informace o efektivním zpracování chyb pro zpracování odpovědi.

Efektivní zpracování chyb

K chybám 429 a 503 může docházet k volání rozhraní API pro rozpoznávání tváře z různých důvodů. Vaše aplikace musí být vždy připravená ke zpracování těchto chyb. Tady je několik doporučení:

Kód chyby HTTP Popis Doporučení
429 Omezování U souběžných volání můžete narazit na limit rychlosti. Měli byste snížit frekvenci volání a opakovat s exponenciálním zpožováním. Vyhněte se okamžitým opakovaným pokusům a vyhněte se opakovanému odesílání mnoha požadavků současně.

Pokud chcete limit zvýšit, přečtěte si část Žádost o navýšení průvodce kvótami.
503 Nedostupná služba Služba může být zaneprázdněná a nemůže okamžitě odpovědět na vaši žádost. Měli byste přijmout back-off strategii podobnou té pro chybu 429.

Zajištění spolehlivosti a podpory

Tady jsou další tipy, které vám pomůžou zajistit spolehlivost a vysokou podporu vaší aplikace:

  • Vygenerujte jedinečný identifikátor GUID jako hlavičku client-request-id požadavku HTTP a odešlete ho s každým požadavkem. To pomáhá microsoftu snadněji prošetřit případné chyby, pokud potřebujete nahlásit problém s Microsoftem.
    • Vždy nahrajte client-request-id odpověď a odpověď, kterou jste dostali, když narazíte na neočekávanou odpověď. Pokud potřebujete pomoc, poskytněte tyto informace podpora Microsoftu spolu s ID prostředku Azure a časovým obdobím, kdy k problému došlo.
  • Před uvolněním aplikace do produkčního prostředí proveďte pilotní test. Ujistěte se, že vaše aplikace dokáže správně a efektivně zpracovávat chyby.

Další krok

V této příručce jste zjistili, jak zlepšit výkon při používání služby Rozpoznávání tváře. Dále postupujte podle tohoto kurzu a nastavte funkční softwarové řešení, které kombinuje logiku na straně serveru a na straně klienta, aby se uživatelé mohli setkat s detekcí živého života.