Używanie podejścia architektury wiele modeli do skalowania modeli uczenia maszynowego
W tym artykule opisano architekturę dla wielu modeli korzystających z usługi Azure Machine Learning i klastrów obliczeniowych. Architektura wiele modeli zapewnia wszechstronność sytuacji wymagających złożonej konfiguracji.
Architektura
Pobierz plik programu Visio z tą architekturą.
Przepływ danych
Poniższy przepływ danych odpowiada poprzedniemu diagramowi:
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.
Potok trenowania modelu:
Przygotowywanie danych:
Potok trenowania pobiera dane z magazynu danych i przekształca je zgodnie z potrzebami.
Dane są pogrupowane 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 modele i ich metryki testowania w usłudze Machine Learning.
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ść testowania danych przekracza 80%.
Rejestrowanie modeli:
- Potok podwyższania poziomu rejestruje kwalifikujące się modele 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.
Dane są pogrupowane w zestawy danych na potrzeby oceniania.
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
zapisuje wyniki z powrotem do usługi Azure Data Lake.Przewidywania są przekazywane z usługi Azure Data Lake do usługi Synapse SQL na potrzeby obsługi.
Zarządzany punkt końcowy online zapewnia ocenianie w czasie rzeczywistym.
Ze względu na dużą liczbę modeli są ładowane na żądanie zamiast wstępnie załadowanych.
Wyniki:
Przewidywania: potok oceniania wsadowego zapisuje przewidywania w usłudze Synapse SQL.
Metryki: usługa Microsoft 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 pozyskiwa dane przedsiębiorstwa i metadane innych firm do usługi Data Lake Storage.
Azure DevOps to zestaw usług deweloperskich, które zapewniają kompleksowe zarządzanie cyklem życia aplikacji i infrastruktury. Obejmuje ona narzędzia do potoków ciągłej integracji i ciągłego dostarczania (CI/CD), śledzenia pracy, kontroli źródła, potoków kompilacji, 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.
usługa Azure SQL Database to w pełni zarządzana relacyjna baza danych w chmurze. W tej architekturze usługa SQL Database służy do przechowywania danych ustrukturyzowanych, które mogą być odpytywane lub analizowane w ramach potoku danych.
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 Stream Analytics może służyć do przetwarzania danych w czasie rzeczywistym.
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. Takie podejście umożliwia wydajne wykonywanie zapytań i pobieranie przewidywań na potrzeby raportowania lub analizy. Usługa Synapse SQL służy 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ługa Data Lake Storage to wysoce skalowalna i bezpieczna usługa magazynu na potrzeby obciążeń analitycznych o wysokiej wydajności. W tej architekturze usługa Data Lake Storage służy jako podstawowa warstwa magazynu dla nieprzetworzonych i przekształconych zestawów danych oraz do przechowywania wyników z potoków oceniania.
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 narzędzia, takie jak projektant kodu niskiego poziomu, zautomatyzowane uczenie maszynowe i hostowane środowisko notesu Jupyter, które obsługuje różne zintegrowane środowiska programistyczne. W tej architekturze usługa Machine Learning służy do zarządzania cyklem życia modeli, w tym trenowania, oceny i wdrażania. Organizuje również potoki pod kątem zadań, takich jak trenowanie, podwyższanie poziomu i ocenianie.
zarządzane punkty końcowe online to funkcja usługi Machine Learning używana do oceniania w czasie rzeczywistym. W tej architekturze zarządzany punkt końcowy online pomaga zapewnić skalowalny i bezpieczny sposób obsługi przewidywań niemal w czasie rzeczywistym przez ładowanie modeli uczenia maszynowego na żądanie.
Klasa ParallelRun Step to składnik potoków uczenia maszynowego używany do wydajnego uruchamiania zadań równoległych. Umożliwia ona skalowalne przetwarzanie zadań wsadowych, takich jak trenowanie lub ocenianie wielu modeli jednocześnie. W tej architekturze klasa
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.
usługi Power BI to kolekcja usług, aplikacji i łączników oprogramowania, 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
Możesz użyć dowolnej bazy danych dla danych źródłowych.
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. Te możliwości umożliwiają dynamiczne ładowanie modeli do obsługi żądań przychodzących bez wyczerpywania 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 ona sprzedaż dla każdego sklepu, czy modelowania konserwacji setek studni olejowych, posiadanie modelu dla każdego wystąpienia może poprawić wyniki w przypadku wielu problemów 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 Machine Learning kompleksowe potoki wielu modeli mogą 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. Jeśli na przykład zadaniem jest przewidywanie sprzedaży dla każdego elementu w każdym sklepie, każdy zestaw danych odpowiada unikatowej kombinacji sklepu z elementami.
Potencjalne przypadki użycia
Retail: Sieć sklepów spożywczych musi utworzyć oddzielny model prognozy przychodów dla każdego sklepu i produktu, w sumie ponad 1000 modeli dla każdego sklepu.
Ł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żdą franczyzę.
Kwestie wymagające rozważenia
Te zagadnienia implementują filary platformy Azure Well-Architected Framework, która jest zestawem wytycznych, których można użyć do poprawy jakości obciążenia. Aby uzyskać więcej informacji, zobacz Well-Architected Framework.
Partycje danych: dzielenie danych na partycje jest niezbędne do implementowania wielu wzorców modeli. Jeśli chcesz mieć jeden model dla każdego magazynu, każdy zestaw danych zawiera wszystkie dane dla jednego magazynu, więc istnieje tyle zestawów danych, ile są magazyny. Jeśli chcesz modelować produkty według sklepu, istnieje 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ą dobrze skalowane dla tych zadań, podczas gdy biblioteka Pandas języka Python nie działa w jednym węźle i procesie.
Zarządzanie modelami: potoki trenowania i oceniania identyfikują i wywołują odpowiedni model dla każdego zestawu danych. Robią to, obliczając 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.
Wybierz odpowiednią architekturę:
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.
Jeśli algorytmy trenowania i oceniania uczenia maszynowego są proste, możesz podzielić dane na partycje przy użyciu bibliotek, takich jak scikit-learn. W tym scenariuszu może nie być potrzebna platforma Spark, aby uniknąć możliwych złożoności występujących podczas instalowania usługi Azure Synapse Analytics lub Azure Databricks.
Jeśli zestawy danych szkoleniowych są już tworzone, na przykład gdy są przechowywane w osobnych plikach lub zorganizowane w odrębne wiersze lub kolumny, nie potrzebujesz platformy Spark do złożonych przekształceń danych.
Rozwiązanie Machine Learning i klastry obliczeniowe zapewnia wszechstronność sytuacji wymagających złożonej konfiguracji. Możesz na przykład użyć niestandardowego kontenera platformy Docker, pobrać pliki lub pobrać wstępnie wytrenowane modele. Przetwarzanie obrazów i przetwarzanie języka naturalnego to przykłady aplikacji, które mogą wymagać tej wszechstronności.
oddzielne repozytoria modeli: Aby chronić wdrożone modele, rozważ przechowywanie ich we własnym repozytorium, do którego potoki trenowania i testowania nie mają dostępu.
Klasa ParallelRunStep:Klasa ParallelRunStep języka Python ParallelRunStep 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, które ma dostęp 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 od 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 koncentruje się na sposobach 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 uruchamiania tego scenariusza na platformie Azure, skorzystaj z kalkulatora cen . Należy założyć, że:
Modele obsługujące są szkolone codziennie, aby zachować ich aktualność.
Potrzebujesz około 30 minut, aby przetworzyć zestaw danych zawierający 40 milionów wierszy z 10 tysięcy unikatowych kombinacji produktów sklepu. Zestaw danych trenuje w usłudze Azure Databricks przy użyciu klastra aprowizowania z 12 maszynami wirtualnymi korzystającymi z wystąpień Ls16_v2. 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.
Klaster usługi AKS jest automatycznie skalowany w razie potrzeby, co powoduje średnio dwa aktywne węzły każdego miesiąca.
Aby zobaczyć, jak ceny różnią się w twoim przypadku użycia, zmień zmienne w kalkulatorze cen, aby dopasować oczekiwany rozmiar danych i obsługiwać wymagania dotyczące 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
Firma Microsoft utrzymuje ten artykuł. Następujący współautorzy napisali ten artykuł.
Główny autor:
- James Nguyen | Główny architekt rozwiązań w chmurze
Aby wyświetlić niepubliczne profile serwisu LinkedIn, zaloguj się do serwisu LinkedIn.
Następne kroki
- Konfigurowanie klastra Kubernetes na potrzeby usługi Machine Learning
- repozytorium GitHub akceleratora rozwiązań wielu modeli
- ParallelRunStep, klasa
- DataTransferStep, klasa
- Tworzenie magazynów danych
- Co to jest usługa Azure Synapse Analytics?
- Wdrażanie modelu w klastrze usługi AKS