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
Pobierz plik programu Visio z tą architekturą.
Przepływ pracy
- 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. Następnie przechowuje je w magazynie danych usługi Machine Learning jako tabelaryczny zestaw danych.
- Potok trenowania modelu:
- Przygotowywanie danych: potok trenowania pobiera dane z magazynu danych i przekształca je w razie potrzeby. Grupuje również dane w zestawy danych na potrzeby trenowania modeli.
- 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 wytrenowanym modelu potok rejestruje go w usłudze Machine Learning wraz z metrykami testowania.
- Potok podwyższania poziomu modelu:
- Ocena 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. Na przykład może sprawdzić, czy dokładność danych testowych wynosi ponad 80 procent.
- Rejestrowanie modeli: potok podwyższania poziomu rejestruje modele kwalifikujące się do produkcyjnego obszaru roboczego usługi Machine Learning.
- Potok oceniania wsadowego modelu:
- Przygotowywanie danych: potok oceniania wsadowego pobiera dane z magazynu danych i przekształca każdy plik zgodnie z potrzebami. Grupuje również dane w zestawy danych na potrzeby oceniania.
- Generowanie wyników modeli: potok używa klasy ParallelRunStep do równoległego oceniania wielu zestawów danych. Znajduje odpowiedni model dla każdego zestawu danych w usłudze Machine Learning, wyszukując tagi modelu. Następnie pobiera model i używa go do oceny zestawu danych. Używa klasy DataTransferStep do zapisywania wyników z powrotem w usłudze Azure Data Lake, a następnie przekazuje przewidywania z usługi Azure Data Lake do usługi Synapse SQL na potrzeby obsługi.
- Ocenianie w czasie rzeczywistym: w razie potrzeby usługa Azure Kubernetes Service (AKS) może wykonywać ocenianie w czasie rzeczywistym. Ze względu na dużą liczbę modeli powinny być ładowane na żądanie, a nie wstępnie załadowane.
- Wyniki:
- Przewidywania: potok oceniania wsadowego zapisuje przewidywania w usłudze Synapse SQL.
- Metryki: usługa Power BI łączy się z przewidywaniami modelu w celu pobrania i agregowania wyników prezentacji.
Składniki
- Azure Machine Learning to usługa uczenia maszynowego klasy korporacyjnej służąca do szybkiego tworzenia i wdrażania modeli. Zapewnia ona użytkownikom na wszystkich poziomach umiejętności projektanta niskiego poziomu kodu, zautomatyzowanego uczenia maszynowego (AutoML) i hostowanego środowiska notesu Jupyter, które obsługuje różne środowiska IDE.
- Azure Databricks to oparte na chmurze narzędzie do inżynierii danych oparte na platformie Apache Spark. Może przetwarzać i przekształcać ogromne ilości danych i eksplorować je przy użyciu modeli uczenia maszynowego. Zadania można pisać w języku R, Python, Java, Scala i Spark SQL.
- Azure Synapse Analytics to usługa analityczna, która łączy integrację danych, magazynowanie danych przedsiębiorstwa i analizę danych big data.
- Synapse SQL to rozproszony system zapytań dla języka T-SQL, który umożliwia scenariusze magazynowania danych i wirtualizacji danych oraz rozszerza język T-SQL na scenariusze przesyłania strumieniowego i uczenia maszynowego. Oferuje zarówno modele zasobów bezserwerowych, jak i dedykowanych.
- Azure Data Lake Storage to wysoce skalowalna i bezpieczna usługa magazynu dla obciążeń analitycznych o wysokiej wydajności.
- Usługa Azure Kubernetes Service (AKS) to w pełni zarządzana usługa Kubernetes służąca do wdrażania konteneryzowanych aplikacji i zarządzania nimi. Usługa AKS upraszcza wdrażanie zarządzanego klastra usługi AKS na platformie Azure, odciążając obciążenie operacyjne na platformę Azure.
- Azure DevOps to zestaw usług deweloperskich, które zapewniają kompleksowe zarządzanie cyklem życia aplikacji i infrastruktury. Metodyka DevOps obejmuje śledzenie pracy, kontrolę źródła, kompilowanie i ciągłe wdrażanie, zarządzanie pakietami i testowanie rozwiązań.
- 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.
Alternatywy
- Dane źródłowe mogą pochodzić z dowolnej bazy danych.
- Do wdrożenia wnioskowania w czasie rzeczywistym można użyć zarządzanego punktu końcowego online lub usługi AKS.
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.
- Trenowanie i ocenianie platformy Spark: w przypadku korzystania z architektury Spark możesz użyć interfejsu API funkcji biblioteki Spark pandas do równoległego trenowania i oceniania.
- 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:
- James Nguyen | Główny architekt rozwiązań w chmurze
Następne kroki
- Konfigurowanie klastra Kubernetes dla usługi Azure Machine Learning
- Wiele modeli — repozytorium GitHub akceleratora rozwiązań
- ParallelRunStep, klasa
- DataTransferStep, klasa
- Nawiązywanie połączenia z usługami magazynu na platformie Azure
- Co to jest usługa Azure Synapse Analytics?
- Wdrażanie modelu w klastrze usługi Azure Kubernetes Service