Wdrażanie modeli uczenia maszynowego w środowiskach produkcyjnych

W tym artykule opisano najlepsze rozwiązania dotyczące wdrażania modeli uczenia maszynowego w środowiskach produkcyjnych przy użyciu usługi Azure Machine Edukacja. Wdrażanie modeli uczenia maszynowego w środowisku produkcyjnym jest ważne dla organizacji korzystających ze sztucznej inteligencji w celu ulepszenia ich operacji. Może to być złożony proces, ale ten artykuł ułatwia zrozumienie kroków.

Zagadnienia dotyczące architektury

  • Wybierz właściwą metodę wdrażania. Każda metoda wdrażania ma zalety i wady. Ważne jest, aby wybrać ten, który najlepiej odpowiada potrzebom organizacji. Istnieją dwie główne metody wdrażania:

    • Wnioskowanie w czasie rzeczywistym (online) przetwarza dane wejściowe w miarę ich odbierania, często z wymaganiami o małym opóźnieniu. Małe opóźnienie jest ważne w przypadku aplikacji wymagających natychmiastowych odpowiedzi, takich jak wykrywanie oszustw, rozpoznawanie mowy lub systemy rekomendacji. Wnioskowanie w czasie rzeczywistym jest bardziej złożone i kosztowne w implementacji niż wnioskowanie wsadowe, ponieważ wymaga szybszej i bardziej niezawodnej infrastruktury. Podstawowe obliczenia na potrzeby wnioskowania w czasie rzeczywistym zwykle są uruchamiane w sposób ciągły do żądań obsługi szybciej.

    • Wnioskowanie wsadowe (offline) przetwarza dużą partię danych wejściowych jednocześnie, zamiast przetwarzać każdy punkt danych wejściowych indywidualnie w czasie rzeczywistym. Wnioskowanie wsadowe jest odpowiednie w przypadku scenariuszy dużych ilości danych, które wymagają wydajnego przetwarzania, ale czas odpowiedzi nie jest krytyczny. Na przykład można użyć wnioskowania wsadowego do przetwarzania dużego zestawu danych obrazów, a model uczenia maszynowego tworzy przewidywania na wszystkich obrazach jednocześnie. Wnioskowanie wsadowe jest tańsze i bardziej wydajne niż wnioskowanie w czasie rzeczywistym. Podstawowe obliczenia dla wnioskowania wsadowego zwykle są uruchamiane tylko podczas zadania wsadowego.

    Usługa Machine Edukacja używa punktów końcowych do wdrażania modeli w czasie rzeczywistym i scenariuszach wsadowych. Punkty końcowe zapewniają ujednolicony interfejs do wywoływania wdrożeń modeli i zarządzania nimi w różnych typach obliczeniowych. Zarządzane punkty końcowe online obsługują, skalują, zabezpieczają i monitorują modele uczenia maszynowego na potrzeby wnioskowania.

    Aby uzyskać więcej informacji, zobacz następującą sekcję w tym artykule Metody wdrażania.

  • Zapewnij spójność. Ważne jest, aby stale wdrażać model w różnych środowiskach, takich jak programowanie, przemieszczanie i produkcja. Użyj technologii konteneryzacji lub wirtualizacji, takich jak środowiska maszyny Edukacja, aby zapewnić spójność i hermetyzować środowisko.

  • Monitorowanie wydajności. Po wdrożeniu modelu w środowisku produkcyjnym należy śledzić metryki, takie jak dokładność, opóźnienie i przepływność, oraz skonfigurować alerty w celu powiadamiania o spadku wydajności poniżej akceptowalnych poziomów. Użyj Szczegółowe informacje aplikacji i wbudowanych funkcji monitorowania zarządzanych punktów końcowych, aby wyświetlić metryki i utworzyć alerty.

  • Zaimplementuj środki zabezpieczeń. Ochrona danych i systemów. Możesz skonfigurować uwierzytelnianie i kontrolę dostępu, szyfrować dane podczas przesyłania i magazynowania, używać zabezpieczeń sieci i monitorować pod kątem podejrzanych działań.

  • Utwórz plan aktualizacji. Modele uczenia maszynowego wymagają aktualizacji, ponieważ nowe dane i nowe algorytmy staną się dostępne. Ważne jest utworzenie procesu testowania i weryfikowania zaktualizowanego modelu przed wdrożeniem go w środowisku produkcyjnym. Wdrożenie niebieskie/zielone to wspólna strategia, która aktualizuje modele uczenia maszynowego w środowisku produkcyjnym. W przypadku wdrożenia niebieskiego/zielonego można zaktualizować model do nowego środowiska, przetestować go, a następnie przełączyć się do nowego modelu po jego zweryfikowaniu. Wdrożenie niebieskie/zielone gwarantuje, że potencjalne problemy ze zaktualizowanym modelem nie wpływają na klientów. Aby uzyskać więcej informacji, zobacz Natywne wdrożenie niebieskie/zielone.

