Автор статьи: Рустем Галиев
IBM Senior DevOps Engineer & Integration Architect. Официальный DevOps ментор и коуч в IBM
MLOps, или операции машинного обучения, относится к практике интеграции машинного обучения (ML) в жизненный цикл разработки программного обеспечения. Она направлена на повышение эффективности и результативности разработки и развертывания машинного обучения за счет автоматизации и оптимизации различных связанных задач.
Для MLOps обычно используются несколько инструментов и фреймворков, каждый из которых имеет свои преимущества и недостатки. Вот некоторые из самых популярных инструментов MLOps и краткий обзор их основных функций, включая краткий гайд о настройке и запуска пайплайна:
Kubeflow
Платформа MLOps с открытым исходным кодом, работающая поверх Kubernetes, популярной платформы для оркестровки контейнеров. Она предоставляет набор инструментов и библиотек для создания, развертывания и управления моделями ML, а также набор предварительно упакованных конвейеров ML для общих задач, таких как обучение и обслуживание моделей. Преимущества Kubeflow включают его гибкость и интеграцию с другими инструментами и платформами, а также его масштабируемость и переносимость. Однако его может быть сложно настроить, и для этого требуется хорошее понимание Kubernetes.
Чтобы использовать Kubeflow, вам потребуется установить и настроить кластер Kubernetes, а затем установить и настроить Kubeflow поверх него. Это можно сделать с помощью документации Kubeflow и документации Kubernetes.
Установка и настройка Kubeflow включает следующие шаги:
Настройте кластер Kubernetes: чтобы использовать Kubeflow, вам необходимо настроить и запустить кластер Kubernetes. Существует несколько способов настроить кластер Kubernetes, включая использование облачного провайдера, такого как Amazon Web Services (AWS), Google Cloud Platform (GCP) или Microsoft Azure, или путем установки Kubernetes на собственное оборудование.
Установите инструмент командной строки kfctl: инструмент командной строки kfctl используется для установки и настройки Kubeflow в вашем кластере Kubernetes. Вы можете установить kfctl с помощью следующей команды:
curl -L -o kfctl https://github.com/kubeflow/kfctl/releases/download/v0.8.1/kfctl_v0.8.1-0-ga476281_linux.tar.gz
tar -zxvf kfctl
sudo mv kfctl /usr/local/bin
Создайте файл конфигурации: файл конфигурации используется для указания деталей вашей установки Kubeflow, включая используемую версию Kubeflow, доменное имя, используемое для вашей установки Kubeflow, и любые дополнительные параметры конфигурации. Файл конфигурации с помощью инструмента командной строки kfctl можно создать следующим образом:
kfctl init <DEPLOYMENT_NAME> --config=<CONFIG_FILE>
Где DEPLOYMENT_NAME — это имя, которое вы хотите присвоить развертыванию Kubeflow, а CONFIG_FILE — это путь к вашему файлу конфигурации.
После создания файла конфигурации вы можете использовать инструмент командной строки kfctl для установки Kubeflow в кластере Kubernetes следующим образом:
Установив и настроив Kubeflow, вы можете использовать его для создания, развертывания и управления моделями машинного обучения с помощью предоставленных инструментов и библиотек. Вы также можете использовать готовые конвейеры машинного обучения для автоматизации общих задач, таких как обучение и обслуживание моделей.
Чтобы запустить конвейер в Kubeflow, нужно выполнить следующие шаги:
Создайте конвейера. Конвейер Kubeflow — это направленный ациклический граф (DAG), который определяет шаги, включенные в рабочий процесс машинного обучения. Вы можете создать конвейер с помощью пользовательского интерфейса Kubeflow Pipelines или написав определение конвейера в формате YAML.
Загрузите конвейер: после того, как вы создали свой конвейер, вам нужно будет загрузить его в свой кластер Kubeflow. Это можно сделать с помощью пользовательского интерфейса Kubeflow Pipelines или с помощью команды загрузки конвейеров kubeflow.
Запустите конвейер: после загрузки конвейера вы можете запустить его с помощью пользовательского интерфейса Kubeflow Pipelines или с помощью команды создания конвейеров kubeflow. Когда вы запускаете конвейер, Kubeflow будет выполнять шаги, указанные в определении конвейера, в том порядке, в котором они указаны.
Мониторинг конвейера: во время работы конвейера вы можете отслеживать его ход с помощью пользовательского интерфейса Kubeflow Pipelines. Пользовательский интерфейс предоставляет информацию о состоянии каждого шага в конвейере, а также любые журналы или выходные данные, созданные конвейером.
Таким образом, для запуска конвейера в Kubeflow вам потребуется настроить кластер Kubeflow, создать конвейер, загрузить конвейер в кластер и запустить конвейер. Затем вы можете отслеживать ход конвейера с помощью пользовательского интерфейса Kubeflow Pipelines.
Kubeflow — это мощный инструмент для развертывания и управления рабочими процессами машинного обучения в Kubernetes. Он позволяет организациям использовать согласованный набор инструментов и процессов для управления рабочими процессами машинного обучения, обладает высокой масштабируемостью и отказоустойчивостью. Чтобы использовать Kubeflow, вам потребуется установить и настроить кластер Kubernetes, а затем установить и настроить Kubeflow поверх него.
AWS SageMaker
Полностью управляемая платформа MLOps, предлагаемая Amazon Web Services (AWS). Она предоставляет набор инструментов и сервисов для создания, обучения и развертывания моделей машинного обучения, включая поддержку различных алгоритмов, платформ и языков. SageMaker также предлагает ряд готовых моделей и интеграций с другими сервисами AWS, что упрощает внедрение машинного обучения в существующие приложения и рабочие процессы. Однако SageMaker доступен только на облачной платформе AWS и может не подходить для организаций, использующих других облачных провайдеров или локальную инфраструктуру.
Чтобы настроить AWS SageMaker и запустить конвейер, необходимо выполнить следующие шаги:
Настройте учетную запись AWS. Чтобы использовать AWS SageMaker, вам потребуется учетная запись AWS. Если у вас еще нет учетной записи AWS, вы можете зарегистрировать ее на странице https://aws.amazon.com/.
Настройка разрешений IAM: AWS Identity and Access Management (IAM) используется для управления разрешениями для ресурсов AWS. Вам потребуется настроить разрешения IAM, чтобы использовать AWS SageMaker. Чтобы сделать это, создайте пользователя IAM с разрешениями на доступ к SageMaker, используя следующую команду:
aws iam create-user --user-name <user_name>
aws iam attach-user-policy --policy-arn arn:aws:iam::aws:policy/AmazonSageMakerFullAccess --user-name <user_name>
Кроме того, вы можете использовать существующего пользователя IAM с соответствующими разрешениями.
Настройте VPC и подсеть: AWS SageMaker работает в виртуальном частном облаке (VPC) в вашей учетной записи AWS. Вам нужно будет настроить VPC и подсеть, чтобы использовать SageMaker. Это можно сделать с помощью Консоли управления AWS или интерфейса командной строки AWS.
Создайте корзину S3: для хранения данных в облаке используется сервис AWS Simple Storage Service (S3). Вам нужно будет создать корзину S3, чтобы использовать SageMaker. Это можно сделать с помощью Консоли управления AWS или интерфейса командной строки AWS:
aws s3 mb s3://<bucket_name>
Настройте SageMaker notebook instance. SageMaker notebook instance используются для разработки и запуска конвейеров SageMaker. Настроить его можно с помощью Консоли управления AWS или интерфейса командной строки AWS:
aws sagemaker create-notebook-instance --notebook-instance-name <notebook_instance_name> --instance-type <instance_type> --role-arn <role_arn> --volume-size-in-gb <volume_size> --default-code-repository <code_repository>
Разработка и тестирование конвейера. После настройки SageMaker notebook instance вы можете разработать и протестировать конвейер с помощью SageMaker Python SDK. Дополнительную информацию о SageMaker Python SDK можно найти в документации AWS.
Создайте обучающее задание SageMaker. После того, как вы разработали и протестировали конвейер, вы можете создать обучающее задание SageMaker, чтобы запустить конвейер в большем масштабе. Это можно сделать с помощью Консоли управления AWS или интерфейса командной строки AWS:
aws sagemaker create-training-job --training-job-name <training_job_name> --algorithm-specification <algorithm_specification> --role-arn <role_arn> --input-data-config <input_data_config> --output-data-config <output_data_config> --resource-config <resource_config>
Мониторинг задания обучения. Во время выполнения задания обучения вы можете следить за его ходом с помощью консоли SageMaker или SageMaker API. Для проверки состояния задания обучения можно использовать следующую команду:
aws sagemaker describe-training-job --training-job-name <training_job_name>
Azure Machine Learning
Облачная платформа MLOps, предлагаемая Microsoft Azure. Она предоставляет ряд инструментов и услуг для создания, обучения и развертывания моделей машинного обучения, включая поддержку различных алгоритмов, платформ и языков. Машинное обучение Azure также предлагает набор готовых моделей и интеграций с другими службами Azure, что упрощает внедрение машинного обучения в существующие приложения и рабочие процессы. Однако, как и SageMaker, Машинное обучение Azure доступно только на облачной платформе Azure и может не подходить для организаций, использующих других облачных провайдеров или локальную инфраструктуру.
Как настроить Azure ML и запустить конвейер машинного обучения:
Создайте учетную запись Azure. Если у вас еще нет учетной записи Azure, вы можете создать ее бесплатно на странице https://azure.com/.
Создайте рабочую область(workspace) Машинного обучения Azure. Рабочая область Машинного обучения Azure — это логический контейнер для ваших ресурсов Машинного обучения Azure. Вы можете создать рабочую область машинного обучения Azure с помощью портала Azure или интерфейса командной строки Azure. Чтобы создать рабочую область машинного обучения Azure с помощью Azure CLI, выполните команду:
az ml workspace create --name <workspace_name> --resource-group <resource_group_name> --location <location>
Настройте таргет вычислений Машинного обучения Azure. Таргет вычислений Машинного обучения Azure — это ресурс, который можно использовать для запуска экспериментов и конвейеров машинного обучения. Вы можете создать таргет вычислений Машинного обучения Azure с помощью портала Azure или интерфейса командной строки Azure. Чтобы создать таргет вычислений Машинного обучения Azure с помощью Azure CLI, выполните команду:
az ml compute create --name <compute_name> --type <compute_type> --workspace-name <workspace_name>
Подключитесь к рабочей области машинного обучения Azure. Вы можете подключиться к рабочей области машинного обучения Azure с помощью интерфейса командной строки Azure. Чтобы установить CLI, выполните команду:
pip install azure-cli
Затем вы можете использовать следующую команду для аутентификации с помощью своей учетной записи Azure:
Az login
Запустите конвейер машинного обучения. Платформу машинного обучения Azure можно использовать для создания, обучения и развертывания моделей машинного обучения. Конвейеры можно использовать для определения и выполнения шагов вашего рабочего процесса машинного обучения. Создать конвейер можно с помощью портала Azure или Azure CLI. Чтобы создать конвейер с помощью Azure CLI, выполните команду:
az ml pipeline create --workspace-name <workspace_name> --name <pipeline_name>
7. Затем вы можете определить этапы конвейера с помощью Azure CLI или пакета SDK для машинного обучения Azure. Например, чтобы запустить скрипт Python как шаг в конвейере, можно использовать команду:
az ml pipeline run prepare --workspace-name <workspace_name> --name <step_name> --src <script_path>
8. Затем вы можете выполнить конвейер с помощью Azure CLI или пакета SDK для машинного обучения Azure. Например, чтобы выполнить конвейер с помощью Azure CLI, выполните команду:
az ml pipeline run submit --workspace-name <workspace_name> --name <pipeline_name>
Databricks
Облачная платформа для обработки данных и операций MLOps. Он предоставляет набор инструментов и сервисов для создания, обучения и развертывания моделей машинного обучения, а также набор готовых конвейеров машинного обучения для общих задач, таких как подготовка данных и оценка моделей. Databricks также предлагает интеграцию с множеством других инструментов и платформ, что упрощает внедрение машинного обучения в существующие рабочие процессы. Однако, как и предыдущие инструменты, блоки данных доступны только на определенной облачной платформе (в данном случае на платформе блоков данных) и могут не подходить для организаций, использующих других поставщиков облачных услуг или локальную инфраструктуру.
Чтобы настроить AWS Databricks и запустить конвейер, выполните следующие шаги:
Создайте учетную запись Databricks. Если у вас еще нет учетной записи Databricks, вы можете создать ее бесплатно на странице https://databricks.com/.
Создайте рабочую область Databricks. Рабочая область Databricks — это логический контейнер для ваших активов Databricks. Вы можете создать рабочую область Databricks с помощью пользовательского интерфейса Databricks или интерфейса командной строки Databricks. Чтобы создать рабочую область Databricks с помощью интерфейса командной строки, выполните команду:
databricks workspace create --name <workspace_name> --region <region>
Настройте кластер Databricks. Кластер Databricks — это ресурс, который можно использовать для запуска экспериментов и конвейеров машинного обучения. Вы можете создать кластер Databricks с помощью пользовательского интерфейса Databricks или интерфейса командной строки Databricks. Чтобы создать кластер Databricks с помощью интерфейса командной строки Databricks, выполните следующую команду:
databricks clusters create --cluster-name <cluster_name> --num-workers <num_workers>
Подключение к рабочей области Databricks. Вы можете подключиться к рабочей области Databricks с помощью интерфейса командной строки Databricks. Чтобы установить CLI, выполните следующую команду:
pip install databricks-cli
Затем вы можете использовать следующую команду для аутентификации в рабочей области Databricks:
databricks configure --token
Запустите конвейер машинного обучения: вы можете использовать платформу Databricks для создания, обучения и развертывания моделей машинного обучения. Вы можете использовать конвейеры для определения и выполнения шагов вашего рабочего процесса машинного обучения. Создать конвейер можно с помощью пользовательского интерфейса или интерфейса командной строки. Чтобы создать конвейер с помощью интерфейса командной строки, выполните команду:
databricks pipelines create --name <pipeline_name>
Затем вы можете определить этапы конвейера с помощью интерфейса командной строки Databricks или API Databricks. Например, чтобы запустить скрипт PySpark в качестве шага в конвейере, можно использовать команду:
databricks pipelines run-step --name <step_name> --pipeline-id <pipeline_id> --jar-params '{"mainClass":"com.example.MyApp","args":["arg1","arg2"]}' --jar <jar_path>
Затем можно выполнить конвейер с помощью интерфейса командной строки Databricks или API Databricks. Например, чтобы выполнить конвейер с помощью интерфейса командной строки Databricks, выполните команду:
databricks pipelines execute --id <pipeline_id>
Существует несколько популярных инструментов MLOps, каждый из которых имеет свои преимущества и недостатки. Организации должны тщательно оценивать свои потребности и ограничения при выборе инструмента MLOps, чтобы убедиться, что они выбрали тот, который соответствует их требованиям и существующему стеку технологий.
Через пару дней пройдет открытое занятие, на котором разберем основы Machine Learning и поговорим о такой востребованной области, как Data Science.
На этом уроке сможете изучить основные подходы и принципы методов ML и применить свои знания на практике – обучить свою первую ML-модель для решения задачи классификации. Если интересно, записывайтесь на странице специализации Machine Learning.
jasiejames
Ладно, все это можно легко найти в документации, а где собственно взгляд с высоты? Где сама статья?