Wiele modeli uczenia maszynowego na dużą skalę za pomocą usługi Azure Machine Learning

Azure Data Factory
Azure Data Lake
Azure Databricks
Azure Machine Learning
Azure Synapse Analytics

W tym artykule opisano architekturę dla wielu modeli korzystających z usługi Machine Learning i klastrów obliczeniowych. Zapewnia doskonałą wszechstronność w sytuacjach wymagających złożonej konfiguracji.

Artykuł towarzyszący Wiele modeli uczenia maszynowego na dużą skalę na platformie Azure za pomocą platformy Spark używa platformy Apache Spark w usłudze Azure Databricks lub Azure Synapse Analytics.

Architektura

Diagram architektury dla wielu modeli uczenia maszynowego na dużą skalę na platformie Azure przy użyciu usługi Azure Machine Learning.

Pobierz plik programu Visio z tą architekturą.

Przepływ pracy

  1. pozyskiwanie danych :

    • Usługa Azure Data Factory pobiera dane ze źródłowej bazy danych i kopiuje je do usługi Azure Data Lake Storage.
    • Dane są następnie przechowywane w magazynie danych usługi Machine Learning jako tabelaryczny zestaw danych.
  2. Potok Model-Training:

    1. przygotowywanie danych:
      • Potok trenowania pobiera dane z magazynu danych i przekształca je w razie potrzeby.
      • Dane są pogrupowane w zestawy danych na potrzeby trenowania modeli.
    2. Trenowanie modeli:
      • Potok trenuje modele dla wszystkich zestawów danych utworzonych podczas przygotowywania danych.
      • Używa klasy ParallelRunStep do równoległego trenowania wielu modeli.
      • Po trenowaniu potok rejestruje modele w usłudze Machine Learning wraz z ich metrykami testowania.
  3. Potok Model-Promotion:

    1. Ocenianie modeli:
      • Potok podwyższania poziomu ocenia wytrenowane modele przed przeniesieniem ich do środowiska produkcyjnego.
      • Potok DevOps stosuje logikę biznesową w celu określenia, czy model spełnia kryteria wdrożenia (np. sprawdzanie, czy dokładność testowania danych przekracza 80%).
    2. rejestrowanie modeli :
      • Potok podwyższania poziomu rejestruje kwalifikujące się modele do produkcyjnego obszaru roboczego usługi Machine Learning.
  4. Potok Batch-Scoring modelu :

    1. przygotowywanie danych:
      • Potok oceniania wsadowego pobiera dane z magazynu danych i przekształca każdy plik w razie potrzeby.
      • Dane są pogrupowane w zestawy danych na potrzeby oceniania.
    2. modele oceny :
      • Potok używa klasy ParallelRunStep do oceny wielu zestawów danych równolegle.
      • Identyfikuje odpowiedni model dla każdego zestawu danych w usłudze Machine Learning, wyszukując tagi modelu.
      • Model jest pobierany i używany do oceniania zestawu danych.
      • Klasa DataTransferStep służy do zapisywania wyników z powrotem do usługi Azure Data Lake.
      • Przewidywania są następnie przekazywane z usługi Azure Data Lake do usługi Synapse SQL na potrzeby obsługi.
  5. Real-Time Ocenianie:

    • Zarządzany punkt końcowy online służy do zapewniania oceniania w czasie rzeczywistym.
    • Ze względu na dużą liczbę modeli są ładowane na żądanie, a nie wstępnie załadowane.
  6. Wyniki:

    1. Przewidywania: potok oceniania wsadowego zapisuje przewidywania w usłudze Synapse SQL.
    2. Metryki: usługa Power BI łączy się z przewidywaniami modelu w celu pobrania i agregowania wyników prezentacji.