Metody wdrażania

Rozważ następujące pytania, aby ocenić model, porównać dwie metody wdrażania i wybrać metodę odpowiadającą modelowi:

  • Jak często powinny być generowane przewidywania?
  • Jak szybko będą potrzebne wyniki?
  • Czy przewidywania są przechowywane lub używane natychmiast?
  • Czy przewidywania powinny być generowane indywidualnie, w małych partiach lub w dużych partiach?
  • Czy opóźnienie jest oczekiwane w modelu?
  • Ile mocy obliczeniowej potrzebuje model?
  • Czy istnieją konsekwencje operacyjne i koszty utrzymania modelu?
  • Jak jest wyzwalana przewidywanie? Czy jest on oparty na zdarzeniach, czy zaplanowany?

Zobacz następujące drzewo decyzyjne, aby określić, który model wdrażania najlepiej pasuje do twojego przypadku użycia:

A diagram of the real-time inference and batch inference decision tree.

Wnioskowanie wsadowe

Wnioskowanie wsadowe to prosty proces, który umożliwia uruchamianie modeli w odstępach czasu lub na podstawie wyzwalaczy. W przypadku wnioskowania wsadowego aplikacje biznesowe mogą przechowywać przewidywania.

Rozważ następujące najlepsze rozwiązania dotyczące wnioskowania wsadowego:

  • Uruchamianie operacji wsadowych przy użyciu interfejsu API. Użyj punktów końcowych wsadowych , aby utworzyć trwały punkt końcowy HTTPS, który wyzwala zadanie oceniania wsadowego dla zaplanowanych lub opartych na zdarzeniach potoków danych. Interfejs API może integrować się z dowolną platformą aranżacji danych, która obsługuje wywołanie interfejsu API REST. Aby uzyskać więcej informacji, zobacz punktor integracji usługi Batch w tej sekcji i Wdrażanie modeli oceniania w punktach końcowych wsadowych.

  • Opcje obliczeniowe. Procesy wnioskowania wsadowego zwykle nie są uruchamiane w sposób ciągły, dlatego korzystne jest automatyczne uruchamianie, zatrzymywanie i skalowanie klastrów wielokrotnego użytku, które mogą obsługiwać szereg obciążeń. Różne modele często wymagają różnych środowisk. Twoje rozwiązanie musi wdrożyć określone środowisko i usunąć je po zakończeniu wnioskowania. Usługa Automation udostępnia zasoby obliczeniowe dla następnego modelu. Aby zmniejszyć koszty, użyj maszyn wirtualnych o niskim priorytetu dla węzłów obliczeniowych.

    Ważne

    Rozmiar węzłów obliczeniowych jest ważny. Jeśli węzły są zbyt małe, zadanie wnioskowania wsadowego trwa dłużej. Jeśli węzły są zbyt duże, zadanie jest droższe. Testowanie i monitorowanie węzłów obliczeniowych w celu określenia odpowiedniego rozmiaru modelu.

  • Rozważ potrzeby skalowalności. W celu zwiększenia wydajności usługa Machine Edukacja obsługuje funkcje, które umożliwiają skalowalne przetwarzanie. Liczba węzłów obliczeniowych i maksymalnych parametrów współbieżności są definiowane podczas wdrażania punktu końcowego wsadowego w usłudze Machine Edukacja. Parametry dla każdego zadania można zastąpić, co zapewnia klientom elastyczność środowiska uruchomieniowego i równoległość gotowe do użycia. Te funkcje działają z wnioskowaniem tabelarycznym i opartym na plikach.

  • Wyzwania wnioskowania wsadowego. Wnioskowanie wsadowe to prostszy sposób używania i wdrażania modelu w środowisku produkcyjnym, ale przedstawia własny zestaw wyzwań.

    • W zależności od częstotliwości uruchamiania wnioskowania przewidywanie wygenerowane może być nieistotne przez czas uzyskiwania do niego dostępu.

    • Wdrażanie w wielu regionach i projektowanie rozwiązania pod kątem wysokiej dostępności nie ma krytycznych problemów w scenariuszu wnioskowania wsadowego, ponieważ model nie jest wdrażany w regionie. Jednak magazyn danych może być konieczne wdrożenie przy użyciu strategii wysokiej dostępności w wielu lokalizacjach. Wdrożenie powinno być zgodne z projektem i strategią wysokiej dostępności aplikacji.

    • Dane generowane podczas wnioskowania wsadowego mogą częściowo zakończyć się niepowodzeniem. Jeśli na przykład zaplanowany potok wyzwoli zadanie wnioskowania wsadowego i potok zakończy się niepowodzeniem, dane wygenerowane przez zadanie wnioskowania wsadowego mogą być niekompletne. Częściowe ponowne uruchomienia są typowym problemem z wnioskowaniem wsadowym. Jednym z rozwiązań jest użycie obszaru przejściowego dla danych i przeniesienie danych tylko do końcowego miejsca docelowego po pomyślnym zakończeniu zadania wnioskowania wsadowego. Innym rozwiązaniem jest zachowanie rekordu lub transakcji każdego przetworzonego pliku i porównanie tego rekordu z listą plików wejściowych, aby uniknąć duplikowania. Ta metoda zawiera logikę w skry skryfcie oceniania. To rozwiązanie jest bardziej złożone, ale można dostosować logikę niepowodzenia, jeśli zadanie wnioskowania wsadowego zakończy się niepowodzeniem.

  • Wymagania dotyczące zabezpieczeń. Użyj uwierzytelniania i autoryzacji, aby kontrolować dostęp do punktu końcowego wsadowego w celu zapewnienia zwiększonych zabezpieczeń.

    • Punkt końcowy wsadowy z ochroną ruchu przychodzącego akceptuje tylko żądania oceniania z hostów wewnątrz sieci wirtualnej. Nie akceptuje żądań oceniania z publicznego Internetu. Punkt końcowy wsadowy utworzony w obszarze roboczym z obsługą łącza prywatnego ma ochronę ruchu przychodzącego. Aby uzyskać więcej informacji, zobacz Izolacja sieci w punktach końcowych wsadowych.
    • Użyj tokenów firmy Microsoft Entra do uwierzytelniania.
    • Użyj szyfrowania SSL w punkcie końcowym, który jest domyślnie włączony dla wywołania punktu końcowego Edukacja maszyny.
    • Punkty końcowe usługi Batch zapewniają, że tylko autoryzowani użytkownicy mogą wywoływać wdrożenia wsadowe, ale użytkownicy mogą używać innych poświadczeń do odczytywania danych bazowych. Aby uzyskać informacje o magazynach danych i poświadczeniach w celu uzyskania do nich dostępu, zobacz tabelę dostępu do danych.
  • Integracja z usługą Batch. Punkty końcowe usługi Batch Edukacja maszyny używają otwartego interfejsu API. Wnioskowanie wsadowe może być zintegrowane z innymi usługami platformy Azure, takimi jak Azure Data Factory, Azure Databricks i Azure Synapse Analytics, aby stanowić część większego potoku danych. Można na przykład użyć następujących funkcji:

    • Usługa Data Factory do organizowania procesu wnioskowania wsadowego.
    • Usługa Azure Databricks przygotowuje dane do wnioskowania wsadowego.
    • Maszyna Edukacja do uruchomienia procesu wnioskowania wsadowego.
    • Usługa Azure Synapse Analytics do przechowywania kolejnych przewidywań.

    Punkty końcowe usługi Batch obsługują identyfikator entra firmy Microsoft na potrzeby autoryzacji. Żądanie do interfejsu API wymaga odpowiedniego uwierzytelniania. Usługi platformy Azure, takie jak Data Factory, obsługują używanie jednostki usługi lub tożsamości zarządzanej do uwierzytelniania w punktach końcowych wsadowych. Aby uzyskać więcej informacji, zobacz Uruchamianie punktów końcowych wsadowych z usługi Data Factory.

    Aby wybrać najlepszą metodę przetwarzania danych wejściowych i wyjściowych wsadowych, ważne jest, aby zrozumieć, jak dane przechodzą przez etapy potoków danych. Dostęp do usług danych platformy Azure można uzyskać bezpośrednio za pośrednictwem skryptu oceniania punktu końcowego wsadowego przy użyciu zestawów SDK, ale używanie Edukacja zarejestrowanych magazynów danych jest prostsze, bezpieczne i można przeprowadzić inspekcję. W przypadku źródeł danych innych firm użyj aparatu przetwarzania danych, takiego jak Data Factory, Azure Databricks lub Azure Synapse Analytics, aby przygotować dane do wnioskowania wsadowego i zastosować przetwarzanie końcowe.

  • MLflow. Podczas opracowywania modeli należy używać platformy open source MLflow. Usługa Machine Edukacja obsługuje wdrażanie modeli bez kodu tworzonych i logujących się za pomocą biblioteki MLflow. Podczas wdrażania modelu MLflow w punkcie końcowym wsadowym nie trzeba wskazywać skryptu oceniania ani środowiska.

