Wsadowe ocenianie modeli języka Python na platformie Azure

Azure Container Registry
Azure Event Hubs
Azure Machine Learning
Azure SQL Database
Azure Stream Analytics

W tym przewodniku po architekturze pokazano, jak utworzyć skalowalne rozwiązanie dla modeli oceniania wsadowego usługi Azure Machine Edukacja. Rozwiązanie może służyć jako szablon i uogólniać różne problemy.

Architektura

Diagram architektury przedstawiający wsadowe ocenianie modeli języka Python na platformie Azure

Pobierz plik programu Visio z tą architekturą.

Przepływ pracy

Ten przewodnik po architekturze ma zastosowanie zarówno w przypadku danych przesyłanych strumieniowo, jak i statycznych, pod warunkiem, że proces pozyskiwania jest dostosowany do typu danych. Poniższe kroki i składniki opisują pozyskiwanie tych dwóch typów danych.

Dane przesyłane strumieniowo:

  1. Dane przesyłane strumieniowo pochodzą z czujników IoT, gdzie nowe zdarzenia są przesyłane strumieniowo w częstych odstępach czasu.
  2. Przychodzące zdarzenia przesyłania strumieniowego są kolejkowane przy użyciu usługi Azure Event Hubs, a następnie wstępnie przetwarzane przy użyciu usługi Azure Stream Analytics.
    • Azure Event Hubs. Ta usługa pozyskiwania komunikatów może pozyskiwać miliony komunikatów o zdarzeniach na sekundę. W tej architekturze czujniki wysyłają strumień danych do centrum zdarzeń.
    • Azure Stream Analytics. Aparat przetwarzania zdarzeń. Zadanie usługi Stream Analytics odczytuje strumienie danych z centrum zdarzeń i wykonuje przetwarzanie strumienia.

Dane statyczne:

  1. Statyczne zestawy danych mogą być przechowywane jako pliki w usłudze Azure Data Lake Storage lub w formie tabelarycznej w usłudze Azure Synapse lub usłudze Azure SQL Database.
  2. Usługa Azure Data Factory może służyć do agregowania lub wstępnego przetwarzania przechowywanego zestawu danych.

Pozostała architektura po pozyskiwaniu danych jest równa zarówno dla danych przesyłanych strumieniowo, jak i statycznych, i składa się z następujących kroków i składników:

  1. Pozyskane, zagregowane lub wstępnie przetworzone dane mogą być przechowywane jako dokumenty w usłudze Azure Data Lake Storage lub w formie tabelarycznej w usłudze Azure Synapse lub Azure SQL Database. Te dane będą następnie używane przez usługę Azure Machine Edukacja.
  2. Usługa Azure Machine Edukacja służy do trenowania, wdrażania i zarządzania modelami uczenia maszynowego na dużą skalę. W kontekście oceniania wsadowego usługa Azure Machine Edukacja tworzy klaster maszyn wirtualnych z opcją automatycznego skalowania, gdzie zadania są wykonywane równolegle jako skrypty języka Python.
  3. Modele są wdrażane jako zarządzane punkty końcowe usługi Batch, które są następnie używane do wnioskowania wsadowego na dużych ilościach danych w danym okresie. Punkty końcowe partii odbierają wskaźniki do danych i uruchamiają zadania asynchronicznie, aby przetwarzać dane równolegle w klastrach obliczeniowych.
  4. Wyniki wnioskowania mogą być przechowywane jako dokumenty w usłudze Azure Data Lake Storage lub w formie tabelarycznej w usłudze Azure Synapse lub Usłudze Azure SQL Database.
  5. Wizualizacja: przechowywane wyniki modelu mogą być używane za pośrednictwem interfejsów użytkownika, takich jak pulpity nawigacyjne usługi Power BI lub za pomocą niestandardowych aplikacji internetowych.

Składniki

Kwestie wymagające rozważenia

Te zagadnienia implementują filary struktury Azure Well-Architected Framework, która jest zestawem wytycznych, które mogą służyć do poprawy jakości obciążenia. Aby uzyskać więcej informacji, zobacz Microsoft Azure Well-Architected Framework.

Wydajność

W przypadku standardowych modeli języka Python zwykle przyjmuje się, że procesory CPU są wystarczające do obsługi obciążenia. Ta architektura korzysta z procesorów CPU. Jednak w przypadku obciążeń uczenia głębokiego jednostki przetwarzania grafiki (GPU) zwykle przewyższają wydajność procesorów CPU o znaczną ilość. W celu uzyskania porównywalnej wydajności zwykle potrzebny jest duży klaster procesorów CPU.