Składniki

  • azure Data Factory to oparta na chmurze usługa integracji danych, która umożliwia tworzenie opartych na danych przepływów pracy do organizowania i automatyzowania przenoszenia i przekształcania danych. W tej architekturze usługa Azure Data Factory służy do pozyskiwania danych przedsiębiorstwa i metadanych innych firm do usługi Azure Data Lake Storage.

  • azure Stream Analytics to analiza w czasie rzeczywistym i złożona usługa przetwarzania zdarzeń przeznaczona do analizowania i przetwarzania dużych ilości szybkich danych przesyłanych strumieniowo. W tej architekturze usługa Azure Stream Analytics może być potencjalnie używana do przetwarzania danych w czasie rzeczywistym, chociaż nie jest jawnie wyświetlana w przepływie pracy.

  • Azure Machine Learning to usługa uczenia maszynowego klasy korporacyjnej służąca do szybkiego tworzenia i wdrażania modeli. Zapewnia użytkownikom na wszystkich poziomach umiejętności narzędzia, takie jak projektant kodu niskiego poziomu, zautomatyzowane uczenie maszynowe (AutoML) i hostowane środowisko notesu Jupyter, które obsługuje różne środowiska IDE. W tej architekturze usługa Azure Machine Learning służy do zarządzania cyklem życia modeli uczenia maszynowego, w tym trenowania, oceny, wdrażania i organizowania potoków, takich jak trenowanie, podwyższanie poziomu i ocenianie.

    zarządzany punkt końcowy online to funkcja usługi Azure Machine Learning używana do oceniania w czasie rzeczywistym. W tej architekturze zapewnia skalowalny i bezpieczny sposób obsługi przewidywań niemal w czasie rzeczywistym przez ładowanie modeli uczenia maszynowego na żądanie.

  • ParallelRunStep jest składnikiem potoków usługi Azure Machine Learning używanych do wydajnego uruchamiania zadań równoległych. Umożliwia ona skalowalne wykonywanie procesów wsadowych, takich jak trenowanie lub ocenianie wielu modeli jednocześnie. W tej architekturze ParallelRunStep jest używana zarówno w potokach trenowania modelu, jak i oceniania wsadowego do trenowania lub oceniania wielu zestawów danych lub modeli równolegle, co znacznie zmniejsza środowisko uruchomieniowe tych operacji.

  • Azure Data Lake Storage to wysoce skalowalna i bezpieczna usługa magazynu dla obciążeń analitycznych o wysokiej wydajności. W tej architekturze usługa Azure Data Lake Storage służy jako podstawowa warstwa magazynu dla nieprzetworzonych i przekształconych zestawów danych, a także do przechowywania wyników z potoków oceniania.

  • Azure Synapse Analytics to usługa analityczna, która łączy integrację danych, magazynowanie danych przedsiębiorstwa i analizę danych big data. Jest ona używana w tej architekturze do przechowywania wyników oceniania wsadowego, umożliwiając wydajne wykonywanie zapytań i pobieranie przewidywań na potrzeby raportowania lub analizy. Usługa Synapse SQL jest specjalnie używana do udostępniania przewidywań aplikacjom podrzędnym i umożliwiania narzędzi wizualizacji, takich jak usługa Power BI, w celu uzyskania dostępu do zagregowanych wyników.

  • usługi Azure SQL Database to w pełni zarządzana relacyjna baza danych jako usługa. W tej architekturze usługa Azure SQL Database służy do przechowywania danych ustrukturyzowanych, które mogą być odpytywane lub analizowane w ramach potoku danych.

  • Azure DevOps to zestaw usług deweloperskich, które zapewniają kompleksowe zarządzanie cyklem życia aplikacji i infrastruktury. Obejmuje ona narzędzia do śledzenia pracy, kontroli źródła, kompilacji i ciągłego wdrażania, zarządzania pakietami i testowania rozwiązań. W tej architekturze usługa Azure DevOps służy do zarządzania potokami ciągłej integracji/ciągłego wdrażania w celu automatyzacji podwyższania poziomu, testowania i wdrażania modeli w środowiskach produkcyjnych.

  • Microsoft Power BI to zbiór usług oprogramowania, aplikacji i łączników, które współpracują ze sobą, aby przekształcić niepowiązane źródła danych w spójne, atrakcyjne wizualnie i interaktywne szczegółowe informacje. W tej architekturze usługa Power BI łączy się z usługą Synapse SQL w celu pobierania i prezentowania przewidywań i zagregowanych metryk za pośrednictwem interaktywnych pulpitów nawigacyjnych.

