Service Mesh dla uczenia maszynowego a tradycyjne bramy API
Sieci usług zbudowane dla obciążeń uczenia maszynowego obsługują dynamiczny, wysokonakładowy ruch wnioskowania z precyzyjnym zarządzaniem ruchem, podczas gdy tradycyjne bramy API koncentrują się na routingu żądań, uwierzytelnianiu i ograniczaniu przepustowości dla standardowych mikrousług. Wybór między nimi zależy od tego, czy głównym celem jest obserwowalność i wersjonowanie modeli specyficzne dla uczenia maszynowego, czy też uniwersalna orkiestracja API.
Najważniejsze informacje
Siatki usług zapewniają natywny podział ruchu w przypadku wdrożeń w modelu kanarkowym, natomiast bramy API wymagają niestandardowej konfiguracji.
Bramy API dodają opóźnienie tylko na brzegu, natomiast boczne elementy usługi mesh dodają narzut na każdym wewnętrznym przeskoku.
Siatki usług umożliwiają rozproszone śledzenie w obrębie procesów uczenia maszynowego, zapewniając widoczność, jakiej nie są w stanie zapewnić bramy API.
Trasowanie uwzględniające procesor GPU jest możliwe w przypadku siatek usług, ale nie jest funkcją tradycyjnych bram API.
Czym jest Service Mesh dla ML?
Warstwa infrastruktury przeznaczona do zarządzania komunikacją między usługami ML, obsługi ruchu wnioskowania, wersjonowania modeli i routingu uwzględniającego GPU.
Sieci usług, takie jak Istio i Linkerd, można rozszerzyć o komponenty specyficzne dla uczenia maszynowego, takie jak KServe, służące do kierowania wnioskowaniem.
Obsługują zaawansowany podział ruchu, umożliwiając wdrożenia typu canary oraz testowanie A/B nowych wersji modeli w środowisku produkcyjnym.
Wbudowany wzajemny protokół TLS (mTLS) zabezpiecza komunikację między mikrousługami bez konieczności wprowadzania zmian w kodzie aplikacji.
Serwery proxy typu sidecar, takie jak Envoy, zbierają szczegółowe dane telemetryczne dla każdego żądania, w tym informacje o opóźnieniach, współczynnikach błędów i rozmiarach danych dla wywołań wnioskowania uczenia maszynowego.
Siatki usług integrują się z natywnymi platformami ML Kubernetes, dzięki czemu doskonale nadają się do środowisk obsługujących model natywny dla chmury.
Czym jest Tradycyjne bramy API?
Centralny punkt wejścia, który kieruje żądaniami API, wymusza uwierzytelnianie, stosuje limity przepustowości i przekształca ładunki dla usług zaplecza.
Do popularnych bram API należą Kong, Apigee, AWS API Gateway i NGINX, powszechnie wykorzystywane w środowiskach korporacyjnych.
Zazwyczaj działają na skraju sieci, obsługując ruch północ-południe między klientami i usługami zaplecza.
Bramy API umożliwiają translację protokołów, konwertując żądania REST, gRPC lub WebSocket na formaty zgodne z zapleczem.
Większość z nich obsługuje domyślnie OAuth 2.0, walidację JWT i zarządzanie kluczami API w celu zabezpieczenia publicznych punktów końcowych.
Zazwyczaj są one bezstanowe i zoptymalizowane pod kątem wzorców żądanie-odpowiedź, a nie długotrwałych połączeń strumieniowych, powszechnych we wnioskowaniu uczenia maszynowego.
Tabela porównawcza
Funkcja
Service Mesh dla ML
Tradycyjne bramy API
Podstawowy przypadek użycia
Zarządzanie ruchem wnioskowania ML i wersjonowanie modelu
Ogólne kierowanie i koordynacja żądań API
Wzór ruchu
Połączenia wnioskowe wschód-zachód (usługa-usługa) i połączenia o dużej liczbie połączeń
Żądanie-odpowiedź północ-południe (klient-usługa)
Model wdrożenia
Serwer proxy sidecar obok każdej usługi (np. Envoy, Linkerd-proxy)
Centralna brama wdrożona na krawędzi sieci
Obsługa wersjonowania modeli
Natywny podział ruchu dla wdrożeń w modelu kanarkowym i niebiesko-zielonym
Ograniczone; zwykle wymaga niestandardowych reguł routingu
Obserwowalność
Metryki dla każdego żądania, śledzenie rozproszone i telemetria specyficzna dla uczenia maszynowego
Agregowane metryki, podstawowe rejestrowanie i liczba żądań
Funkcje bezpieczeństwa
Automatyczny mTLS między usługami, szczegółowe zasady autoryzacji
Walidacja klucza API, OAuth 2.0, JWT i biała lista adresów IP
Trasowanie uwzględniające GPU
Możliwość wyznaczania tras na podstawie dostępności procesora GPU i wykorzystania zasobów
Nieobsługiwane natywnie
Opóźnienie narzutu
Zwykle 1-3 ms na przeskok ze względu na przetwarzanie boczne
Ogólnie rzecz biorąc, niższe dla połączeń bramowych z pojedynczym skokiem
Najlepiej nadaje się do
Platformy ML oparte na Kubernetesie z mikrousługami
Publiczne interfejsy API, mobilne zaplecze i monolityczna ekspozycja usług
Szczegółowe porównanie
Zarządzanie ruchem i wdrażanie modeli
Sieci usług doskonale radzą sobie ze złożonymi wzorcami ruchu generowanymi przez systemy uczenia maszynowego, szczególnie gdy zespoły muszą stopniowo wdrażać nowe wersje modeli. Umożliwiają one podział ruchu między wersjami modelu na poziomie infrastruktury, dzięki czemu nowy model może obsługiwać 5% żądań, podczas gdy stary obsługuje resztę. Tradycyjne bramy API umożliwiają podobne podziały za pomocą niestandardowych reguł routingu, ale nie zostały zaprojektowane z myślą o wersjonowaniu modeli, co sprawia, że konfiguracja jest bardziej krucha i trudniejsza do utrzymania w odpowiedniej skali.
Obserwowalność i debugowanie
Gdy coś pójdzie nie tak z potokiem wnioskowania ML, trzeba wiedzieć, czy problem dotyczy modelu, danych, czy sieci. Siatki usług zapewniają rozproszone śledzenie, które śledzi żądanie w wielu usługach, rejestrując opóźnienie na każdym przeskoku i korelując je z konkretnymi wersjami modelu. Bramy API oferują przyzwoite rejestrowanie i metryki, ale zazwyczaj zatrzymują się na granicy bramy, pozostawiając Ci możliwość poskładania tego, co wydarzyło się w siatce usług lub środowisku mikrousług.
Architektura bezpieczeństwa
Oba podejścia poważnie traktują bezpieczeństwo, ale rozwiązują różne problemy. Sieci Service Mesh wymuszają model sieciowy „zero trust” poprzez automatyczne szyfrowanie całej komunikacji między usługami za pomocą protokołu mTLS, co ma znaczenie w przypadku przepływu wrażliwych danych wnioskowania między dziesiątkami mikrousług. Bramy API koncentrują się na bezpieczeństwie obwodowym, weryfikując legalność żądań przychodzących, zanim dotrą one do zaplecza. W przypadku systemów uczenia maszynowego przetwarzających dane regulowane, takie jak dane dotyczące opieki zdrowotnej czy informacje finansowe, połączenie obu warstw często okazuje się najbardziej sensowne.
Świadomość zasobów i optymalizacja GPU
Obciążenia uczenia maszynowego (ML) zachowują się inaczej niż typowe usługi sieciowe, ponieważ często obciążają procesory graficzne (GPU) i wymagają dużej ilości pamięci. Niektóre implementacje siatki usług można skonfigurować tak, aby kierowały żądania w oparciu o dostępność procesorów graficznych (GPU), wysyłając ruch do węzłów z dostępną mocą akceleratora. Tradycyjne bramy API nie mają pojęcia o podstawowych zasobach sprzętowych, traktując każdy backend jak czarną skrzynkę. To sprawia, że są mniej wydajne, gdy zachodzi potrzeba maksymalizacji kosztownego wykorzystania procesorów graficznych w całej flocie serwerów wnioskowania.
Złożoność operacyjna
Siatki usług wprowadzają dodatkowe obciążenie operacyjne, ponieważ każda usługa otrzymuje serwer proxy sidecar, który należy wdrożyć, monitorować i aktualizować. Dla zespołu, który zna już Kubernetes, jest to wykonalne, ale wiąże się z koniecznością nauki. Bramy API są zazwyczaj prostsze w obsłudze, ponieważ stanowią pojedynczy komponent, chociaż bramy korporacyjne, takie jak Apigee, charakteryzują się własną złożonością w zakresie portali dla deweloperów i zarządzania produktami API.
Kompromisy między kosztami a wydajnością
Wzorzec sidecar w sieciach usług dodaje opóźnienie na każdym przeskoku, zazwyczaj kilka milisekund, co może się nasilać w głębokich łańcuchach mikrousług. W przypadku aplikacji uczenia maszynowego wrażliwych na opóźnienia, takich jak systemy rekomendacji w czasie rzeczywistym, ten narzut ma znaczenie. Bramy API dodają opóźnienie tylko raz na brzegu, co czyni je bardziej przewidywalnymi w przypadku prostych wzorców żądanie-odpowiedź. Jednak koszty operacyjne uruchomienia siatki usług na dużą skalę można zrekompensować skróconym czasem debugowania i lepszym bezpieczeństwem wdrażania modeli uczenia maszynowego.
Zalety i wady
Service Mesh dla ML
Zalety
+Wersjonowanie modelu natywnego
+Szczegółowa kontrola ruchu
+Automatyczne szyfrowanie mTLS
+Głęboka obserwacja
+Trasowanie uwzględniające GPU
Zawartość
−Wyższa złożoność operacyjna
−Dodano opóźnienie na przeskok
−Bardziej stroma krzywa uczenia się
−Narzut zasobów z wózków bocznych
Tradycyjne bramy API
Zalety
+Łatwiejsze wdrożenie
+Niższe opóźnienie
+Dojrzały ekosystem
+Silne funkcje uwierzytelniania
Zawartość
−Ograniczona wersja modelu
−Brak świadomości GPU
−Słabsza wewnętrzna obserwowalność
−Mniej nadaje się do ruchu wschód-zachód
Częste nieporozumienia
Mit
Sieci usług i bramy API robią to samo, a Ty potrzebujesz tylko jednej.
Rzeczywistość
Służą różnym celom. Bramy API zarządzają ruchem północ-południe na krawędzi, podczas gdy siatki usług obsługują ruch wschód-zachód między usługami. Wiele organizacji korzysta z obu jednocześnie, a każda z nich zajmuje się tym, co robi najlepiej.
Mit
Bramy API mogą obsługiwać wersjonowanie modelu ML tak samo dobrze jak siatka usług.
Rzeczywistość
Bramy API mogą wyznaczać trasy na podstawie nagłówków lub ścieżek, ale brakuje im głębokiej integracji z systemami wdrażania, jaką oferują siatki usług. Wycofanie problematycznej wersji modelu jest szybsze i bezpieczniejsze w przypadku siatki usług, ponieważ podziały ruchu można dynamicznie dostosowywać bez konieczności ponownego wdrażania konfiguracji bram.
Mit
Sieci usług powodują zbyt duże opóźnienia w produkcyjnych systemach ML.
Rzeczywistość
Nowoczesne proxy sidecar, takie jak Envoy i Linkerd-proxy, dodają zaledwie 1-3 milisekundy na przeskok w większości testów porównawczych. W przypadku większości obciążeń wnioskowania ML ten narzut jest pomijalny w porównaniu z rzeczywistym czasem wnioskowania modelu, który często wynosi 10-100 milisekund lub więcej.
Mit
Nie potrzebujesz siatki usług, jeśli masz już bramę API.
Rzeczywistość
Brama API chroni obwód, ale nie zabezpiecza ani nie monitoruje ruchu między usługami wewnętrznymi. W architekturze mikrousług z dziesiątkami usług, siatka usług zapewnia bezpieczeństwo i możliwość obserwacji na poziomie zero-trust, czego brama API po prostu nie potrafi.
Mit
Siatki usług są przydatne wyłącznie w środowiskach Kubernetes.
Rzeczywistość
Chociaż siatki usług są najczęściej kojarzone z Kubernetesem, implementacje takie jak Consul Connect i Linkerd mogą działać zarówno na maszynach wirtualnych, jak i na serwerach fizycznych. Wzorzec sidecar działa wszędzie tam, gdzie można wdrożyć serwer proxy wraz z aplikacją.
Często zadawane pytania
Czy sieć usług może całkowicie zastąpić bramkę API?
Teoretycznie tak, ale rzadko jest to praktyczne. Sieci usług mogą obsługiwać ruch brzegowy za pomocą bram wejściowych, ale brakuje im funkcji takich jak portale dla deweloperów, zarządzanie produktami API i rozliczanie subskrypcji, które oferują korporacyjne bramy API. Większość zespołów używa sieci usług do obsługi ruchu wewnętrznego i bramy API do obsługi interfejsów API skierowanych na zewnątrz.
Co jest lepsze do wdrożenia modelu ML: sieć usług czy brama API?
Sieci usług są generalnie lepsze do wdrażania modeli uczenia maszynowego, ponieważ obsługują podział ruchu, wersje kanarkowe i automatyczne wycofywanie na poziomie infrastruktury. Bramy API mogą kierować do różnych wersji modelu, ale wymagają ręcznych zmian w konfiguracji i nie integrują się tak ściśle z procesami wdrażania uczenia maszynowego.
Jakie opóźnienie generuje sieć usług w porównaniu z bramą API?
Sidecary sieci usługowej zazwyczaj dodają 1-3 milisekundy na przeskok, a ponieważ ruch może przechodzić przez wiele sidecarów w łańcuchu mikrousług, łączny narzut może wynosić 5-15 milisekund. Bramy API dodają opóźnienie tylko raz na brzegu, zazwyczaj łącznie 1-5 milisekund. W przypadku aplikacji, w których opóźnienie jest krytyczne, ta różnica ma znaczenie.
Czy dla mojej platformy ML potrzebuję zarówno sieci usług, jak i bramy API?
Jeśli Twoja platforma ML udostępnia interfejsy API klientom zewnętrznym i komunikuje się również z wewnętrznymi mikrousługami, korzystanie z obu jest powszechne i zalecane. Brama API obsługuje uwierzytelnianie i ograniczanie przepustowości dla ruchu zewnętrznego, natomiast siatka usług zarządza wewnętrzną komunikacją między usługami, mTLS i możliwością obserwacji.
Jakie są najpopularniejsze implementacje siatki usług dla obciążeń ML?
Istio, Linkerd i Consul Connect to najpopularniejsze siatki usług. W przypadku obciążeń specyficznych dla uczenia maszynowego (ML), KServe i Seldon Core integrują się z tymi siatkami, zapewniając obsługę modeli z zarządzaniem ruchem. Platforma inferencyjna NVIDIA wykorzystuje również wzorce siatki usług do routingu z uwzględnieniem GPU.
Czy bramy API obsługują ruch gRPC na potrzeby wnioskowania ML?
Tak, większość nowoczesnych bramek API, w tym Kong, bramy oparte na Envoy i AWS API Gateway, obsługuje gRPC. Jednak siatki usług często obsługują gRPC w sposób bardziej naturalny, ponieważ zostały zaprojektowane z myślą o protokole HTTP/2 i strumieniowaniu dwukierunkowym, co jest powszechne w scenariuszach wnioskowania ML.
W jaki sposób siatka usług wspomaga obserwowalność modelu ML?
Siatki usług automatycznie zbierają metryki, takie jak opóźnienie żądania, wskaźniki błędów i natężenie ruchu dla każdej interakcji z usługą. W połączeniu z narzędziami takimi jak Prometheus i Jaeger, można śledzić pojedyncze żądanie wnioskowania w wielu usługach i identyfikować wąskie gardła, co jest nieocenione podczas debugowania potoków uczenia maszynowego.
Czy uruchomienie usługi Service Mesh na dużą skalę jest kosztowne?
Sieci usług generują dodatkowy narzut na procesor i pamięć, ponieważ każdy serwer proxy sidecar zużywa zasoby. W przypadku wdrożenia ze 100 usługami, może być potrzebnych 2-4 dodatkowych rdzeni procesora i 1-2 GB pamięci RAM na węzeł tylko dla sieci. Koszt ten jest jednak często rekompensowany krótszym czasem debugowania i bezpieczniejszym wdrożeniem.
Co jest łatwiejsze do skonfigurowania, sieć usług czy brama API?
Bramy API są zazwyczaj łatwiejsze w konfiguracji, ponieważ stanowią pojedynczy komponent z przejrzystym interfejsem konfiguracyjnym. Sieci usług wymagają instalacji płaszczyzn sterowania, wstrzykiwania sidecarów i konfiguracji wzajemnego protokołu TLS, co zajmuje więcej czasu, ale zapewnia bardziej rozbudowaną funkcjonalność po uruchomieniu.
Czy siatki usług działają z platformami wnioskowania ML bezserwerowego?
Siatki usług są projektowane przede wszystkim z myślą o usługach długoterminowych, dlatego nie integrują się dobrze z funkcjami bezserwerowymi, które często się uruchamiają i wyłączają. W przypadku bezserwerowego wnioskowania ML na platformach takich jak AWS Lambda czy Google Cloud Run, brama API jest zazwyczaj lepszym wyborem do zarządzania ruchem.
Wynik
Jeśli Twoja infrastruktura opiera się na platformach ML opartych na Kubernetesie, z częstymi aktualizacjami modeli i złożoną komunikacją między usługami, siatka usług dostosowana do obciążeń ML zapewni lepszą kontrolę i obserwowalność. W przypadku organizacji udostępniających kilka punktów końcowych ML zewnętrznym klientom lub aplikacjom mobilnym, tradycyjna brama API jest prostsza w zarządzaniu i wystarczająca. Wiele systemów produkcyjnych korzysta z obu rozwiązań – brama API obsługuje ruch zewnętrzny, a siatka usług zarządza wewnętrzną komunikacją usług ML.