Platforma aplikacji dla obciążeń sztucznej inteligencji na platformie Azure
Należy dokładnie rozważyć platformę hostingu aplikacji, na której wdrożono obciążenie sztucznej inteligencji, aby mieć pewność, że można zmaksymalizować wydajność, bezpieczeństwo operacji i niezawodność.
Ten obszar projektowania obejmuje kilka typów aplikacji, które mogą być istotne dla obciążenia sztucznej inteligencji:
- Eksploracyjna analiza danych (EDA)
- Trenowanie modelu i dostrajanie
- Wnioskowanie
Ten artykuł zawiera wskazówki dotyczące wybierania najlepszej platformy dla każdej z tych funkcji w celu spełnienia Twoich potrzeb biznesowych. Istnieją również ogólne zalecenia, które można zastosować do wszystkich tych funkcji.
Zalecenia
Poniżej przedstawiono podsumowanie zaleceń przedstawionych w tym artykule.
Zalecenie | opis |
---|---|
Użyj ponownie narzędzi. | Zacznij od oceny narzędzi, których już używasz, aby dowiedzieć się, czy mogą być ponownie używane dla obciążenia sztucznej inteligencji. Jeśli obsługują one wymagane funkcje i mogą spełniać wymagania dotyczące niezawodności, zabezpieczeń, kosztów i wydajności, wprowadzenie nowego narzędzia może nie być warte kosztu i nakładu pracy. |
Weź pod uwagę wymagania dotyczące zgodności danych i regionów, w których planujesz wdrożenie. | Może być konieczne ograniczenie regionów wdrażanych w ramach obciążenia lub odizolowanie ich od siebie w celu spełnienia wymagań dotyczących zgodności. Przejście do fazy projektowania przy użyciu tych informacji może pomóc w ochronie przed koniecznością późniejszego przeprojektowania. |
Zminimalizuj budynek. | Rozważ rozwiązania typu "platforma jako usługa" (PaaS) lub oprogramowanie jako usługa (SaaS), aby zminimalizować obciążenie operacyjne wprowadzane przez tworzenie własnego rozwiązania, takie jak stosowanie poprawek i inna konserwacja. Minimalizacja obciążenia dnia 2 wymaganego dla nowej technologii upraszcza wdrożenie. Wiele funkcji sztucznej inteligencji jest złożonych, dlatego nie zalecamy tworzenia własnej platformy. |
Poznaj limity przydziału i limity. | Podczas projektowania rozwiązań PaaS lub SaaS należy zrozumieć wszelkie stosowane limity przydziału lub limity. Możliwość skalowania w poziomie w celu spełnienia wymagań dotyczących dużego ruchu może mieć wpływ na limity przydziału lub limity, więc może być konieczne dostosowanie projektu w celu zminimalizowania tego ryzyka. |
Wdróż w tym samym regionie. | Spróbuj wdrożyć wszystkie powiązane zasoby w tym samym regionie, aby zmniejszyć opóźnienie i uprościć projekt. |
Przećwicz bezpieczne wdrażanie. | Ogólnie rzecz biorąc, należy traktować interfejsy API dla obciążenia sztucznej inteligencji tak samo jak każdy inny interfejs API w danym środowisku. Wszystkie interfejsy API powinny zostać umieszczone za bramą, a cały kod powinien być obsługiwany przy użyciu tych samych bezpiecznych praktyk wdrażania co każdy inny zasób kodu. |
Ustanów testy porównawcze wydajności za pomocą eksperymentów. | Każde obciążenie sztucznej inteligencji jest inne, a ilość zasobów obliczeniowych, które są potrzebne, zależy od przypadku użycia. Określ ilość i typy zasobów obliczeniowych, które są optymalne dla obciążenia, przeprowadzając dokładne testy porównawcze. Ten przewodnik ułatwia wybranie platformy, ale będziesz wiedzieć, które jednostki SKU są odpowiednie dla obciążenia po przetestowaniu porównawczym. |
Zagadnienia dotyczące platformy EDA
Analiza EDA jest powszechną funkcją wstępną, którą analitycy danych wykonują przed modelowaniem lub analizą statystyczną. W związku z tym można go uznać za fazę programowania, co oznacza, że cele dotyczące niezawodności i wydajności mogą być znacznie niższe niż te dla zasobów produkcyjnych i utrzymanie produktywności jest ważniejszym czynnikiem.
Ta sekcja zawiera wskazówki dotyczące możliwości, które należy wziąć pod uwagę podczas wybierania rozwiązania platformy EDA.
Wymagania funkcjonalne
Podczas oceniania platformy EDA należy wziąć pod uwagę następujące pytania:
Czy platforma obsługuje użycie przejściowe?
Platforma powinna obsługiwać przejściowe obszary robocze i zasoby obliczeniowe, co oznacza, że powinno być możliwe zatrzymanie niezbędnych zasobów, gdy nie są używane. Ta funkcja pomaga kontrolować koszty. Zadania EDA są zwykle interaktywne, więc użytkownicy muszą mieć możliwość uruchamiania maszyn wirtualnych i zatrzymywania ich podczas uruchamiania zadań.
Czy platforma obsługuje opcjonalność obliczeń?
Platforma powinna włączyć dostęp na żądanie do procesorów GPU zgodnie z potrzebami i zapewnić różne opcje obliczeniowe, aby pomóc w odpowiednim rozmiarze platformy.
Czy platforma obsługuje platformę MLflow?
Platforma EDA powinna umożliwić wybranie technologii, która umożliwia integrację z platformą MLflow na potrzeby śledzenia eksperymentów. Zalecamy rozwiązanie MLflow jako protokół tworzenia, wdrażania i zarządzania modelem, ponieważ zapewnia następujące korzyści:
- Śledzenie eksperymentów. Platforma MLflow umożliwia śledzenie eksperymentów przez rejestrowanie parametrów, metryk i artefaktów. Ta funkcja jest niezbędna podczas EDA, dzięki czemu można śledzić różne kroki przetwarzania wstępnego danych i techniki inżynierii cech oraz ich wpływ na wydajność modelu.
- Odtwarzalności. Ponieważ rejestruje wszystkie szczegóły eksperymentów, platforma MLflow pomaga odtworzyć wyniki, co ma kluczowe znaczenie dla walidacji wyników.
- Przechowywanie wersji danych i modeli. Rozwiązanie MLflow ułatwia przechowywanie wersji zestawów danych i modeli, co ułatwia zarządzanie różnymi wersjami przekształceń danych i przetestowanymi modelami.
- Praca zespołowa. Platforma MLflow udostępnia scentralizowaną platformę, na której analitycy danych mogą udostępniać swoje eksperymenty i wyniki, co ułatwia współpracę i udostępnianie wiedzy.
Wymagania niefunkcjonalne
Weź pod uwagę również następujące pytania:
Jak platforma może pomóc w kontrolowaniu kosztów?
Platforma powinna umożliwić analitykom danych wykonywanie pracy zgodnie z wymaganiami dotyczącymi harmonogramu, ale powinno być odpowiednie, aby zapewnić spełnienie oczekiwań dotyczących kosztów.
Jakie wymagania dotyczące zabezpieczeń muszą być spełnione dla platformy?
Dane używane w fazie EDA prawdopodobnie będą danymi produkcyjnymi, które wymagają przestrzegania praktyk produkcyjnych w celu zabezpieczenia tych danych i monitorowania platformy. W tym celu platforma powinna obsługiwać wszystkie niezbędne mechanizmy kontroli zabezpieczeń, w tym:
- Dostęp i autoryzacja.
- Szyfrowanie magazynowane i przesyłane.
- Wymagania dotyczące ochrony danych regionalnych.
- Niezawodne funkcje monitorowania i zgłaszania alertów, w tym rejestrowanie i inspekcja.
- Dostęp do sieci prywatnej do scentralizowanych repozytoriów dla obrazów kontenerów, danych i zasobów kodu.
Narzędzia
Użyj wystąpienia obliczeniowego usługi Azure Machine Learning z udziałami plików na poziomie zespołu jako platformą EDA. Jednym z wyjątków jest to, że twój zespół lub organizacja korzysta już z odpowiedniej platformy hostingu, takiej jak klastry obliczeniowe z obsługą procesora GPU w usłudze Databricks, na przykład. W takim przypadku może być bardziej odpowiednie pozostanie na tej platformie.
Uwaga
Nie twórz pełnej platformy EDA, chyba że musisz. Obliczenia zoptymalizowane pod kątem procesora GPU są kosztowne i nie są odpowiednie, jeśli twój przypadek użycia nie wymaga tego.
Zagadnienia dotyczące trenowania modelu i dostrajania platformy
Po przejściu do trenowania modelu i dostrajania prawdopodobnie będziesz potrzebować obliczeń zoptymalizowanych pod kątem wysokiej wydajności procesora GPU do pracy wymagającej intensywnych obliczeń wymaganych przez te działania. Niezawodność zwykle nie jest tak ważna, jak wydajność, ponieważ większość tej pracy występuje w tle. Jeśli wymagana jest wysoka niezawodność, należy ocenić, czy konieczne jest rozłożenie obciążenia między strefy dostępności lub regiony. Wysoka niezawodność staje się ważniejsza, gdy świeżość modelu jest często aktualizowana, co wymaga ukończenia trenowania zgodnie z ściślejszym harmonogramem. Cel czasu odzyskiwania powinien określać wybrany projekt niezawodności.
Wskazówki zawarte w tej sekcji dotyczą trenowania modelu i dostrajania. Jeśli nie musisz używać oddzielnych platform dla tych funkcji, należy użyć jednej platformy.
Wymagania funkcjonalne
Podczas oceniania platform do trenowania modelu i dostrajania należy wziąć pod uwagę następujące pytania:
Czy platforma obsługuje użycie przejściowe?
Podobnie jak działania EDA, trenowanie modelu i dostrajanie modeli zwykle nie jest uruchamiane w pełnym wymiarze czasu pracy, dlatego należy użyć platformy, która może zostać zatrzymana, gdy nie jest używana, aby pomóc w kontrolowaniu kosztów. Jednak w przeciwieństwie do EDA trenowanie modelu jest zwykle procesem wsadowym, więc obliczenia są potrzebne tylko wtedy, gdy wsadowe działa i można je zamknąć do następnego uruchomienia.
Czy platforma zapewnia aranżację?
Ze względu na złożoność wymaganą do zarządzania obliczeniami na potrzeby trenowania i dostrajania modelu zalecamy orkiestrator.
Czy istniejące technologie w danym środowisku mogą być częścią rozwiązania?
Jeśli twoja istniejąca platforma danych ma możliwości uczenia maszynowego, takie jak usługa Azure Databricks, możesz jej użyć do pewnych kroków, takich jak przekształcanie danych i inżynieria cech, trenowanie, dostrajanie i inne kroki w usłudze Machine Learning. Łączenie technologii może pomóc zminimalizować koszty i złożoność związaną z używaniem platformy danych dla funkcji, dla których może nie być idealnie odpowiednia.
Wymagania niefunkcjonalne
Zastanów się również nad tym pytaniem:
Jaki jest tolerowany kompromis między kosztami a wydajnością?
Biorąc pod uwagę wymagania obliczeniowe zoptymalizowane pod kątem wysokiej wydajności procesora GPU, upewnij się, że testujesz i przetestujesz trenowanie i dostrajanie w szerokim zakresie, aby określić idealną jednostkę SKU, która równoważy wydajność względem kosztów.
Narzędzia
Zalecamy usługę Azure Machine Learning na potrzeby trenowania modelu i dostrajania platformy, ponieważ zapewnia ona funkcje orkiestracji z obsługą obliczeń wsadowych. Istnieją dwie opcje obliczeniowe do oceny:
- Bezserwerowe obliczenia są idealne dla krótkich, rzadkich przebiegów, które mogą tolerować hałaśliwe efekty sąsiada. Możesz wybrać cennik standardowy lub cennik typu spot. Ceny typu spot są zalecane tylko w przypadku trenowania wysoce przerywalnego. Nie używaj bezserwerowych obliczeń na potrzeby operacji pełnoetatowych. Koszty mogą szybko eskalować.
- Klastry obliczeniowe zapewniają znaczącą kontrolę nad dostępnym sprzętem i są dostrojone do trenowania równoległego lub rozproszonego.
Uwaga
W przypadku modeli podstawowych wybór platformy hostingu modelu może ograniczyć opcje dostosowywania. Na przykład użycie usługi Azure OpenAI Service do hostowania modelu ogranicza opcje dostosowywania do wbudowanej funkcji dostrajania usługi Azure OpenAI.
Zagadnienia dotyczące platformy hostingu i wnioskowania modelu
Funkcje hostingu i wnioskowania modelu tworzą warstwę obciążenia sztucznej inteligencji. Te funkcje są wykonywane z punktami końcowymi specyficznymi dla używanego oprogramowania. Rozwiązania programowe obsługujące model, takie jak NVIDIA Triton, TorchServe i TensorFlow Serving, to zasadniczo zestawy SDK języka Python, które przodują model z interfejsem API i dodają funkcje specyficzne dla rozwiązania. Możesz wybrać platformę hostingu na podstawie wybranego oprogramowania lub wybrać oprogramowanie na podstawie wybranej platformy hostingu.
W przypadku korzystania z rozwiązań SaaS lub PaaS z wstępnie spakowanym modelami, takimi jak duże modele językowe dostępne w usłudze Azure OpenAI, masz niewiele możliwości wyboru oprogramowania obsługującego. Zamiast tego usługa, z której korzystasz, udostępnia interfejs API. Zmniejsza to elastyczność procesu tworzenia wdrożenia modelu, co może zapewnić zalety i wady. Na przykład może usprawnić proces programowania obciążenia. Z drugiej strony zmniejsza elastyczność w sposobie wywoływania i interakcji aplikacji z modelem.
Zasadniczo interfejsy API dla warstwy usługi to mikrousługi, dlatego należy postępować zgodnie z tymi samymi rozwiązaniami dla tych interfejsów API, które są przestrzegane w przypadku innych mikrousług w danym środowisku. Powinny one być konteneryzowane, zbiorcze z innych usług i mają własne cykle życia, które są niezależne od innych usług i interfejsów API. Należy jednak pamiętać, że obsługa interfejsów API warstwy zwykle wymaga znacznie większej mocy obliczeniowej opartej na procesorze GPU i większych obrazów kontenerów niż tradycyjne interfejsy API.
Ta sekcja zawiera wskazówki dotyczące możliwości, które należy wziąć pod uwagę podczas wybierania platformy hostingu i wnioskowania modelu.
Wymagania funkcjonalne
Podczas oceniania platform do hostowania i wnioskowania modelu należy wziąć pod uwagę następujące pytania:
Czy obciążenie wymaga wnioskowania wsadowego lub online?
Punkty końcowe wnioskowania są używane na potrzeby procesów wnioskowania wsadowego lub online, a metoda wnioskowania pomaga określić właściwą platformę hostingu. Wnioskowanie wsadowe jest najlepiej hostowane na platformie obsługującej użycie przejściowe i umożliwia zamykanie obliczeń, gdy nie jest używane. Wnioskowanie online jest najlepiej hostowane na platformie obsługującej elastyczne wykorzystanie zasobów obliczeniowych, które jest skalowane automatycznie na podstawie obciążenia w danym momencie.
Czy platforma obsługuje możliwość śledzenia?
Możliwość śledzenia ma kluczowe znaczenie dla utrzymania integralności modeli używanych w obciążeniu. Ważne jest, aby znać informacje o modelu, takie jak bieżąca wersja, która ją wdrożyła, kiedy została wdrożona, oraz pochodzenie danych modelu.
Zastosuj znaczące tagi do obrazów w rejestrze kontenerów, aby upewnić się, że usługa hostingu modelu ściąga określoną wersję, którą zespół może łatwo zidentyfikować. Takie podejście pomaga w zarządzaniu danymi, zmniejszając ryzyko użycia nieaktualnych lub nieprawidłowych modeli w środowisku produkcyjnym.
Czy platforma hostingu będzie scentralizowanym zasobem?
Wiele organizacji korzysta ze scentralizowanej platformy hostingu modelu używanej przez różne zespoły na potrzeby własnych obciążeń. Jeśli platforma hostingowa jest scentralizowana, należy rozważyć, czy potrzebujesz obsługi obciążenia zwrotnego. Ta funkcja umożliwia śledzenie wykorzystania platformy przez zespół i obciążenie.
Wymagania niefunkcjonalne
Weź pod uwagę również następujące pytania:
Jakie są wymagania dotyczące niezawodności platformy?
Interfejsy API warstwy są zasobami produkcyjnymi, dlatego należy zastosować do nich te same wymagania dotyczące niezawodności, które mają zastosowanie do innych przepływów obciążeń, które pasują do ich klasyfikacji krytycznej . Jeśli ich krytyczność wymaga wysokiej dostępności, platforma hostingu powinna obsługiwać strefy dostępności lub projekt w wielu regionach.
Jakie kontrolki sieciowe są wymagane dla platformy?
Ustal, czy potrzebujesz sieci prywatnej, czy zapory ruchu wychodzącego w celu zapewnienia ochrony platformy.
Jakie są wymagania dotyczące tożsamości i zabezpieczeń dostępu dla platformy?
Określ tożsamość i mechanizmy kontroli dostępu wymagane dla punktów końcowych. Zastanów się, czy potrzebujesz natywnej kontroli dostępu opartej na rolach (RBAC), czy wbudowanej obsługi tożsamości i platformy dostępu, na przykład Microsoft Entra ID.
Jakie możliwości monitorowania obsługuje platforma?
Określ wymagane możliwości monitorowania dla punktów końcowych. W zależności od platformy może być ograniczony dostęp do dzienników i metryk, co może ograniczyć możliwość inspekcji działań lub wykrywania awarii.
Jakie są wymagania dotyczące wydajności platformy?
Opóźnienie wnioskowania jest częstym problemem, a różne platformy mają różne profile wydajności. Usługi bezserwerowe i PaaS korzystające z modelu narzędziowego mogą mieć wpływ na problem z hałaśliwym sąsiadem i często nie mają gwarancji przepływności. Z drugiej strony te same platformy mogą oferować opcję self-hosted, która zapewnia gwarantowaną przepływność z modelem przed zakupem. Możesz również rozważyć samodzielne hostowanie na platformie Kubernetes, aby uzyskać bardziej przewidywalne zachowanie opóźnienia.
Należy pamiętać o limitach usług i limitach przydziałów, które mogą mieć wpływ na wydajność, podobnie jak w przypadku usługi Azure OpenAI. Często te limity przydziału i limity są agresywnie ustawiane w celu spełnienia wymagań dotyczących pojemności, więc jeśli wybór platformy nie zapewnia wymaganej wydajności, może być konieczne wdrożenie strategii w celu rozłożenia zapotrzebowania na zasoby obliczeniowe między wystąpieniami.
Zaawansowane architektury mogą łączyć wiele wdrożeń, aby uzyskać stałą przepływność dla większości obciążeń i możliwości zwiększenia wydajności dla bardziej elastycznych obliczeń.
Narzędzia
Wnioskowanie wsadowe
Jeśli przeprowadzasz wnioskowanie na danych, które znajdują się na platformie obsługującej hosting modelu, na przykład w usłudze Databricks, rozważ użycie tej platformy do wnioskowania. Pamiętaj, aby odizolować wnioskowanie obliczeń od innych funkcji wykonywanych przez platformę danych.
Zalecamy interfejs API usługi Azure OpenAI Batch dla modeli podstawowych.
W przypadku modeli innych niż podstawowe należy wziąć pod uwagę następujące zalecenia:
Rozważ użycie punktów końcowych wsadowych usługi Azure Machine Learning w następujących scenariuszach:
Należy przeprowadzić wnioskowanie na dużym zestawie danych, który jest dystrybuowany w wielu plikach i nie wymaga małych opóźnień.
Należy wykonywać długotrwałe operacje wsadowe w dużych zestawach danych i korzystać z równoległości.
Należy wdrożyć składniki potoku na potrzeby przetwarzania wsadowego.
Jeśli musisz uruchomić zadania platformy Spark na potrzeby rozproszonego przetwarzania danych, rozważ użycie usługi Azure Synapse Analytics, usługi Databricks lub bezserwerowych obliczeń platformy Spark w usłudze Machine Learning.
Jeśli żaden z tych scenariuszy nie ma zastosowania, zalecamy użycie punktów końcowych usługi Machine Learning wsadowych.
Wnioskowanie online
Ocena rozwiązań PaaS platformy i rozwiązań bezserwerowych jako pierwszego kroku. Te usługi są zwykle najłatwiejsze do wdrożenia i zarządzania, ponieważ upraszczają projektowanie i minimalizują obciążenie operacyjne. Na przykład usługa Azure OpenAI jest dobrym wyborem dla modeli podstawowych.
- Rozważ użycie bezserwerowego interfejsu API usługi Azure Machine Learning do agregowania dostępu do punktu końcowego, nawet jeśli korzystasz z usługi Azure OpenAI lub innego rozwiązania hostingu modelu podstawowego.
Rozważ użycie usługi Machine Learning z zarządzanymi klastrami obliczeniowymi, gdy rozwiązania PaaS lub bezserwerowe nie są najlepszym rozwiązaniem. Obliczenia zarządzane przez usługę Machine Learning obsługują dzielenie i dublowanie ruchu na potrzeby testowania, debugowania i niezawodnej inspekcji A/B. Ponieważ zasoby obliczeniowe są zarządzane przez usługę, operacje typu Day-2 są łatwiejsze podczas samodzielnego hostowania modelu. Zarządzane zasoby obliczeniowe oferują również szeroki wybór konfiguracji obliczeniowych i możliwości skalowania.
Jeśli zdecydujesz się samodzielnie hostować model w klastrze usługi Azure Kubernetes Service (AKS), który jest dołączony do usługi Machine Learning lub innej platformy opartej na kontenerach, upewnij się, że pula węzłów jest odizolowana od innych interfejsów API lub innych obciążeń w klastrze w celu osiągnięcia przewidywalnej wydajności i optymalizacji zabezpieczeń. Unikaj używania obliczeń opartych na procesorze GPU lub zoptymalizowanych pod kątem procesora GPU dla innych funkcji niż funkcje obciążenia sztucznej inteligencji, aby zmniejszyć koszty. Zamiast tego ustanów punkt odniesienia wydajności za pomocą testowania i odpowiedniego rozmiaru zasobów obliczeniowych, aby spełnić wymagania dotyczące wydajności bez nadmiernej aprowizacji.
Możesz również samodzielnie hostować model przy użyciu rozwiązań typu infrastruktura jako usługa (IaaS), takich jak azure Nauka o danych Virtual Machine.
Zagadnienia dotyczące platformy orkiestracji
Orkiestracja w kontekście platform aplikacji obciążeń sztucznej inteligencji odnosi się do narzędzi takich jak przepływ monitów w usłudze Machine Learning i Azure AI Studio. Te narzędzia zostały zaprojektowane w celu usprawnienia całego cyklu tworzenia aplikacji sztucznej inteligencji przez automatyzację wielu typowych funkcji przepływu pracy.
Wymagania niefunkcjonalne
Podobnie jak w przypadku wszystkich innych obciążeń produkcyjnych w infrastrukturze w chmurze, podczas oceniania narzędzi orkiestracji należy wziąć pod uwagę następujące kwestie:
Niezawodność, bezpieczeństwo i monitorowanie. Narzędzia orkiestracji powinny być zgodne ze standardami niezawodności, zabezpieczeń i monitorowania obciążeń produkcyjnych.
Wydajność. Narzędzia orkiestracji nie wymagają obliczeń zoptymalizowanych pod kątem procesora GPU ani obliczeń opartych na procesorze GPU, należy wziąć pod uwagę jednostki SKU ogólnego przeznaczenia.
Optymalizacja kosztów. Narzędzia orkiestracji są zawsze włączone, rozważ elastyczne opcje obliczeniowe, aby zminimalizować koszty wykorzystania.
Narzędzia
Preferuj gotowe rozwiązanie, takie jak przepływ monitu. Ustal, czy jego możliwości są zgodne z potrzebami orkiestracji, zanim przyjrzysz się niestandardowemu hostingowi za pomocą narzędzi takich jak LangChain czy Semantic Kernel.
Hostowanie punktów końcowych dla rozwiązań, takich jak przepływ monitów w usłudze Machine Learning z wystąpieniami obliczeniowymi lub w usłudze AKS z własnym hostingiem.