простые шаги для начала работы с Azure ML Pipelines с использованием Python

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

К основным поставщикам облачных услуг относятся Microsoft Azure, AWS и Google Cloud Platform (GCP). Они предоставляют различные услуги, включая облачные серверы, службы развертывания, конвейеры машинного обучения, хранилище данных и т. д.

Сегодня мы обсудим Машинное обучение Azure, услугу, предоставляемую Microsoft Azure и помогающую в создании, обслуживании, отладке и развертывании конвейеров машинного обучения. Он предоставляет разработчикам и специалистам по обработке и анализу данных комплексную среду для выполнения различных операций машинного обучения, таких как подготовка данных, обучение моделей, развертывание моделей и т. д. Он также предоставляет записные книжки и Azure ML Studio для улучшения совместной работы и эффективного анализа операций машинного обучения.

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

Начиная

Чтобы начать работу с конвейерами машинного обучения Azure, нам потребуются следующие предварительные условия:

  • Учетная запись Microsoft Azure
  • Пакет SDK Python для машинного обучения Azure
  • Знание программирования на Python

Установка зависимостей

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

  • azureml-pipeline-core . Этот пакет предоставляет основные функции для создания и развертывания конвейеров машинного обучения.
  • azure-pipeline-steps . Этот пакет содержит набор готовых шагов для стандартных задач машинного обучения.
  • azureml-core . Этот пакет предоставляет основные модули и классы для управления конвейерами Azure. Это включает в себя создание экспериментов, отправку моделей, управление рабочими пространствами и т. д.

Упомянутые выше пакеты можно установить с помощью следующей команды:

pip install <package_name>

Основные компоненты машинного обучения Azure

  • Рабочее пространство: центральное место для хранения и управления всеми связанными ресурсами, связанными с проектом машинного обучения.
  • Вычисления.Облачная инфраструктура для выполнения конвейеров машинного обучения.
  • Эксперимент: помогает отслеживать и управлять рабочими процессами, параметрами и результатами в проекте.
  • Конвейер:инструмент для создания, развертывания и управления рабочими процессами машинного обучения.

Создание нашего первого конвейера машинного обучения

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

Все, что мы делаем в Azure ML, связано с рабочей областью. Эта рабочая область будет содержать сведения обо всех используемых ресурсах, конвейерах и данных. Ниже приведен код для создания рабочей области и сохранения ее в файле конфигурации.

from azureml.core import Workspace

# Create a workspace object
subscription_id = "<your-subscription-id>"
resource_group = "<your-resource-group>"
workspace_name = "<your-workspace-name>"
workspace_region = "<your-workspace-region>"

workspace = Workspace.create(
    name=workspace_name,
    subscription_id=subscription_id,
    resource_group=resource_group,
    location=workspace_region
)

# Save the workspace configuration
workspace.write_config()

Это создаст файл config.json в текущем каталоге, который можно использовать для получения рабочей области, когда это необходимо.

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

from azureml.core.compute import AmlCompute, ComputeTarget

#defining the configuration of the compute machine
provisioning_config = AmlCompute.provisioning_configuration(
                vm_size="<size-of-compute>",
                min_nodes=0, #minimum number of nodes 
                max_nodes=2, # maximum number of nodes
                idle_seconds_before_scaledown=300, #seconds to wait before bringing down a node
            )

#creating the compute in the workspace created above
aml_compute = ComputeTarget.create(
                workspace, "compute-target-name", provisioning_config
            )
#waiting for the compute to be created
aml_compute.wait_for_completion(
                show_output=True, min_node_count=None, timeout_in_minutes=20
            )

В случае, если у нас есть текущие вычисления, мы также можем получить вычисление и использовать его для нашего случая.

from azureml.core.compute import AmlCompute

aml_compute = AmlCompute(workspace, "compute-target-name")

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

Для создания шага мы будем использовать класс PythonScriptStep из модуля from azureml.pipeline.steps. Этот класс предоставляет все необходимые методы и свойства, необходимые для взаимодействия с шагом конвейера. Прежде чем создавать шаги, давайте сначала обсудим само определение и аргументы PythonScriptStep.