Wnioskowanie w czasie rzeczywistym

Wnioskowanie w czasie rzeczywistym to metoda umożliwiająca wyzwalanie wnioskowania modelu w dowolnym momencie i natychmiastowe reagowanie. Ta metoda służy do analizowania danych przesyłanych strumieniowo lub interaktywnych danych aplikacji.

Rozważ następujące najlepsze rozwiązania dotyczące wnioskowania w czasie rzeczywistym:

  • Opcje obliczeniowe. Najlepszym sposobem zaimplementowania wnioskowania w czasie rzeczywistym jest wdrożenie modelu, który znajduje się w punkcie końcowym online, do zarządzanego punktu końcowego online lub punktu końcowego online platformy Kubernetes. Zarządzane punkty końcowe online wdrażają modele uczenia maszynowego natychmiast przy użyciu procesora CPU lub maszyn gpu na platformie Azure. Ta metoda jest skalowalna i w pełni zarządzana. Punkty końcowe online platformy Kubernetes wdrażają modele i obsługują punkty końcowe online w w pełni skonfigurowanym i zarządzanym klastrze Kubernetes. Aby uzyskać więcej informacji, zobacz Managed online endpoints vs Kubernetes online endpoints (Zarządzane punkty końcowe online a punkty końcowe online platformy Kubernetes).

  • Wdrażanie w wielu regionach i wysoka dostępność. Architektury wdrażania regionalnego i wysokiej dostępności to przykłady scenariuszy wnioskowania w czasie rzeczywistym, ponieważ opóźnienie i wydajność modelu są krytyczne. Aby zmniejszyć opóźnienia we wdrożeniach obejmujących wiele regionów, znajdź model jak najbliżej punktu zużycia. W przypadku modelu i infrastruktury pomocniczej postępuj zgodnie z zasadami i strategią i strategią wysokiej dostępności i odzyskiwania po awarii w firmie.

  • Wyzwania wnioskowania w czasie rzeczywistym.

    • Wnioskowanie w czasie rzeczywistym jest bardziej złożone ze względu na opóźnienia i wymagania dotyczące wydajności. Prosty system czasu rzeczywistego odbiera dane wejściowe za pośrednictwem żądania HTTP i zwraca przewidywanie. Jednak złożony system może wymagać odpowiedzi w ciągu 100 milisekund lub mniej. W tym czasie pobiera dane, wykonuje inżynierię cech, wykonuje wnioskowanie, weryfikuje i przechowuje wyniki modelu, uruchamia logikę biznesową i zwraca wyniki do systemu lub aplikacji.
    • Odciążaj inżynierię funkcji do magazynu danych o małych opóźnieniach, usługi buforowania lub dedykowanego magazynu funkcji. Magazyn funkcji to scentralizowane repozytorium, które umożliwia analitykom danych znajdowanie i udostępnianie funkcji. Magazyn funkcji zapewnia, że ten sam kod, który jest używany do obliczania wartości funkcji, jest również używany do trenowania i wnioskowania modelu.
  • Wymagania dotyczące zabezpieczeń. W celu zapewnienia zwiększonych zabezpieczeń użyj uwierzytelniania i autoryzacji, aby kontrolować dostęp do punktu końcowego online.

    • Punkt końcowy online z ochroną ruchu przychodzącego akceptuje tylko żądania oceniania z hostów w sieci wirtualnej. Nie akceptuje żądań oceniania z publicznego Internetu. Punkt końcowy online utworzony w obszarze roboczym z obsługą łącza prywatnego ma ochronę ruchu przychodzącego. Aby uzyskać więcej informacji, zobacz Używanie izolacji sieciowej z zarządzanymi punktami końcowymi online.
    • Użyj tokenów firmy Microsoft Entra do uwierzytelniania płaszczyzny sterowania. W przypadku operacji płaszczyzny danych obsługiwane są podejścia oparte na kluczach i oparte na tokenach. Preferowane jest podejście oparte na tokenach, ponieważ tokeny wygasają. Użyj kontroli dostępu opartej na rolach (RBAC) platformy Azure, aby ograniczyć dostęp i pobrać klucz lub token dla punktu końcowego online.
    • Użyj szyfrowania SSL w punkcie końcowym, który jest domyślnie włączony dla wywołania punktu końcowego Edukacja maszyny.
  • Integracja w czasie rzeczywistym. Integrowanie wnioskowania w czasie rzeczywistym z innymi usługami platformy Azure przy użyciu zestawów SDK dla różnych języków i wywoływanie punktu końcowego przy użyciu interfejsu API REST. Punkt końcowy online można wywołać jako część kodu aplikacji.

  • MLflow. Podczas opracowywania modeli należy używać platformy open source MLflow. Usługa Machine Edukacja obsługuje wdrażanie modeli bez kodu tworzonych i logujących się za pomocą biblioteki MLflow. Podczas wdrażania modelu MLflow w punkcie końcowym online nie trzeba wskazywać skryptu oceniania ani środowiska.

  • Sejf wdrożenie. Wdrażanie wycofanych aktualizacji do modeli uczenia maszynowego w celu zapewnienia, że model działa zgodnie z oczekiwaniami. Użyj strategii bezpiecznego wdrażania Edukacja maszyny, aby wdrożyć model w punkcie końcowym, przeprowadzić testowanie względem modelu i stopniowo zwiększać ruch do nowego modelu. Korzystaj z dublowanego ruchu w celu zdublowania procentowego ruchu na żywo do nowego modelu w celu uzyskania dodatkowej weryfikacji. Dublowanie ruchu, nazywane również cieniowaniem, nie zmienia wyników zwracanych do klientów. Wszystkie żądania nadal przepływają do oryginalnego modelu. Aby uzyskać więcej informacji, zobacz Sejf wdrażanie punktów końcowych online.