Alternatywy

  • Dane źródłowe mogą pochodzić z dowolnej bazy danych.
  • Usługi Azure Kubernetes Service (AKS) można używać do wnioskowania w czasie rzeczywistym zamiast zarządzanych punktów końcowych online. Usługa AKS umożliwia wdrażanie modeli konteneryzowanych i zapewnia większą kontrolę nad wdrażaniem, umożliwiając dynamiczne ładowanie modeli do obsługi żądań przychodzących bez wyczerpania zasobów.

Szczegóły scenariusza

Wiele problemów z uczeniem maszynowym jest zbyt złożonych, aby można było rozwiązać jeden model uczenia maszynowego. Niezależnie od tego, czy przewiduje sprzedaż dla każdego sklepu, czy modelowanie konserwacji setek studni olejowych, posiadanie modelu dla każdego wystąpienia może poprawić wyniki w wielu problemach z uczeniem maszynowym. Ten wiele modeli jest często spotykanych w wielu różnych branżach i ma wiele rzeczywistych przypadków użycia. W przypadku korzystania z usługi Azure Machine Learning pełny potok wielu modeli może obejmować trenowanie modeli, wdrażanie wnioskowania wsadowego i wdrażanie w czasie rzeczywistym.

Wiele modeli wymaga innego zestawu danych dla każdego modelu podczas trenowania i oceniania. Na przykład jeśli zadaniem jest przewidywanie sprzedaży dla każdego sklepu, każdy zestaw danych będzie dla unikatowej kombinacji sklepu.

Potencjalne przypadki użycia

  • Sprzedaż detaliczna: Sieć sklepów spożywczych musi utworzyć oddzielny model prognozy przychodów dla każdego sklepu i produktu, łącznie z ponad 1000 modelami na sklep.
  • Łańcuch dostaw: dla każdej kombinacji magazynu i produktu firma dystrybucyjna musi zoptymalizować zapasy.
  • Restauracje: Sieć z tysiącami franczyz musi prognozować zapotrzebowanie na każdy.

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.

  • Partycje danych Partycjonowanie danych jest kluczem do implementowania wielu wzorców modeli. Jeśli chcesz jeden model na magazyn, zestaw danych obejmuje wszystkie dane dla jednego magazynu i istnieje tyle zestawów danych, ile są magazyny. Jeśli chcesz modelować produkty według sklepu, będzie dostępny zestaw danych dla każdej kombinacji produktu i sklepu. W zależności od formatu danych źródłowych dane mogą być łatwe do partycjonowania lub może wymagać obszernego mieszania i przekształcania danych. Platforma Spark i usługa Synapse SQL są bardzo dobrze skalowane w przypadku takich zadań, natomiast biblioteka pandas języka Python nie działa tylko w jednym węźle i procesie.
  • Zarządzanie modelami: potoki trenowania i oceniania identyfikują i wywołują odpowiedni model dla każdego zestawu danych. W tym celu obliczają tagi, które scharakteryzują zestaw danych, a następnie używają tagów do znalezienia pasującego modelu. Tagi identyfikują klucz partycji danych i wersję modelu, a także mogą udostępniać inne informacje.
  • Wybieranie odpowiedniej architektury:
    • Platforma Spark jest odpowiednia, gdy potok trenowania ma złożone wymagania dotyczące przekształcania i grupowania danych. Zapewnia elastyczne techniki dzielenia i grupowania w celu grupowania danych według kombinacji cech, takich jak product-store lub location-product. Wyniki można umieścić w ramce danych platformy Spark do użycia w kolejnych krokach.
    • Gdy algorytmy trenowania i oceniania uczenia maszynowego są proste, może być możliwe partycjonowanie danych za pomocą bibliotek, takich jak scikit-learn. W takich przypadkach może nie być potrzebna platforma Spark, aby uniknąć możliwych złożoności, które mogą wystąpić podczas instalowania usługi Azure Synapse lub Azure Databricks.
    • Gdy zestawy danych trenowania są już tworzone — na przykład znajdują się one w oddzielnych plikach lub w oddzielnych wierszach lub kolumnach — nie potrzebujesz platformy Spark do złożonych przekształceń danych.
    • Rozwiązanie Machine Learning i klastry obliczeniowe zapewnia doskonałą wszechstronność w sytuacjach wymagających złożonej konfiguracji. Możesz na przykład użyć niestandardowego kontenera platformy Docker lub pobrać pliki albo pobrać wstępnie wytrenowane modele. Przetwarzanie obrazów i przetwarzanie języka naturalnego (NLP) to przykłady aplikacji, które mogą wymagać takiej wszechstronności.
  • Oddzielne repozytoria modeli: Aby chronić wdrożone modele, rozważ przechowywanie ich we własnym repozytorium, które nie dotyka potoków trenowania i testowania.
  • ParallelRunStep, klasa: Klasa ParallelRunStep języka Python to zaawansowana opcja uruchamiania wielu modeli trenowania i wnioskowania. Może ona partycjonować dane na różne sposoby, a następnie stosować skrypt uczenia maszynowego na elementy partycji równolegle. Podobnie jak w przypadku innych form trenowania usługi Machine Learning, można określić niestandardowe środowisko szkoleniowe z dostępem do pakietów PyPI (Python Package Index) lub bardziej zaawansowane niestandardowe środowisko platformy Docker dla konfiguracji, które wymagają więcej niż standardowego interfejsu PyPI. Istnieje wiele procesorów CPU i procesorów GPU do wyboru.
  • Wnioskowanie online: jeśli potok ładuje i buforuje wszystkie modele na początku, modele mogą wyczerpać pamięć kontenera. W związku z tym załaduj modele na żądanie w metodzie run, mimo że może nieznacznie zwiększyć opóźnienie.