Шаг PythonScript

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

  • название: название шага.
  • аргументы:список аргументов, которые необходимо передать в скрипт Python.
  • inputs: список входных данных для шага
  • выходные данные:список выходных данных, сгенерированных шагом.
  • исходный_каталог:путь к папке, содержащей скрипт Python.
  • имя_сценария:имя основного файла сценария. Этот скрипт будет выполнен, когда мы начнем выполнение шага
  • compute_target: имя целевого объекта вычислений или сам объект целевого объекта вычислений. Это говорит о том, на каком вычислении выполнить этот шаг.
  • allow_reuse:иногда параметры сценария остаются неизменными. В таком случае, если для этого логического параметра задано значение True, azure ml повторно использует шаг и возвращает выходные данные предыдущего выполнения.

Код для создания PythonScriptStep приведен ниже:

from azureml.pipeline.steps import PythonScriptStep
from azureml.pipeline.core import PipelineData
# Define the Python script file
script_file = "path/to/script.py"

# Define the inputs, outputs, and parameters for the step
input1 = PipelineData("input1", datastore=workspace.get_default_datastore(),
                      pipeline_output_name="input1")
inputs = [input1]

output1 = PipelineData("output1", datastore=workspace.get_default_datastore(),
                      pipeline_output_name="output1")
outputs = [output1]
arguments = ["--param1", "value1", "--step_output", output1]

# Create the PythonScriptStep step
step1 = PythonScriptStep(
    name="CustomStep",
    script_name=script_file,
    inputs=inputs,
    outputs=outputs,
    compute_target=aml_compute,
    arguments=arguments
)

В приведенном выше коде мы создали PythonScriptStep с одним входом и одним выходом и настроили его для использования в вычислениях, которые мы создали ранее в этой статье.

Следует отметить, что мы не предоставили ни одного примера файла сценария, который можно было бы использовать при создании PythonScriptStep. Это зависит от пользователя, и вы можете создать свой собственный файл и использовать его в конструкторе.

После создания шага конвейера нам остается только поместить шаги в конвейер и запустить его в azure. Для этого мы будем использовать приведенный ниже код.

from azureml.pipeline.core import Pipeline

#steps is a list of all the PipelineStep objects that are required to be executed in sequence
pipeline = Pipeline(workspace=workspace, steps=steps)

experiment = Experiment(workspace, "experiment-name")
experiment.submit(pipeline, show_output=True)

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

Взаимодействие с конвейером

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

  • получение статуса выполнения шага конвейера.
    Конвейеры Azure ML определяют четыре состояния, в которых может находиться шаг во время его выполнения. Это Выполняется, Завершено, Сбой и Инициализация. Чтобы получить статус выполнения шага, мы можем использовать объект PipelineStep и вызвать для него метод get_status . Это вернет строку, описывающую статус шага.
  • загрузка выходных данных шага конвейера.
    Чтобы загрузить выходные данные шага конвейера, нам нужно получить объект шага из конвейера и вызвать метод get_output_data. с именем выходной переменной. Это показано ниже:
from azureml.pipeline.core import PipelineRun

# fetching the pipeline run using the run id
pipeline = PipelineRun.get(workspace, run_id)

# fetching the step from the pipeline run using the step name
step = pipeline.find_step_run("step-name")[0]

# downloading the output from the pipeline step
step.get_output_data("output-variable").download("local_file_path")
  • получить зарегистрированные метрики шага в конвейере.
    Чтобы получить метрики, зарегистрированные на шаге, мы снова получим объект шага и вызовем для него метод get_metrics. Это вернет все метрики, которые были зарегистрированы
step_metrics = step.get_metrics()

Заключение

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

Если вам понравилась эта статья, подписывайтесь на меня, чтобы получать больше подобного контента. У меня есть еще один блог по адресу https://devangmehta1997.wordpress.com/, за которым вы можете следить за похожим содержанием.

Спасибо 🙏