Inne kwestie wymagające rozważenia

Należy pamiętać o tych zagadnieniach podczas wdrażania modeli uczenia maszynowego w środowiskach produkcyjnych.

ONNX

Aby zoptymalizować wnioskowanie modeli uczenia maszynowego, użyj programu Open Neural Network Exchange (ONNX). Może to stanowić wyzwanie, aby w pełni wykorzystać możliwości sprzętowe podczas optymalizowania modeli, szczególnie w przypadku korzystania z różnych platform (na przykład chmury/krawędzi lub procesora CPU/procesora GPU). Możesz wytrenować nowy model lub przekonwertować istniejący model z innego formatu na ONNX.

Scenariusz wiele modeli

Pojedynczy model może nie uchwycić złożonego charakteru rzeczywistych problemów. Na przykład supermarkety mają dane demograficzne, marki, jednostki SKU i inne funkcje, które różnią się między regionami, co sprawia, że wyzwaniem jest utworzenie pojedynczego modelu przewidywania sprzedaży. Podobnie odmiany regionalne mogą stanowić wyzwanie dla modelu konserwacji predykcyjnej inteligentnego miernika. Używanie wielu modeli do przechwytywania regionalnych danych lub relacji na poziomie magazynu w celu zapewnienia większej dokładności niż pojedynczy model. Podejście oparte na wielu modelach zakłada, że wystarczająca ilość danych jest dostępna dla tego poziomu szczegółowości.

