W poprzednim bloguopisaliśmy kompleksowe rozwiązanie do weryfikacji tożsamości w jednym regionie AWS. Rozwiązanie wykorzystuje tzw Amazon Rekognition Pszczoła Wykryj twarze do wykrywania twarzy i PorównajTwarze do porównania twarzy. Uważamy te interfejsy API za bezstanowe interfejsy API, ponieważ nie zależą one od Amazon Rekognition kolekcja twarzy. Są również idempotentne, co oznacza, że powtarzające się wywołania z tymi samymi parametrami zwrócą ten sam wynik. Zapewniają one elastyczne opcje przekazywania obrazów, albo przez an Usługa Amazon Simple Storage (Amazon S3) lokalizacja lub surowe bajty.
W tym poście skupiamy się na Obraz rozpoznawania Amazon bezstanowych interfejsów API i omówić dwie opcje przekazywania obrazów oraz wybór jednej z nich z punktu widzenia architektury systemu. Następnie omówimy sposób skalowania bezstanowych interfejsów API w celu przezwyciężenia niektórych ograniczeń regionalnych. Mówiąc o skalowalności, często odnosimy się do maksymalnej liczby transakcji na sekundę (TPS), jaką może obsłużyć rozwiązanie. Na przykład podczas organizowania dużego wydarzenia, które wykorzystuje widzenie komputerowe do wykrywania twarzy lub etykiet obiektów, możesz napotkać skok ruchu i nie chcesz ograniczać systemu. Oznacza to, że czasami trzeba zwiększyć TPS, a nawet wyjść poza regionalny limit usług Amazon Rekognition API. W tym poście zaproponowano rozwiązanie zwiększające TPS bezstanowych interfejsów API przy użyciu wielu regionów.
Bezstanowe API Amazon Rekognition
Spośród dostępnych interfejsów API Amazon Rekognition Image, PorównajTwarze, Wykryj twarze, Wykryj etykiety, Wykryj etykiety moderacji, Wykryj sprzęt ochronny, Wykryj tekst, Rozpoznaj gwiazdy są bezpaństwowcami. Zapewniają opcje Amazon S3 i raw bytes do przekazywania obrazów. Na przykład w składni żądania pliku DetectFaces
API, istnieją dwie opcje do przekazania do Image
pole: Bytes
or S3Object
.
Podczas korzystania z S3Object
opcja, typowa architektura jest następująca.
To rozwiązanie ma następujący przepływ pracy:
- Aplikacja kliencka uzyskuje dostęp do strony internetowej hostowanej za pomocą Wzmocnienie AWS.
- Aplikacja kliencka jest uwierzytelniana i autoryzowana za pomocą Amazon Cognito.
- Aplikacja kliencka przesyła obraz do zasobnika S3.
- Amazon S3 wyzwala AWS Lambda funkcja wywołująca Amazon Rekognition.
- Funkcja Lambda wywołuje API Amazon Rekognition z opcją S3Object.
- Funkcja Lambda przechowuje wynik do an Amazon DynamoDB tabela.
Wybierz S3Object
opcję w następujących scenariuszach:
- Obraz jest plikiem w formacie PNG lub JPEG
- Wdrażasz cały stos w tym samym regionie, w którym dostępne jest Amazon Rekognition
- Regionalny limit usług Amazon Rekognition API spełnia Twoje wymagania systemowe
Jeśli nie spełniasz wszystkich tych wymagań, powinieneś wybrać Bytes
opcja.
Użyj bezstanowych interfejsów API Amazon Rekognition w innym regionie
Jeden przykład użycia Bytes
opcja jest wtedy, gdy chcesz wdrożyć swój przypadek użycia w regionie, w którym Amazon Rekognition nie jest ogólnie dostępny, na przykład, jeśli masz klientów w Ameryce Południowej (sa-east-1
) Region. W przypadku przechowywania danych musi znajdować się zasobnik S3, w którym przechowujesz obrazy użytkowników sa-east-1
, ale chcesz użyć Amazon Rekognition dla swojego rozwiązania, mimo że nie jest ono ogólnie dostępne w sa-east-1
. Jednym z rozwiązań jest użycie tzw Bytes
możliwość wywołania usługi Amazon Rekognition w innym regionie, w którym usługa Amazon Rekognition jest dostępna, np us-east-1
. Poniższy diagram ilustruje tę architekturę.
Po uruchomieniu funkcji Lambda (krok 4), zamiast wywoływać Amazon Rekognition bezpośrednio z lokalizacją S3 obrazu, funkcja musi pobrać obraz z zasobnika S3 (krok 5), a następnie wywołać Amazon Rekognition z nieprzetworzonymi bajtami obrazu (krok 6). Poniżej znajduje się fragment kodu funkcji Lambda:
Zwróć uwagę, że poprzedni fragment kodu działa bezpośrednio w przypadku formatów JPEG lub PNG. W przypadku innych formatów obrazów, takich jak BMP, konieczne jest dodatkowe przetwarzanie obrazu w celu przekonwertowania go na bajty JPEG lub PNG przed wysłaniem do Amazon Rekognition. Poniższy kod konwertuje BMP na bajty JPEG:
Skaluj TPS bezstanowych interfejsów API, rozkładając wywołania API na wiele regionów
Inny przypadek użycia Bytes
opcją jest skalowanie w górę TPS bezstanowych interfejsów API poprzez rozłożenie wywołań API na wiele regionów. W ten sposób nie jesteś ograniczony limitem usługi regionalnej API, ponieważ możesz uzyskać dodatkowe TPS z innych regionów.
W poniższym przykładzie tworzona jest funkcja Lambda w celu wywołania usługi Amazon Rekognition DetectLabels
API z Bytes
opcja. Aby zwiększyć maksymalny TPS, możesz rozłożyć wywołania API na wiele regionów za pomocą wag. Maksymalny TPS, jaki możesz osiągnąć, oblicza się ze wzoru: min(region_1_max_tps/region_1_weight, region_2_max_tps/region_2_weight, … region_n_max_tps/region_n_weight). Poniższy przykład używa us-east-1
i us-west-2
Regiony.
Fragment kodu do wywołania metody DetectLabels
API wygląda następująco:
Bo us-east-1
i us-west-2
oba mają maksymalnie 50 TPS dla Amazon Rekognition DetectFaces API, możesz równomiernie rozłożyć wywołania API z wagą 50/50, ustawiając zmienną środowiskową REGION_1_TRAFFIC_PERCENTAGE
do 50. W ten sposób teoretycznie możesz osiągnąć min(50/50%, 50/50%) = 100 TPS.
Aby zweryfikować ten pomysł, funkcja Lambda jest udostępniana jako interfejs API REST Brama Amazon API, następnie JMeter służy do testowania obciążenia interfejsu API.
REGION_1_TRAFFIC_PERCENTAGE
jest najpierw ustawiony na 100, w ten sposób wszystkie DetectFaces
Wywołania API są wysyłane do us-east-1
tylko. Teoretycznie maksymalny TPS, jaki można osiągnąć, jest ograniczony limitem usługi w us-east-1
, czyli 50 TPS. Test obciążenia na niestandardowym punkcie końcowym interfejsu API, zaczynając od 50 współbieżnych wątków, stopniowo dodając 5 wątków, aż ProvisionedThroughputExceededException
obserwowany jest powrót z Amazon Rekognition.
REGION_1_TRAFFIC_PERCENTAGE
jest następnie ustawiany na 50, w ten sposób wszystko DetectLabels
Wywołania API są równomiernie wysyłane do us-east-1
i us-west-2
. Teoretycznie maksymalny TPS, jaki można osiągnąć, to limit usług, który łączą oba regiony, czyli 100 TPS. Rozpocznij ponownie test obciążenia od 100 wątków, aby znaleźć maksymalny TPS.
W poniższej tabeli podsumowano wyniki testów obciążenia.
Procent wywołań interfejsu API DetectLabels do us-east-1 | Procent wywołań interfejsu API DetectLabels do usługi us-west-2 | Maksymalny TPS w teorii | Maksymalne jednoczesne przebiegi bez ProvisionedThroughputExceededException |
100 | 0 | 50 | 70 |
50 | 50 | 100 | 145 |
Wnioski
Wielu klientów korzysta z bezstanowych interfejsów API Amazon Rekognition Image do różnych zastosowań, w tym do weryfikacji tożsamości, moderowania treści, przetwarzania multimediów i nie tylko. W tym poście omówiono dwie opcje przekazywania obrazów i sposób korzystania z opcji surowych bajtów w następujących przypadkach użycia:
- Dostępność regionalna Amazon Rekognition
- Przechowywanie danych klienta
- Skalowanie TPS bezstanowych interfejsów API Amazon Rekognition
Sprawdź, jak Amazon Rekognition jest używany w różne przypadki użycia wizji komputerowej i rozpocznij swoją innowacyjną podróż.
O autorach
Sharon Lic jest architektem rozwiązań w firmie AWS z siedzibą w Bostonie w stanie Massachusetts. Pracuje z klientami korporacyjnymi, pomagając im rozwiązywać trudne problemy i budować na AWS. Poza pracą lubi spędzać czas z rodziną i zwiedzać lokalne restauracje.
Vaibhav Shah jest starszym architektem rozwiązań w AWS i lubi pomagać swoim klientom we wszystkich kwestiach związanych z chmurą oraz umożliwiać im wdrożenie chmury. Poza pracą uwielbia podróżować, odkrywać nowe miejsca i restauracje, gotować, uprawiać sporty, takie jak krykiet i piłka nożna, oglądać filmy i seriale (fan Marvela) oraz przygody, takie jak piesze wędrówki, skoki ze spadochronem, a lista jest długa.
- Zaawansowane (300)
- AI
- ai sztuka
- generator sztuki ai
- masz robota
- Amazon Rekognition
- sztuczna inteligencja
- certyfikacja sztucznej inteligencji
- sztuczna inteligencja w bankowości
- robot sztucznej inteligencji
- roboty sztucznej inteligencji
- oprogramowanie sztucznej inteligencji
- Uczenie maszynowe AWS
- blockchain
- konferencja blockchain ai
- pomysłowość
- sztuczna inteligencja konwersacyjna
- konferencja kryptograficzna
- Dall's
- głęboka nauka
- google to
- uczenie maszynowe
- plato
- Platon Ai
- Analiza danych Platona
- Gra Platona
- PlatoDane
- platogaming
- skala ai
- składnia
- Instrukcje techniczne
- zefirnet