Прием данных с помощью Фабрики данных Azure

В этой статье вы узнаете о доступных вариантах создания конвейера приема данных с помощью Фабрики данных Azure. Этот конвейер Фабрики данных Azure применяется для приема данных, которые будут использоваться с Машинным обучением Azure. Фабрика данных позволяет легко извлекать, преобразовывать и загружать данные. После преобразования и загрузки данных в хранилище их можно использовать для обучения моделей машинного обучения в Машинном обучении Azure.

Простое преобразование данных можно обрабатывать с помощью собственных действий и инструментов Фабрики данных, таких как поток данных. В более сложных сценариях данные можно обрабатывать с помощью пользовательского кода. Например, кода Python или R.

Сравнение конвейеров приема данных в Фабрике данных Azure

Существует несколько распространенных способов использования Фабрики данных для преобразования данных во время приема. Каждый способ имеет свои преимущества и недостатки, которые помогают определить, подходит ли он для конкретного варианта использования:

Метод Преимущества Недостатки
Фабрика данных и Функции Azure
  • Низкая задержка, бессерверные вычисления
  • Функции с отслеживанием состояния
  • Многократно используемые функции
  • Хорошо работает только для кратковременной обработки
    Фабрика данных и пользовательский компонент
  • Крупномасштабные параллельные вычисления
  • Подходит для сложных алгоритмов
  • Необходимо заключение кода в исполняемый файл
  • Сложная обработка зависимостей и операций ввода-вывода
  • Фабрика данных и записная книжка Azure Databricks
  • Apache Spark
  • Собственная среда Python
  • Может быть дорогостоящим
  • Создание кластеров изначально занимает некоторое время и увеличивает задержку
  • Фабрика данных Azure с Функциями Azure

    Функции Azure позволяют запускать небольшие фрагменты кода (т. н. функции), не беспокоясь об инфраструктуре приложения. В этом случае данные обрабатываются с помощью пользовательского кода Python, упакованного в функцию Azure.

    Функция вызывается с помощью действия функции Azure Фабрики данных Azure. Этот способ — хороший вариант для простых преобразований данных.

    На схеме показаны конвейер Фабрики данных Azure с функцией Azure и запущенным конвейером машинного обучения и конвейер Машинного обучения Azure с обучением модели, а также их взаимодействие с необработанными данными и подготовленными данными.

    • Преимущества:
      • Данные обрабатываются с помощью бессерверных вычислений с относительно низкой задержкой.
      • Конвейер Фабрики данных может вызывать устойчивую функцию Azure, которая может реализовывать сложный поток преобразования данных.
      • Сведения о преобразовании данных являются абстрактными для функции Azure, которую можно повторно использовать и вызывать из других мест.
    • Недостатки:
      • Функции Azure необходимо создать перед использованием с ADF.
      • Функции Azure хорошо работают только для кратковременной обработки данных.

    Фабрика данных Azure с действием пользовательского компонента

    В этом варианте данные обрабатываются с помощью пользовательского кода Python, заключенного в исполняемый файл. Он вызывается с помощью действия пользовательского компонента Фабрики данных Azure. Этот способ лучше подходит для больших объемов данных, чем предыдущий.

    На схеме показаны конвейер Фабрики данных Azure с пользовательским компонентом и запущенным конвейером машинного обучения и конвейер Машинного обучения Azure с обучением модели, а также их взаимодействие с необработанными данными и подготовленными данными.

    • Преимущества:
      • Данные обрабатываются в пуле пакетной службы Azure, которая обеспечивает крупномасштабные параллельные и высокопроизводительные вычисления.
      • Может использоваться для выполнения сложных алгоритмов и обработки значительных объемов данных.
    • Недостатки:
      • Пул пакетной службы Azure необходимо создать перед его использованием с Фабрикой данных.
      • Дополнительное проектирование, связанное с заключением кода Python в исполняемый файл. Сложность обработки зависимостей, а также входных и выходных параметров.

    Фабрика данных Azure с записной книжкой Python Azure Databricks

    Azure Databricks — это высокопроизводительная платформа аналитики на основе Apache Spark в облаке Майкрософт.

    В этом способе преобразование данных выполняется в записной книжке Python, которая работает в кластере Azure Databricks. Возможно, это самый распространенный способ, использующий все возможности службы Azure Databricks. Он предназначен для распределенной обработки данных в большом масштабе.

    На схеме показаны конвейер Фабрики данных Azure с Python Azure Databricks и запущенным конвейером машинного обучения и конвейер Машинного обучения Azure с обучением модели, а также их взаимодействие с необработанными данными и подготовленными данными.

    • Преимущества:
      • Данные преобразуются в самой мощной службе Azure для обработки данных, резервирование которой обеспечивается средой Apache Spark.
      • Собственная поддержка Python наряду с платформами и библиотеками для обработки и анализа данных, включая TensorFlow, PyTorch и Scikit-learn.
      • Нет необходимости заключать код Python в функции или исполняемые модули. Код работает как есть.
    • Недостатки:
      • Необходимо создать инфраструктуру Azure Databricks перед ее использованием с Фабрикой данных.
      • Может обходиться дорого в зависимости от конфигурации Azure Databricks.
      • Раскрутка вычислительных кластеров из "холодного" режима занимает некоторое время, что привносит в решение довольно высокую задержку.

    Использование данных в Машинном обучении Azure

    Конвейер Фабрики данных сохраняет подготовленные данные в вашем облачном хранилище (например, в Хранилище BLOB-объектов Azure или Azure Data Lake).
    Чтобы использовать подготовленные данные в Машинном обучении Azure, можно:

    Вызов конвейера Машинного обучения Azure из Фабрики данных

    Этот способ рекомендуется для рабочих процессов операций Машинного обучения (MLOps). Если вы не хотите настраивать конвейер Машинного обучения Azure, см. раздел Чтение данных непосредственно из хранилища.

    При каждом запуске конвейера фабрики данных происходит следующее.

    1. Данные сохраняются в другом расположении в хранилище.
    2. Чтобы передать расположение в Машинное обучение Azure, конвейер Фабрики данных вызывает конвейер Машинного обучения Azure. При вызове конвейера ML расположение данных и идентификатор задания отправляются в качестве параметров.
    3. Затем конвейер ML может создать хранилище данных и набор данных Машинного обучения Azure с этим расположением данных. Дополнительные сведения см. в разделе Выполнение конвейеров Машинного обучения Azure в Фабрике данных Azure.

    Схема: конвейер Фабрики данных Azure и конвейер Машинного обучения Azure, их взаимодействие с необработанными и подготовленными данными. Конвейер Фабрики данных передает данные в базу подготовленных данных, а та отправляет их в хранилище, которое предоставляет наборы данных рабочей области Машинного обучения.

    Совет

    Наборы данных поддерживают управление версиями, поэтому конвейер ML может зарегистрировать новую версию набора данных, которая указывает на самые последние данные из конвейера ADF.

    После того как данные станут доступны через хранилище данных или набор данных, их можно использовать для обучения модели ML. Процесс обучения может быть частью того же конвейера ML, который вызывается из ADF. Это также может быть отдельный процесс, такой как экспериментирование в записной книжке Jupyter.

    Так как наборы данных поддерживают управление версиями и каждое задание из конвейера создает новую версию, можно довольно легко понять, какая версия используется для обучения модели.

    Чтение данных непосредственно из хранилища

    Если вы не хотите создавать конвейер ML, можно получать доступ к данным непосредственно из учетной записи хранения, где подготовленные данные сохраняются в хранилище данных и наборе данных Машинного обучения Azure.

    Следующий код Python показывает, как создать хранилище данных, которое подключается к хранилищу Azure Data Lake 2-го поколения. Дополнительные сведения о хранилищах данных и о том, где найти разрешения субъекта-службы.

    ОБЛАСТЬ ПРИМЕНЕНИЯ:Пакет SDK для Python для ML Azure версии 1

    ws = Workspace.from_config()
    adlsgen2_datastore_name = '<ADLS gen2 storage account alias>'  #set ADLS Gen2 storage account alias in AzureML
    
    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
    

    Затем создайте набор данных для ссылки на файлы, которые вы хотите использовать в задаче машинного обучения.

    Следующий код создает набор данных TabularDataset из CSV-файла prepared-data.csv. Дополнительные сведения о типах наборов данных и допустимых форматах файлов.

    ОБЛАСТЬ ПРИМЕНЕНИЯ:Пакет SDK для Python для ML Azure версии 1

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

    Здесь prepared_dataset можно использовать для ссылки на подготовленные данные, например, в сценариях обучения. Дополнительные сведения о том, как обучать модели, см. в разделе Обучение моделей с использованием наборов данных в Машинном обучении Azure.

    Дальнейшие действия