Scenariusz z wieloma modelami obejmuje trzy etapy: źródło danych, naukę o danych i wiele modeli.

A diagram that shows the stages of the many-models scenario.

  • Źródło danych. Na etapie źródła danych ważne jest, aby podzielić dane na tylko kilka elementów. Na przykład nie należy uwzględniać identyfikatora produktu ani kodu kreskowego w partycji głównej, ponieważ generuje zbyt wiele segmentów i może hamować znaczące modele. Marka, jednostka SKU lub lokalizacja są bardziej odpowiednie elementy. Ważne jest uproszczenie danych przez usunięcie anomalii, które mogą wypaczyć dystrybucję danych.

  • Nauka o danych. Na etapie nauki o danych kilka eksperymentów jest uruchamianych równolegle do każdego segmentu danych. Eksperymentowanie z wieloma modelami to proces iteracyjny, który ocenia modele w celu określenia najlepszego.

  • Wiele modeli. Najlepsze modele dla każdego segmentu lub kategorii są rejestrowane w rejestrze modeli. Przypisz znaczące nazwy do modeli, aby były bardziej wykrywalne na potrzeby wnioskowania. Użyj tagowania, jeśli jest to konieczne, aby pogrupować model w określone kategorie.

Wnioskowanie wsadowe dla wielu modeli