Równoległe między maszynami wirtualnymi a rdzeniami

W przypadku uruchamiania procesów oceniania wielu modeli w trybie wsadowym zadania muszą być równoległe między maszynami wirtualnymi. Możliwe są dwa podejścia:

  • Utwórz większy klaster przy użyciu tanich maszyn wirtualnych.
  • Utwórz mniejszy klaster przy użyciu maszyn wirtualnych o wysokiej wydajności z większą pulą rdzeni dostępnych dla każdego z nich.

Ogólnie rzecz biorąc, ocenianie standardowych modeli języka Python nie jest tak wymagające, jak ocenianie modeli uczenia głębokiego, a mały klaster powinien być w stanie efektywnie obsłużyć dużą liczbę modeli w kolejce. W miarę zwiększania rozmiaru zestawu danych można zwiększyć liczbę węzłów klastra.

Dla wygody w tym scenariuszu jedno zadanie oceniania jest przesyłane w ramach jednego kroku potoku usługi Azure Machine Edukacja. Jednak bardziej wydajne może być ocenianie wielu fragmentów danych w ramach tego samego kroku potoku. W takich przypadkach napisz kod niestandardowy do odczytu w wielu zestawach danych i wykonaj skrypt oceniania podczas wykonywania jednego kroku.

Zarządzanie

  • Monitorowanie zadań. Ważne jest, aby monitorować postęp uruchomionych zadań. Jednak może to stanowić wyzwanie, aby monitorować w klastrze aktywnych węzłów. Aby sprawdzić stan węzłów w klastrze, użyj witryny Azure Portal do zarządzania obszarem roboczym usługi Machine Edukacja. Jeśli węzeł jest nieaktywny lub zadanie nie powiodło się, dzienniki błędów są zapisywane w magazynie obiektów blob i są również dostępne w sekcji Potoki . Aby uzyskać bardziej zaawansowane monitorowanie, połącz dzienniki z usługą Application Szczegółowe informacje lub uruchom oddzielne procesy w celu sondowania stanu klastra i jego zadań.
  • Rejestrowanie. Maszyna Edukacja rejestruje wszystkie stdout/stderr skojarzone konto usługi Azure Storage. Aby łatwo wyświetlić pliki dziennika, użyj narzędzia nawigacji magazynu, takiego jak Eksplorator usługi Azure Storage.

Optymalizacja kosztów

Optymalizacja kosztów dotyczy sposobów zmniejszenia niepotrzebnych wydatków i poprawy wydajności operacyjnej. Aby uzyskać więcej informacji, zobacz Omówienie filaru optymalizacji kosztów.

Najdroższe składniki używane w tym przewodniku architektury to zasoby obliczeniowe. Rozmiar klastra obliczeniowego jest skalowany w górę i w dół w zależności od zadań w kolejce. Włącz automatyczne skalowanie programowo za pomocą zestawu SDK języka Python, modyfikując konfigurację aprowizacji zasobów obliczeniowych. Możesz też użyć interfejsu wiersza polecenia platformy Azure, aby ustawić parametry automatycznego skalowania klastra.

W przypadku pracy, która nie wymaga natychmiastowego przetwarzania, skonfiguruj formułę automatycznego skalowania, aby domyślny stan (minimum) był klastrem zero węzłów. W przypadku tej konfiguracji klaster zaczyna się od zera węzłów i skaluje w górę tylko wtedy, gdy wykryje zadania w kolejce. Jeśli proces oceniania wsadowego odbywa się tylko kilka razy dziennie lub mniej, to ustawienie umożliwia znaczne oszczędności kosztów.

Automatyczne skalowanie może nie być odpowiednie w przypadku zadań wsadowych, które występują zbyt blisko siebie. Ponieważ czas potrzebny na uruchomienie klastra i wyłączenie powoduje poniesienie kosztów, jeśli obciążenie wsadowe rozpoczyna się zaledwie kilka minut po zakończeniu poprzedniego zadania, może to być bardziej opłacalne, aby klaster działał między zadaniami. Ta strategia zależy od tego, czy procesy oceniania mają być uruchamiane z wysoką częstotliwością (na przykład co godzinę), czy rzadziej (na przykład raz w miesiącu).

Współautorzy

Ten artykuł jest obsługiwany przez firmę Microsoft. Pierwotnie został napisany przez następujących współautorów.

Autorzy zabezpieczeń:

Aby wyświetlić niepubalne profile serwisu LinkedIn, zaloguj się do serwisu LinkedIn.

Następne kroki

Dokumentacja produktu:

Moduły microsoft Learn: