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 | Tylko dobre w przypadku krótkotrwałego przetwarzania | |
Data Factory + składnik niestandardowy | ||
Notes usługi Data Factory i usługi Azure Databricks |
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.
- 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.
- 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ę.
- 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,
- Dane są zapisywane w innej lokalizacji w magazynie.
- 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.
- 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.
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.