Optymalizacja kosztów

Optymalizacja kosztów dotyczy sposobów zmniejszenia niepotrzebnych wydatków i poprawy wydajności operacyjnej. Aby uzyskać więcej informacji, zobacz Lista kontrolna przeglądu projektu dotycząca optymalizacji kosztów.

Aby lepiej zrozumieć koszt działania tego scenariusza na platformie Azure, skorzystaj z kalkulatora cen. Dobre założenia początkowe to:

  • Modele obsługujące są szkolone codziennie, aby zachować ich aktualność.
  • W przypadku zestawu danych zawierającego 40 milionów wierszy z 10 tysiącami kombinacji sklepu i produktu trenowanie w usłudze Azure Databricks przy użyciu klastra aprowizowanego z 12 maszynami wirtualnymi korzystającymi z wystąpień Ls16_v2 trwa około 30 minut.
  • Ocenianie wsadowe przy użyciu tego samego zestawu danych trwa około 20 minut.
  • Usługa Machine Learning umożliwia wdrażanie wnioskowania w czasie rzeczywistym. W zależności od woluminu żądania wybierz odpowiedni typ maszyny wirtualnej i rozmiar klastra.
  • Automatyczne skalowanie klastra usługi AKS zgodnie z potrzebami, co powoduje, że średnio aktywne są dwa węzły na miesiąc.

Aby sprawdzić, jak różnią się ceny dla danego przypadku użycia, zmień zmienne, aby odpowiadały oczekiwanemu rozmiarowi danych i obsłudze wymagań dotyczących obciążenia. W przypadku większych lub mniejszych rozmiarów danych treningowych zwiększ lub zmniejsz rozmiar klastra usługi Azure Databricks. Aby obsługiwać więcej równoczesnych użytkowników podczas obsługi modelu, zwiększ rozmiar klastra usługi AKS.

Współautorzy

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

Główny autor:

Następne kroki