Share via


Gegevensopname met Azure Data Factory

In dit artikel vindt u informatie over de beschikbare opties voor het bouwen van een pijplijn voor gegevensopname met Azure Data Factory. Deze Azure Data Factory-pijplijn wordt gebruikt om gegevens op te nemen voor gebruik met Azure Machine Learning. Met Data Factory kunt u eenvoudig ETL-gegevens (extraheren, transformeren en laden). Zodra de gegevens zijn getransformeerd en geladen in de opslag, kunnen ze worden gebruikt om uw machine learning-modellen te trainen in Azure Machine Learning.

Eenvoudige gegevenstransformatie kan worden verwerkt met systeemeigen Data Factory-activiteiten en instrumenten zoals gegevensstroom. Als het gaat om complexere scenario's, kunnen de gegevens worden verwerkt met een aantal aangepaste code. Bijvoorbeeld Python- of R-code.

Gegevensopnamepijplijnen van Azure Data Factory vergelijken

Er zijn verschillende algemene technieken voor het gebruik van Data Factory om gegevens tijdens opname te transformeren. Elke techniek heeft voor- en nadelen die helpen bepalen of deze geschikt is voor een specifieke use case:

Techniek Voordelen Nadelen
Data Factory + Azure Functions
  • Lage latentie, serverloze rekenkracht
  • Stateful functies
  • Herbruikbare functies
  • Alleen goed voor korte verwerking
    Data Factory + aangepast onderdeel
  • Grootschalige parallelle computing
  • Geschikt voor zware algoritmen
  • Vereist dat code in een uitvoerbaar bestand wordt verpakt
  • Complexiteit van het verwerken van afhankelijkheden en IO
  • Data Factory + Azure Databricks-notebook
  • Apache Spark
  • Systeemeigen Python-omgeving
  • Kan duur zijn
  • Het maken van clusters kost in eerste instantie tijd en voegt latentie toe
  • Azure Data Factory met Azure Functions

    Met Azure Functions kunt u kleine stukjes code (functies) uitvoeren zonder dat u zich zorgen hoeft te maken over de toepassingsinfrastructuur. In deze optie worden de gegevens verwerkt met aangepaste Python-code die is verpakt in een Azure-functie.

    De functie wordt aangeroepen met de Azure Data Factory Azure Function-activiteit. Deze aanpak is een goede optie voor lichtgewicht gegevenstransformaties.

    Diagram shows an Azure Data Factory pipeline, with Azure Function and Run ML Pipeline, and an Azure Machine Learning pipeline, with Train Model, and how they interact with raw data and prepared data.

    • Voordelen:
      • De gegevens worden verwerkt op een serverloze berekening met een relatief lage latentie
      • Data Factory-pijplijn kan een Durable Azure-functie aanroepen die een geavanceerde gegevenstransformatiestroom kan implementeren
      • De details van de gegevenstransformatie worden weggeabstraheerd door de Azure-functie die kan worden hergebruikt en aangeroepen vanaf andere locaties
    • Nadelen:
      • De Azure Functions moet worden gemaakt voor gebruik met ADF
      • Azure Functions is alleen geschikt voor kortlopende gegevensverwerking

    Azure Data Factory met aangepaste onderdeelactiviteit

    In deze optie worden de gegevens verwerkt met aangepaste Python-code die is verpakt in een uitvoerbaar bestand. Deze wordt aangeroepen met een aangepaste Azure Data Factory-onderdeelactiviteit. Deze benadering is beter geschikt voor grote gegevens dan de vorige techniek.

    Diagram shows an Azure Data Factory pipeline, with a custom component and Run M L Pipeline, and an Azure Machine Learning pipeline, with Train Model, and how they interact with raw data and prepared data.

    • Voordelen:
      • De gegevens worden verwerkt in azure Batch-pool , die grootschalige parallelle en high-performance computing biedt
      • Kan worden gebruikt om zware algoritmen uit te voeren en aanzienlijke hoeveelheden gegevens te verwerken
    • Nadelen:
      • Azure Batch-pool moet worden gemaakt voor gebruik met Data Factory
      • Over engineering met betrekking tot het verpakken van Python-code in een uitvoerbaar bestand. Complexiteit van het verwerken van afhankelijkheden en invoer-/uitvoerparameters

    Azure Data Factory met Azure Databricks Python-notebook

    Azure Databricks is een op Apache Spark gebaseerd analyseplatform in de Microsoft-cloud.

    In deze techniek wordt de gegevenstransformatie uitgevoerd door een Python-notebook, uitgevoerd op een Azure Databricks-cluster. Dit is waarschijnlijk de meest voorkomende benadering die gebruikmaakt van de volledige kracht van een Azure Databricks-service. Het is ontworpen voor gedistribueerde gegevensverwerking op schaal.

    Diagram shows an Azure Data Factory pipeline, with Azure Databricks Python and Run M L Pipeline, and an Azure Machine Learning pipeline, with Train Model, and how they interact with raw data and prepared data.

    • Voordelen:
      • De gegevens worden getransformeerd op de krachtigste Azure-service voor gegevensverwerking, waarvan een back-up wordt gemaakt door de Apache Spark-omgeving
      • Systeemeigen ondersteuning van Python, samen met data science-frameworks en -bibliotheken, waaronder TensorFlow, PyTorch en scikit-learn
      • U hoeft de Python-code niet te verpakken in functies of uitvoerbare modules. De code werkt zoals is.
    • Nadelen:
      • De Azure Databricks-infrastructuur moet worden gemaakt voordat deze wordt gebruikt met Data Factory
      • Kan duur zijn, afhankelijk van de Configuratie van Azure Databricks
      • Het maken van rekenclusters vanuit de 'koude' modus duurt enige tijd waardoor de oplossing een hoge latentie krijgt

    Gegevens gebruiken in Azure Machine Learning

    De Data Factory-pijplijn slaat de voorbereide gegevens op in uw cloudopslag (zoals Azure Blob of Azure Data Lake).
    Gebruik uw voorbereide gegevens in Azure Machine Learning door,

    Azure Machine Learning-pijplijn aanroepen vanuit Data Factory

    Deze methode wordt aanbevolen voor MLOps-werkstromen (Machine Learning Operations). Als u geen Azure Machine Learning-pijplijn wilt instellen, raadpleegt u Gegevens rechtstreeks uit de opslag lezen.

    Telkens wanneer de Data Factory-pijplijn wordt uitgevoerd,

    1. De gegevens worden opgeslagen op een andere locatie in de opslag.
    2. Als u de locatie wilt doorgeven aan Azure Machine Learning, roept de Data Factory-pijplijn een Azure Machine Learning-pijplijn aan. Bij het aanroepen van de ML-pijplijn worden de gegevenslocatie en taak-id verzonden als parameters.
    3. De ML-pijplijn kan vervolgens een Azure Machine Learning-gegevensarchief en -gegevensset maken met de gegevenslocatie. Meer informatie vindt u in Azure Machine Learning-pijplijnen uitvoeren in Data Factory.

    Diagram shows an Azure Data Factory pipeline and an Azure Machine Learning pipeline and how they interact with raw data and prepared data. The Data Factory pipeline feeds data to the Prepared Data database, which feeds a data store, which feeds datasets in the Machine Learning workspace.

    Fooi

    Gegevenssets ondersteunen versiebeheer, zodat de ML-pijplijn een nieuwe versie van de gegevensset kan registreren die verwijst naar de meest recente gegevens uit de ADF-pijplijn.

    Zodra de gegevens toegankelijk zijn via een gegevensarchief of gegevensset, kunt u deze gebruiken om een ML-model te trainen. Het trainingsproces maakt mogelijk deel uit van dezelfde ML-pijplijn die wordt aangeroepen vanuit ADF. Of het kan een afzonderlijk proces zijn, zoals experimenten in een Jupyter-notebook.

    Omdat gegevenssets versiebeheer ondersteunen en elke taak uit de pijplijn een nieuwe versie maakt, is het eenvoudig te begrijpen welke versie van de gegevens is gebruikt om een model te trainen.

    Gegevens rechtstreeks vanuit de opslag lezen

    Als u geen ML-pijplijn wilt maken, hebt u rechtstreeks toegang tot de gegevens vanuit het opslagaccount waarin uw voorbereide gegevens worden opgeslagen met een Azure Machine Learning-gegevensarchief en -gegevensset.

    De volgende Python-code laat zien hoe u een gegevensarchief maakt dat verbinding maakt met Azure DataLake Generation 2-opslag. Meer informatie over gegevensarchieven en waar u machtigingen voor de service-principal kunt vinden.

    VAN TOEPASSING OP: Python SDK azureml v1

    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
    

    Maak vervolgens een gegevensset om te verwijzen naar de bestanden die u wilt gebruiken in uw machine learning-taak.

    Met de volgende code wordt een TabularDataset gemaakt op basis van een CSV-bestand. prepared-data.csv Meer informatie over typen gegevenssets en geaccepteerde bestandsindelingen.

    VAN TOEPASSING OP: Python SDK azureml v1

    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)
    

    Gebruik hier prepared_dataset om te verwijzen naar uw voorbereide gegevens, zoals in uw trainingsscripts. Meer informatie over het trainen van modellen met gegevenssets in Azure Machine Learning.

    Volgende stappen