W przypadku wielu modeli podczas wnioskowania wsadowego przewidywania są w harmonogramie cyklicznym i mogą obsługiwać duże ilości danych uruchamianych w tym samym czasie. W przeciwieństwie do scenariusza pojedynczego modelu wnioskowanie wielu modeli odbywa się w tym samym czasie.

Wiele modeli wnioskowania wsadowego używa wielu wdrożeń względem pojedynczego zarządzanego punktu końcowego. Wnioskowanie wsadowe dla określonych modeli wywołuje nazwę wdrożenia podczas wywołania REST lub zestawu SDK. Aby uzyskać więcej informacji, zobacz Wdrażanie wielu modeli w jednym wdrożeniu.

Wnioskowanie w czasie rzeczywistym dla wielu modeli

Wiele modeli można wdrożyć w jednym zarządzanym punkcie końcowym online, który można wywołać za pomocą interfejsu API REST lub zestawu SDK. Podczas tworzenia wdrożeń zarejestruj wiele modeli jako pojedynczy "zarejestrowany model" na platformie Azure. Uwzględnij wiele modeli w tym samym katalogu i przekaż ten katalog jako ścieżkę pojedynczego modelu. Modele są ładowane do słownika, który jest kluczem ich nazw. Po odebraniu żądania REST żądany model jest pobierany z ładunku JSON, a odpowiedni model ocenia ładunek.

Modele ładowane we wdrożeniu wielomodelowym przy użyciu tej techniki muszą współużytkować tę samą wersję języka Python i nie mają konfliktowych zależności. Ich biblioteki muszą być importowane jednocześnie, nawet jeśli nie mają dokładnie tych samych zależności.

Aby zapoznać się z przykładem, zobacz Tworzenie wdrożenia wielomodelowego przy użyciu kontenera niestandardowego.

Następne kroki