простые шаги для начала работы с 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/, за которым вы можете следить за похожим содержанием.
Спасибо 🙏