Udostępnij za pośrednictwem


Pozyskiwanie danych przy użyciu usługi Azure Data Factory

W tym artykule przedstawiono dostępne opcje tworzenia potoku pozyskiwania danych za pomocą usługi Azure Data Factory. Ten potok usługi Azure Data Factory służy do pozyskiwania danych do użycia z usługą Azure Machine Learning. Usługa Data Factory umożliwia łatwe wyodrębnianie, przekształcanie i ładowanie danych (ETL). Gdy dane zostaną przekształcone i załadowane do magazynu, mogą służyć do trenowania modeli uczenia maszynowego w usłudze Azure Machine Learning.

Proste przekształcanie danych można obsługiwać za pomocą natywnych działań i instrumentów usługi Data Factory, takich jak przepływ danych. Jeśli chodzi o bardziej skomplikowane scenariusze, dane mogą być przetwarzane przy użyciu kodu niestandardowego. Na przykład kod python lub R.

Porównanie potoków pozyskiwania danych usługi Azure Data Factory

Istnieje kilka typowych technik używania usługi Data Factory do przekształcania danych podczas pozyskiwania. Każda technika ma zalety i wady, które pomagają określić, czy jest to dobre rozwiązanie dla konkretnego przypadku użycia:

Technika Zalety Wady
Data Factory + Azure Functions
  • Małe opóźnienia, przetwarzanie bezserwerowe
  • Funkcje stanowe
  • Funkcje wielokrotnego użytku
  • Tylko dobre w przypadku krótkotrwałego przetwarzania
    Data Factory + składnik niestandardowy
  • Przetwarzanie równoległe na dużą skalę
  • Odpowiednie dla dużych algorytmów
  • Wymaga zawijania kodu do pliku wykonywalnego
  • Złożoność obsługi zależności i operacji we/wy
  • Notes usługi Data Factory i usługi Azure Databricks
  • Apache Spark
  • Natywne środowisko języka Python
  • Może być kosztowna
  • Tworzenie klastrów początkowo zajmuje trochę czasu i dodaje opóźnienie
  • Usługa Azure Data Factory z funkcjami platformy Azure

    Usługa Azure Functions umożliwia uruchamianie małych fragmentów kodu (funkcji) bez martwienia się o infrastrukturę aplikacji. W tej opcji dane są przetwarzane przy użyciu niestandardowego kodu w języku Python opakowanego w funkcję platformy Azure.

    Funkcja jest wywoływana za pomocą działania funkcji platformy Azure w usłudze Azure Data Factory. Takie podejście jest dobrym rozwiązaniem w przypadku lekkich przekształceń danych.

    Diagram przedstawia potok usługi Azure Data Factory z funkcją platformy Azure i potokiem run ML oraz potokiem usługi Azure Machine Learning z modułem Train Model oraz sposobem interakcji z nieprzetworzonymi danymi i przygotowanymi danymi.

    • Zalety:
      • Dane są przetwarzane na bezserwerowych obliczeniach z stosunkowo małym opóźnieniem
      • Potok usługi Data Factory może wywoływać trwałą funkcję platformy Azure, która może implementować zaawansowany przepływ przekształcania danych
      • Szczegóły przekształcania danych są abstrakcje przez funkcję platformy Azure, która może być ponownie użyta i wywołana z innych miejsc
    • Wady:
      • Przed użyciem usługi ADF należy utworzyć usługę Azure Functions
      • Usługa Azure Functions jest dobra tylko w przypadku krótkotrwałego przetwarzania danych

    Usługa Azure Data Factory z działaniem składnika niestandardowego

    W tej opcji dane są przetwarzane przy użyciu niestandardowego kodu języka Python opakowanego w plik wykonywalny. Jest wywoływana z działaniem składnika niestandardowego usługi Azure Data Factory. Takie podejście jest lepsze w przypadku dużych danych niż w poprzedniej technice.

    Diagram przedstawia potok usługi Azure Data Factory z niestandardowym składnikiem i potokiem Run M L oraz potokiem usługi Azure Machine Learning z modułem Train Model oraz sposobem interakcji z nieprzetworzonymi danymi i przygotowanymi danymi.

    • Zalety:
      • Dane są przetwarzane w puli usługi Azure Batch , która zapewnia przetwarzanie równoległe na dużą skalę i obliczenia o wysokiej wydajności
      • Może służyć do uruchamiania dużych algorytmów i przetwarzania znacznych ilości danych
    • Wady:
      • Przed rozpoczęciem korzystania z usługi Data Factory należy utworzyć pulę usługi Azure Batch
      • Ponad inżynieria związana z zawijaniem kodu w języku Python do pliku wykonywalnego. Złożoność obsługi zależności i parametrów wejściowych/wyjściowych

    Usługa Azure Data Factory z notesem języka Python w usłudze Azure Databricks

    Azure Databricks to platforma analityczna oparta na platformie Apache Spark w chmurze firmy Microsoft.

    W tej technice transformacja danych jest wykonywana przez notes języka Python uruchomiony w klastrze usługi Azure Databricks. Jest to prawdopodobnie najbardziej typowe podejście, które korzysta z pełnej możliwości usługi Azure Databricks. Jest ona przeznaczona do rozproszonego przetwarzania danych na dużą skalę.

    Diagram przedstawia potok usługi Azure Data Factory z usługą Azure Databricks Python i Run M L Pipeline oraz potokiem usługi Azure Machine Learning z modułem Train Model oraz sposobem interakcji z nieprzetworzonymi danymi i przygotowanymi danymi.

    • Zalety:
      • Dane są przekształcane w najbardziej zaawansowaną usługę przetwarzania danych platformy Azure, której kopia zapasowa jest tworzona przez środowisko Apache Spark
      • Natywna obsługa języka Python wraz z platformami i bibliotekami nauki o danych, takimi jak TensorFlow, PyTorch i scikit-learn
      • Nie trzeba opakowować kodu w języku Python do funkcji lub modułów wykonywalnych. Kod działa w następujący sposób.
    • Wady:
      • Przed rozpoczęciem korzystania z usługi Data Factory należy utworzyć infrastrukturę usługi Azure Databricks
      • Może być kosztowna w zależności od konfiguracji usługi Azure Databricks
      • Uruchamianie klastrów obliczeniowych z trybu "zimnego" zajmuje trochę czasu, co powoduje duże opóźnienie w rozwiązaniu

    Korzystanie z danych w usłudze Azure Machine Learning

    Potok usługi Data Factory zapisuje przygotowane dane w magazynie w chmurze (np. Azure Blob lub Azure Data Lake).
    Korzystanie z przygotowanych danych w usłudze Azure Machine Learning według,

    • Wywoływanie potoku usługi Azure Machine Learning z potoku usługi Data Factory.
      OR
    • Tworzenie magazynu danych usługi Azure Machine Learning.

    Wywoływanie potoku usługi Azure Machine Learning z usługi Data Factory

    Ta metoda jest zalecana w przypadku przepływów pracy operacji uczenia maszynowego (MLOps). Jeśli nie chcesz konfigurować potoku usługi Azure Machine Learning, zobacz Odczyt danych bezpośrednio z magazynu.

    Za każdym razem, gdy potok usługi Data Factory jest uruchamiany,

    1. Dane są zapisywane w innej lokalizacji w magazynie.
    2. Aby przekazać lokalizację do usługi Azure Machine Learning, potok usługi Data Factory wywołuje potok usługi Azure Machine Learning. Gdy potok usługi Data Factory wywołuje potok usługi Azure Machine Learning, lokalizacja danych i identyfikator zadania są wysyłane jako parametry.
    3. Potok uczenia maszynowego może następnie utworzyć magazyn danych i zestaw danych usługi Azure Machine Learning z lokalizacją danych. Dowiedz się więcej w temacie Wykonywanie potoków usługi Azure Machine Learning w usłudze Data Factory.

    Diagram przedstawia potok usługi Azure Data Factory i potok usługi Azure Machine Learning oraz sposób interakcji z nieprzetworzonymi danymi i przygotowanymi danymi. Potok usługi Data Factory generuje dane do bazy danych Przygotowane dane, która jest źródłem danych magazynu danych, który jest źródłem danych w obszarze roboczym usługi Machine Learning.

    Napiwek

    Zestawy danych obsługują przechowywanie wersji, dzięki czemu potok uczenia maszynowego może zarejestrować nową wersję zestawu danych, która wskazuje najnowsze dane z potoku usługi ADF.

    Gdy dane są dostępne za pośrednictwem magazynu danych lub zestawu danych, można go użyć do trenowania modelu uczenia maszynowego. Proces trenowania może być częścią tego samego potoku uczenia maszynowego wywoływanego z usługi ADF. Może to być też oddzielny proces, taki jak eksperymentowanie w notesie Jupyter.

    Ponieważ zestawy danych obsługują przechowywanie wersji, a każde zadanie z potoku tworzy nową wersję, łatwo jest zrozumieć, która wersja danych została użyta do wytrenowania modelu.

    Odczytywanie danych bezpośrednio z magazynu

    Jeśli nie chcesz tworzyć potoku uczenia maszynowego, możesz uzyskać dostęp do danych bezpośrednio z konta magazynu, na którym przygotowane dane są zapisywane przy użyciu magazynu danych i zestawu danych usługi Azure Machine Learning.

    Poniższy kod w języku Python pokazuje, jak utworzyć magazyn danych łączący się z magazynem usługi Azure DataLake Generation 2. Dowiedz się więcej o magazynach danych i miejscu znajdowania uprawnień jednostki usługi.

    DOTYCZY: Zestaw SDK języka Python w wersji 1

    ws = Workspace.from_config()
    adlsgen2_datastore_name = '<ADLS gen2 storage account alias>'  #set ADLS Gen2 storage account alias in Azure Machine Learning
    
    subscription_id=os.getenv("ADL_SUBSCRIPTION", "<ADLS account subscription ID>") # subscription id of ADLS account
    resource_group=os.getenv("ADL_RESOURCE_GROUP", "<ADLS account resource group>") # resource group of ADLS account
    
    account_name=os.getenv("ADLSGEN2_ACCOUNTNAME", "<ADLS account name>") # ADLS Gen2 account name
    tenant_id=os.getenv("ADLSGEN2_TENANT", "<tenant id of service principal>") # tenant id of service principal
    client_id=os.getenv("ADLSGEN2_CLIENTID", "<client id of service principal>") # client id of service principal
    client_secret=os.getenv("ADLSGEN2_CLIENT_SECRET", "<secret of service principal>") # the secret of service principal
    
    adlsgen2_datastore = Datastore.register_azure_data_lake_gen2(
        workspace=ws,
        datastore_name=adlsgen2_datastore_name,
        account_name=account_name, # ADLS Gen2 account name
        filesystem='<filesystem name>', # ADLS Gen2 filesystem
        tenant_id=tenant_id, # tenant id of service principal
        client_id=client_id, # client id of service principal
    

    Następnie utwórz zestaw danych, aby odwoływać się do plików, których chcesz użyć w zadaniu uczenia maszynowego.

    Poniższy kod tworzy tabelaryczny zestaw danych na podstawie pliku CSV. prepared-data.csv Dowiedz się więcej o typach zestawów danych i akceptowanych formatach plików.

    DOTYCZY: Zestaw SDK języka Python w wersji 1

    from azureml.core import Workspace, Datastore, Dataset
    from azureml.core.experiment import Experiment
    from azureml.train.automl import AutoMLConfig
    
    # retrieve data via Azure Machine Learning datastore
    datastore = Datastore.get(ws, adlsgen2_datastore)
    datastore_path = [(datastore, '/data/prepared-data.csv')]
            
    prepared_dataset = Dataset.Tabular.from_delimited_files(path=datastore_path)
    

    W tym miejscu użyj polecenia prepared_dataset , aby odwołać się do przygotowanych danych, na przykład w skryptach szkoleniowych. Dowiedz się, jak trenować modele przy użyciu zestawów danych w usłudze Azure Machine Learning.

    Następne kroki