Operacje obciążeń sztucznej inteligencji na platformie Azure
Podczas tworzenia i przenoszenia obciążeń sztucznej inteligencji do środowiska produkcyjnego ważne jest, aby zespoły operacyjne były w pełni wyposażone w obsługę tych obciążeń, tak jak w przypadku innych obciążeń produkcyjnych. Ponieważ zespoły operacyjne mogą mieć ograniczone doświadczenie w zakresie technologii sztucznej inteligencji, ważne jest, aby wytrenować je w tych technologiach i zintegrować obciążenia sztucznej inteligencji z przepływami pracy na wczesnym etapie procesu. Połącz zespoły operacyjne i zespoły danych na wczesnym etapie opracowywania obciążenia sztucznej inteligencji, aby wspierać wzajemne zrozumienie procesów każdego zespołu. Wczesna współpraca ma kluczowe znaczenie, ponieważ oba zespoły muszą ściśle współpracować, aby efektywnie obsługiwać obciążenie sztucznej inteligencji. Zespoły danych zależą od zespołów operacyjnych w celu zapewnienia niezawodnych sygnałów kondycji i alertów z możliwością działania. Zespoły ds. operacji zależą od zespołów danych, aby pomóc zdiagnozować potencjalne problemy i rozwiązać rzeczywiste problemy zgodnie ze standardami operacyjnymi. To partnerstwo pomaga zapewnić płynną i wydajną wydajność systemu.
Ten przewodnik zawiera zalecenia dotyczące opracowywania mechanizmów operacyjnych i praktyk w celu poprawy obsługi obciążeń sztucznej inteligencji. Podkreśla wydajną współpracę między zespołami operacji i danych.
Zalecenia
Poniżej przedstawiono podsumowanie zaleceń przedstawionych w tym artykule.
Zalecenie | opis |
---|---|
Monitoruj wszystkie aspekty obciążenia. | Chociaż wiele ogólnych problemów związanych z monitorowaniem i obserwacją dotyczy również obciążeń sztucznej inteligencji, istnieją konkretne zagadnienia, które należy wykonać, aby upewnić się, że całe obciążenie jest odpowiednio monitorowane przez cały czas. Aby utworzyć strategię monitorowania i obserwacji, może być konieczne pracować w różnych zespołach, aby uzyskać odpowiednią wiedzę i uwzględnić wszystkie odpowiednie tryby i metryki. ▪ Rozszerzanie platformy obserwacji |
Stosowanie bezpiecznych praktyk wdrażania do obciążenia sztucznej inteligencji. | Wykonaj kroki, aby zapewnić najwyższy poziom bezpieczeństwa w zakresie poufnych danych produkcyjnych i dostosować podejścia wdrażania do wymagań zerowych przestojów. W razie potrzeby należy używać odpowiednich narzędzi i kładąc nacisk na to, aby nie wprowadzać na nowo istniejących narzędzi i procesów. Często będziesz mieć możliwość korzystania z ustanowionych usług w celu osiągnięcia wysokiego poziomu wydajności, a także włączenia bezpiecznych wdrożeń. ▪ Uwzględnij składniki obciążenia sztucznej inteligencji w bezpiecznych rozwiązaniach wdrażania |
Przyjmij rozwiązania DevOps dotyczące testowania i automatyzacji. | Stosowanie rozwiązań DevOps podczas kompilowania, wdrażania i obsługi obciążenia sztucznej inteligencji w środowisku produkcyjnym. Obciążenie powinno umożliwiać obserwowanie i testowanie przy użyciu rzeczywistych danych wejściowych użytkownika w środowisku produkcyjnym. Można to zapewnić tylko w bezpieczny sposób, jeśli silny proces DevOps i usprawniona automatyzacja umożliwiają szybkie wdrożenia, korektę błędów i testowanie A/B. ▪ Obsługa testowania w środowisku produkcyjnym ▪ Automatyzowanie praktyk operacyjnych, gdy jest to możliwe ▪ Przyjęcie praktyk metodyki DevOps |
Dokumentowanie postępu. | Od początku twórz dobre nawyki dokumentacji, aby umożliwić przechwytywanie strategicznych decyzji, historii zmian i kluczowych informacji o danych używanych przez obciążenie. ▪ Przyjęcie dobrych praktyk w dokumentacji |
Rozszerzanie platformy obserwacji
Aby osiągnąć doskonałość operacyjną, niezbędna jest solidna obserwacja. Gdy organizacja wdraża technologie sztucznej inteligencji, ważne jest, aby zwiększyć możliwości obserwowania, aby zapewnić kompleksowe monitorowanie kondycji obciążenia. Organizacje nowe w zakresie sztucznej inteligencji mogą nie mieć wiedzy na temat danych big data, nauki o danych i metodyce DataOps w zespole operacyjnym. W związku z tym szkolenie w zakresie najlepszych rozwiązań operacyjnych jest ważnym pierwszym krokiem w celu poprawy platformy obserwacji. Z tego powodu zespoły ds. operacji i danych powinny współpracować w celu określenia odpowiednich trybów monitorowania i metryk w celu przechwytywania i analizowania.
Aby ocenić kondycję modelu, wymagany jest kompleksowy przegląd określonych metryk jakości. Pomiary jakości zwykle obejmują metryki, takie jak świeżość modelu, poprawność danych wyjściowych i opóźnienie odpowiedzi. Należy jednak współpracować z analitykami danych i inżynierami w celu ustalenia określonych metryk definiujących jakość obciążenia. Nieokreślony charakter obciążeń sztucznej inteligencji sprawia, że czujne monitorowanie jakości jest szczególnie ważne, ponieważ te pomiary mogą zmieniać się nieoczekiwanie w dowolnym momencie po wdrożeniu. Zalecenia dotyczące obserwacji obejmują:
Skontaktuj się z analitykami danych i inżynierami, aby określić metryki jakości.
Kompilowanie lub rozszerzanie pulpitów nawigacyjnych w celu oceny ogólnej kondycji obciążenia. Takie podejście powinno obejmować metryki dostępności składników i metryki jakości.
Zaimplementuj dobrze zaprojektowane alerty dotyczące dostępności i jakości, które zespoły operacyjne mogą zrozumieć i podjąć działania.
Codify standardowe procedury operacyjne definiujące sposób reagowania zespołów operacyjnych na alerty dotyczące jakości, takie jak praca z zespołami danych w celu zbadania i skorygowania potencjalnych awarii.
Zwróć szczególną uwagę na metryki użycia, ponieważ może to być kosztowne uruchamianie obciążeń sztucznej inteligencji. Koszty mogą rosnąć szybko, jeśli zespół ds. obciążeń nie zamyka, skaluje lub cofa przydział zasobów, gdy nie są używane. Operacje mogą pomóc w zapewnieniu, że koszty pozostają w oczekiwanych parametrach przez monitorowanie wykorzystania.
Uwzględnij składniki obciążenia sztucznej inteligencji w bezpiecznych rozwiązaniach wdrażania
Obciążenia sztucznej inteligencji zależą od danych produkcyjnych, które często zawierają poufne informacje. Dlatego ważne jest utrzymanie najwyższego poziomu bezpieczeństwa wokół tych obciążeń. Aby ułatwić ochronę danych, rozszerz bezpieczne praktyki wdrażania, aby uwzględnić cały kod powiązany ze składnikami sztucznej inteligencji obciążenia. Jeśli masz wymagania dotyczące bez przestojów dla obciążenia, należy odpowiednio zaprojektować podejście wdrażania dla składników sztucznej inteligencji.
W przypadku punktów końcowych wnioskowania użyj wdrożeń niebiesko-zielonych lub kanarowych z dublowaniem ruchu lub bez niego, w zależności od modelu wdrażania.
W przypadku obsługi indeksów użyj modelu wdrażania równoległego z aktualizacjami aliasu, aby ograniczyć ruch.
W przypadku kodu orkiestracji użyj flag funkcji lub wdrożeń niebieskich zielonych.
W zależności od aplikacji, platformy danych i określonej topologii sieci może być konieczne użycie rozwiązania bramy, takiego jak aplikacja systemu Azure Gateway lub Azure Front Door.
Narzędzia
Usługa Azure Machine Learning obsługuje wdrożenia niebiesko-zielone natywnie z wbudowanym podziałem ruchu.
Nie wymyślaj koła na nowo
Ponieważ punkty końcowe wnioskowania online są zasadniczo mikrousługami, działają jako w pełni samodzielne składniki obciążenia z własnymi danymi i kodem, które pełnią określoną funkcję w przepływie pracy. Z tego powodu należy traktować punkty końcowe wnioskowania online, takie jak inne krytyczne mikrousługi, które mają własne cykle życia. Punkty końcowe wnioskowania online można aktualizować indywidualnie. Jednak podobnie jak inne mikrousługi w większym obciążeniu, muszą bezproblemowo współpracować. W związku z tym należy określić priorytety testowania integracji podczas wdrażania aktualizacji. Upewnij się, że wdrożenia nie wpływają negatywnie na inne usługi, takie jak obsługa modelu i orkiestrator. Alternatywnie punkty końcowe wnioskowania wsadowego są często ściśle powiązane z obliczeniami przetwarzania zadań i są uwzględniane w potoku danych. W takich przypadkach traktuj je jako część większego rozwiązania zamiast mikrousług.
Obsługa testowania w środowisku produkcyjnym
Zespoły ds. operacji prawdopodobnie nie będą projektować ani testować obciążeń sztucznej inteligencji. Muszą jednak obsługiwać testowanie obciążeń sztucznej inteligencji poprzez monitorowanie, alerty i badanie, ponieważ testowanie jest wymagane w środowisku produkcyjnym. Ze względu na niedeterministyczny charakter sztucznej inteligencji testowanie w środowisku produkcyjnym jest konieczne, aby zapewnić, że obciążenie działa zgodnie z oczekiwaniami w czasie. Zespół operacyjny powinien ściśle współpracować z zespołem ds. obciążeń w celu wydajnego przechwytywania i diagnozowania nietypowych wyników testów oraz zgodnie ze standardami operacyjnymi. Aby upewnić się, że operacje mogą obsługiwać testowanie i że zespoły obciążeń mogą wykonywać testy, oba zespoły muszą dostosować się do swoich procesów, aby współpracować. Trenowanie działań testowych w środowiskach nieprodukcyjnych ułatwia zapoznanie się z zespołem w kolejności operacji.
Automatyzowanie praktyk operacyjnych, gdy jest to możliwe
Zautomatyzuj wszystkie rozwiązania operacyjne związane z obciążeniem, w tym monitorowanie, alerty i procesy testowania. Automatyzacja jest podstawową strategią utrzymania powtarzalnych, wydajnych i spójnych procesów. Podczas projektowania strategii automatyzacji należy wymagać nadzoru człowieka dla działań, takich jak prawidłowe diagnozowanie niespójności modelu i innych sygnałów jakości. Dotyczy to szczególnie wersji początkowych. Procesy związane z utrzymaniem modelu są nowe dla zespołów operacyjnych, więc ryzyko nieprawidłowego reagowania na sygnały jakościowe jest wyższe na tym etapie. W miarę dojrzewania obciążenia może być możliwe użycie automatyzacji do identyfikowania fałszywych alarmów z dobrze zaprojektowanymi bramami jakości, ale dotarcie do tego punktu może być długim i złożonym procesem.
Jeśli to możliwe, użyj istniejących narzędzi automatyzacji, aby wykonać nowe zadania automatyzacji dla obciążenia sztucznej inteligencji. Jeśli na przykład używasz już usługi Azure Pipelines lub GitHub Workflows, nadal używasz ich do wdrażania kodu orkiestracji zamiast używania oddzielnego narzędzia. Należy jednak unikać nadmiernej inżynierii w celu używania tylko jednego narzędzia automatyzacji. Jeśli niektóre zadania lub zadania nie są odpowiednie dla wybranego narzędzia, wybierz bardziej odpowiednie narzędzie zamiast tworzyć niestandardowe rozwiązanie, które zwiększa niepotrzebną złożoność.
Uwaga
Aby w pełni obsługiwać obciążenie, wymagane jest wiele międzybezpieczonych ról i technologii. Wszystkie zespoły ds. danych, infrastruktury, zabezpieczeń i operacji zależą od automatyzacji w pewnym zakresie. Użyj najmniejszych możliwych narzędzi i standaryzacji ich, aby ułatwić zarządzanie strategią automatyzacji i łatwiejsze trenowanie.
Przyjęcie praktyk metodyki DevOps
Na wczesnym etapie opracowywania obciążeń należy standandaryzować stosowanie praktyk DevOps w procesach programowania. W przypadku wszystkich środowisk oprócz środowisk piaskownicy ściśle zdefiniowane i wymuszone standardy powinny zarządzać całym cyklem życia programowania. Wymuś te standardy, ściśle zabraniając wszelkich działań związanych z wdrażaniem ręcznym. Wszystkie wdrożenia, niezależnie od tego, czy są to aktualizacje, poprawki, czy nowe wdrożenia zasobów, muszą być wykonywane za pomocą potoku ciągłej integracji i ciągłego wdrażania, który jest zgodny z bezpiecznymi praktykami wdrażania. Dobre praktyki higieny metodyki DevOps powinny obejmować:
Kontrola wersji: użyj kontroli wersji dla wszystkich zasobów kodu, jak to możliwe. Kontrola wersji jest podstawą metodyki DevOps i dobrych praktyk zarządzania zmianami i jest niezbędna do bezproblemowej współpracy. Zastosuj kontrolę wersji do pakietów bibliotek, w tym zestawów SDK i obrazów kontenerów. Należy zachować spójność przy użyciu określonej wersji pakietów bibliotek w całym cyklu życia tworzenia oprogramowania (SDLC). Różne wersje bibliotek, takich jak XGBoost lub scikit-learn w różnych środowiskach deweloperskich, mogą powodować różnice w zachowaniu obciążenia. To samo dotyczy przechowywania wersji modelu. Upewnij się, że wersje modelu są spójne w zestawie SDLC, aby nie testować jednej wersji modelu w środowisku przedprodukcyjnym i zwolnić inną wersję w środowisku produkcyjnym.
Prosty schemat nazewnictwa wersji: użyj prostego schematu nazewnictwa wersji, aby zapewnić, że zawsze używasz ostatnio zatwierdzonej wersji danego zasobu. Zasoby specyficzne dla sztucznej inteligencji mogą obejmować:
- Kod notesu.
- Kod programu Orchestrator.
- Kod zadania przetwarzania danych.
- Kod zadania usługi Machine Learning.
- Model.
Narzędzia, które można operacjonalizować: niektóre narzędzia doskonale nadają się do eksperymentowania, ale nie są przeznaczone do operacjonalizacji. To ograniczenie może utrudnić lub uniemożliwić ich zintegrowanie z automatyzacją operacyjną. Na przykład notesy są dobrym narzędziem do eksperymentowania i eksploracyjnej analizy danych, ale nie są dobrym narzędziem do pracy nad opracowywaniem potoków produkcyjnych. Po zakończeniu eksperymentowania należy ściągnąć logikę z tych narzędzi i umieścić ją w pakiecie języka Python, którego można użyć dla kodu zadania.
Przyjęcie dobrych praktyk w dokumentacji
Dobre nawyki dokumentacji są ważne dla wszystkich typów obciążeń. Złożoność obciążeń sztucznej inteligencji sprawia, że te nawyki są jeszcze ważniejsze. Upewnij się, że masz repozytorium specyficzne dla twojego zespołu roboczego, w którym dokumentacja jest bezpiecznie przechowywana i kontrolowana wersja. Podobnie jak w przypadku innych obciążeń, należy udokumentować standardowe informacje. Te standardowe informacje obejmują wszystkie narzędzia używane w obciążeniu, konfiguracjach zabezpieczeń, projektach sieci i przewodnikach konfiguracji. Rozważ udokumentowanie następujących informacji o obciążeniu specyficznych dla sztucznej inteligencji:
Informacje dotyczące trenowania i uziemienia zarządzania indeksami danych: Dokumentowanie źródeł danych, właściciela źródeł danych, częstotliwości odświeżania i procesów eliminacji stronniczości w celu ustalenia sposobu trenowania modelu i obsługi danych uziemowych.
Historia procesu trenowania: szczegółowe informacje o sposobie uzyskiwania bieżącej zatwierdzonej konfiguracji przez dokumentowanie, dlaczego wybrano określone hiperparametry, temperatury, wagi i inne parametry. Uwzględnij inne przetestowane konfiguracje i zmiany behawioralne zaobserwowane w całym procesie trenowania. Te informacje pomagają zapobiec powtarzaniu nieudanych lub nieefektywnych konfiguracji.
Informacje o magazynie funkcji: dokumentowanie, które funkcje mają najlepszą moc predykcyjną i sposób, w jaki dokonałeś tej determinacji.
Konfiguracja stacji roboczej analityka danych: dokładnie udokumentuj konfiguracje stacji roboczej, aby usprawnić proces dołączania dla analityków danych. Określ wymagane biblioteki i zależności, które są wymagane do korzystania ze środowisk Conda.
Informacje o przekształcaniu danych: dokumentowanie całego procesu od początku do końca po zakończeniu transformacji danych. Dokumentowanie sposobu wyświetlania danych podczas pozyskiwania i sposobu ich prezentowania po przekształceniu.
Narzędzia
Wykorzystaj zautomatyzowaną konfigurację i historię przechwytywania za pośrednictwem platform MLFlow i uczenia maszynowego.