Авторы: Кристал Диас, Тайлер Д’Сильва, Хой Фай Лам, Хонг Дунг Нгуен, Бхавья Сингх
Этот блог создается и поддерживается студентами профессиональной магистерской программы Школы компьютерных наук Университета Саймона Фрейзера в рамках их курса обучения. Чтобы узнать больше об этой уникальной программе, посетите {sfu.ca/computing/mpcs}.
Введение
Жизненный цикл машинного обучения — это циклический итеративный процесс с инструкциями и рекомендациями по разработке алгоритмов машинного обучения для решения бизнес-задач. Жизненный цикл определяет различные этапы, чтобы обеспечить структуру для создания успешного проекта машинного обучения. Этапы включают в себя:
С более широким внедрением этого жизненного цикла предприятия хотят увеличить скорость создания проекта от эксперимента до производства. Это включает в себя создание инструментов, с помощью которых специалисты по данным могут сотрудничать и обмениваться результатами, чтобы найти оптимальное решение для достижения бизнес-цели. Следовательно, необходим инструмент для управления разными моделями на разных этапах и в течение жизненного цикла.
MLflow — это платформа с открытым исходным кодом для полного жизненного цикла машинного обучения, которая позволяет вам управлять сквозным рабочим процессом машинного обучения. Он был разработан Databricks и теперь является проектом Linux Foundation. MLflow предоставляет ряд инструментов, помогающих с различными аспектами рабочего процесса машинного обучения. Используя MLflow, вы можете оптимизировать процесс разработки машинного обучения и упростить совместную работу с другими, независимо от того, работаете ли вы над небольшим личным проектом или над крупномасштабным корпоративным проектом.
Концепции MLflow
Давайте кратко рассмотрим концепции Mlflow, которые помогают нам управлять и отслеживать различные этапы жизненного цикла нашей модели машинного обучения.
1. Отслеживание. Отслеживание Mlflow позволяет нам регистрировать, хранить и визуализировать прогоны модели и результаты. Запуски модели включают файлы модели, данные и параметры. Это помогает нам отслеживать прогоны и сравнивать результаты. С помощью этого сравнения мы могли бы принять обоснованное решение о том, какая модель лучше.
2. Проект — Mlflow также предоставляет нам возможность систематизировать ваш код машинного обучения и файлы в структурированном виде. Итак, в следующий раз, когда нам нужно будет запустить ту же модель, у нас будет та же среда, настроенная со всеми необходимыми зависимостями и параметрами.
3. Модель. Модели MLflow предоставляют простой API для загрузки моделей машинного обучения. Это позволяет инженерам создавать версии и развертывать эти модели в производстве.
4. Реестр. Поскольку Mlflow предоставляет общее хранилище всех моделей, версий, данных и экспериментальных артефактов, это упрощает сравнение, развертывание и совместную работу с другими людьми, работающими над той же моделью.
Все эти концепции обеспечивают исчерпывающую платформу MLOps для управления жизненным циклом машинного обучения. Это упрощает отслеживание, воспроизведение репозитория для всех членов команды и развертывание различных версий модели. С помощью MLflow мы сокращаем время и усилия, чтобы оптимизировать процесс разработки модели и довести ее до производства.
Традиционная методология против MLflow
До MLflow рабочими процессами машинного обучения управляли с помощью специальных методов. Эти методы имели несколько ограничений:
- Отсутствие отслеживания экспериментов. В традиционных методах эксперименты часто проводятся вручную, а результаты записываются в электронные таблицы или настраиваемые скрипты. Это затрудняет отслеживание точных параметров, версий кода и метрик каждого эксперимента, что приводит к трудностям в воспроизведении результатов.
- Отсутствие стандартизации. Команды используют разные инструменты, сценарии или методы, что приводит к несоответствиям в способах построения и оценки моделей. В результате увеличивается вероятность ошибок и систематических ошибок в результатах, что затрудняет получение надежных и последовательных результатов.
- Недостаток совместной работы. В традиционных методах машинного обучения отсутствуют функции совместной работы, что затрудняет совместную работу членов команды над одним проектом и воспроизведение результатов друг друга.
Напротив, MLflow предлагает несколько преимуществ по сравнению с традиционным методом, в том числе:
- Общая рабочая область: MLflow предоставляет централизованную рабочую область в виде веб-интерфейса и REST API, что позволяет членам команды совместно использовать параметры, модели и показатели, сравнивать результаты разных экспериментов и отслеживать того, кто внес изменения.
- Отслеживание развертывания. MLflow предоставляет несколько методов отслеживания развертывания, которые помогают гарантировать, что в рабочей среде развернута правильная версия модели, и что производительность модели можно отслеживать с течением времени. MLflow включает Реестр моделей, в котором хранятся и управляются различные версии моделей, а также отслеживается их происхождение, включая параметры и метрики, используемые для их обучения. Это позволяет пользователям легко сравнивать разные версии моделей и развертывать нужную версию в производстве. MLflow также обеспечивает интеграцию с популярными облачными сервисами, такими как AWS SageMaker, Google Cloud AI Platform и Microsoft Azure Machine Learning, что позволяет развертывать модель непосредственно в этих сервисах. Кроме того, MLflow имеет REST API, который позволяет разработчикам программно развертывать модели, упрощая автоматизацию процесса развертывания.
Быстрый старт на локальном
Локальная установка MLflow
Если вы используете платформу на базе Windows или Linux, вы можете установить MLflow, выполнив:
pip install mlflow
Если вы хотите установить дополнительные библиотеки и инструменты ML, вы также можете запустить:
pip install mlflow[extras]
Когда вы закончите установку, вы можете проверить, правильно ли установлен MLflow, выполнив:
mlflow ui
Он должен запускать сервер локально с портом 5000 (https://localhost:5000). Как только вы подключитесь к локальному хосту, вы увидите что-то вроде этого:
Теперь давайте наполним его!
Работа над моделью
При работе с моделью ML нам необходимо отслеживать некоторые ключевые компоненты, такие как версии модели, наборы данных, гиперпараметры/параметры, метрики оценки и выходные (обученные) файлы модели. Используя MLflow, мы можем хранить и отслеживать все эти компоненты, написав всего несколько строк кода. Вот выдержка из нашей кодовой базы для регистрации параметров, метрик и модели на панели управления MLflow.
# log parameters mlflow.log_param('leaf_nodes',params['max_leaf_nodes']) mlflow.log_param('max_depth',params['max_depth']) # log metrics mlflow.log_metric('test_accuracy' , test_accuracy) mlflow.log_metric('test_f1_score', test_f1_score) # log model mlflow.sklearn.log_model(clf, "model")
Для этой демонстрации мы решили обучить модель дерева решений на наборе данных радужной оболочки глаза. Мы использовали функцию sklearn DecisionTreeClassifier(), добавили некоторые параметры и выполнили перекрестную проверку поиска по сетке, чтобы выбрать лучшие параметры. Оценка модели проводилась с помощью показателей точности sklearn и показателя f1. Вот код для этой реализации:
no_of_runs = 10 X_train, X_test, Y_train, Y_test = train_test_split( X, Y, test_size=0.25, random_state=10 ) count = 1 for i in range(no_of_runs): for j in range(no_of_runs): with mlflow.start_run(run_name=f"Run #{count}"): count += 1 # the minimum value of max_leaf_nodes is 2 and max_depth is 1 params = { "max_leaf_nodes": i + 2, "max_depth": j + 1, } clf = DecisionTreeClassifier( random_state=42, max_leaf_nodes=params["max_leaf_nodes"], max_depth=params["max_depth"], ) # training clf.fit(X_train, Y_train) Y_pred = clf.predict(X_test) test_accuracy = metrics.accuracy_score(Y_test, Y_pred) test_f1_score = metrics.f1_score(Y_test, Y_pred, average="weighted") test_metrics = (test_accuracy, test_f1_score) # log parameters mlflow.log_param("leaf_nodes", params["max_leaf_nodes"]) mlflow.log_param("max_depth", params["max_depth"]) # log metrics mlflow.log_metric("test_accuracy", test_accuracy) mlflow.log_metric("test_f1_score", test_f1_score) # log model mlflow.sklearn.log_model(clf, "model")
В этом фрагменте мы видим, что добавление тех нескольких строк кода, о которых мы говорили ранее, для отслеживания параметров, метрик и модели загрузки, было действительно таким простым.
Запуск этого кода автоматически создаст каталог с локальным именем mlruns в вашем рабочем каталоге. Вся информация о прогонах модели записывается здесь.
Что именно находится на приборной панели MLflow?
Как только вы обновите свой https://localhost:5000, вы заметите, что отображается множество прогонов модели. Наряду с этим вы можете получить краткий обзор времени, затраченного на выполнение прогона, сохраненных файлов модели, оценок точности и выбранных параметров.
Но мы могли бы сделать больше, чем просто взглянуть на эти цифры. В этом разделе мы поговорим о некоторых примерах различных идей, которые можно получить после развертывания нашей модели в MLflow.
Поскольку мы провели несколько прогонов, имеет смысл выбрать прогоны, для которых у нас были лучшие результаты, и сравнить их. Вот как мы могли бы это сделать:
С этим параллельным графиком координат мы смогли наблюдать, что каждый выбранный нами прогон достигает наивысшей точности, и этот оптимальный результат был достигнут путем установки параметра leaf_nodes = 4.
Далее мы отфильтровали все те прогоны, где параметр leaf_nodes=4, а затем сравнили только эти модели:
На этом графике с параллельными координатами мы могли наблюдать аномалию! Один встречный случай (глубина = 2) не достигает наивысшего балла. Итак, это сообщило нам о подходящем диапазоне max_depth, который дает наилучшие результаты.
Развертывание MLflow в AWS
С помощью локальной настройки, описанной выше, отдельные разработчики, такие как вы, могут опробовать MLflow и лучше понять его возможности. В этом разделе мы хотели бы показать, как MLflow можно развернуть в производственной среде, где он будет использоваться в качестве стандартной платформы для совместной работы команд над созданием, обучением, тестированием и развертыванием моделей машинного обучения.
В частности, мы выполним следующие шаги:
- Подготовьте образ контейнера MLflow в AWS Elastic Container Registry (ECR).
- Настройте экземпляр AWS Relational Database Service (RDS) для хранилища данных MLflow и корзину AWS Simple Storage Service (S3) для хранилища артефактов MLflow.
- Разверните MLflow как контейнер(ы) в AWS Elastic Container Service (ECS).
Подготовить образ контейнера MLflow
Поскольку мы будем размещать MLflow на AWS ECS, бессерверной службе контейнеров, нам необходимо подготовить образ контейнера MLflow для развертывания. Мы будем использовать официальный образ и добавим некоторые настройки, чтобы установить необходимые библиотеки драйверов для MySQL и настроить правильную точку входа.
# Build command: # docker build -f Dockerfile -t mlflow:v2.1.1 . FROM ghcr.io/mlflow/mlflow:v2.1.1 RUN pip install pymysql boto3 CMD mlflow server \ --host 0.0.0.0 \ --serve-artifacts \ --backend-store-uri mysql+pymysql://${SQL_USERNAME}:${SQL_PASSWORD}@${SQL_HOST}:${SQL_PORT}/${SQL_DATABASE} \ --default-artifact-root s3://${S3_BUCKET} \ --artifacts-destination s3://${S3_BUCKET}
В AWS Elastic Container Registry (ECR) хранятся образы контейнеров, которые впоследствии можно извлечь и использовать в ECS (или других контейнерных средах, таких как Elastic Kubernetes Service — EKS). Мы отправим созданный образ из предыдущего шага в ECR.
См. Создание общедоступного репозитория для получения инструкций по созданию репозитория и Аутентификация в реестре по умолчанию для получения инструкций по аутентификации интерфейса командной строки Docker с помощью AWS ECR. После этого мы готовы к толчку!
docker tag mlflow:v2.1.1 public.ecr.aws/<repo-id>/mlflow:v2.1.1 . docker push public.ecr.aws/<repo-id>/mlflow:v2.1.1
Примечание. При желании вы также можете отправить образ в Docker Hub или любой доверенный общедоступный реестр контейнеров, доступный в Интернете.
Создать экземпляр MySQL
Мы также создаем экземпляр AWS RDS, который будет служить серверным хранилищем для MLflow. Вместо записи в локальную файловую систему в случае локальной установки мы настроим MLflow для использования соответствующей базы данных для хранения зарегистрированных данных. Преимущества использования экземпляра RDS включают масштабируемость и надежность. Можно запланировать автоматическое резервное копирование базы данных, чтобы избежать потери ценных данных эксперимента машинного обучения.
Для этой демонстрации мы выбираем вариант ядра MySQL с шаблоном Уровень бесплатного пользования со всеми параметрами по умолчанию, за исключением того, что для параметра «Общий доступ» должно быть установлено значение Общедоступный. сильный>. Не забудьте мастер-пароль, так как на следующем шаге вам нужно будет создать базу данных для MLflow.
Примечание. Чтобы избежать проблем с подключением, убедитесь, что экземпляр имеет общедоступный IP-адрес и назначен группе безопасности VPC, которая разрешает входящий трафик с вашего компьютера.
Теперь мы можем подключиться к экземпляру и создать базу данных и пользователя, зарезервированного для MLflow.
CREATE DATABASE IF NOT EXISTS mlflow; CREATE USER IF NOT EXISTS 'mlflow'@'%' IDENTIFIED BY '<mlflow_user_password>'; GRANT ALL PRIVILEGES ON mlflow.* TO 'mlflow'@'%'; SHOW GRANTS FOR 'mlflow'@'%';
Создайте сегмент S3
Сегмент S3 — это подходящее хранилище BLOB-объектов для произвольных артефактов, которые могут быть созданы нашими конвейерами машинного обучения и зарегистрированы в MLflow. В частности, MLflow будет хранить зарегистрированные файлы модели в настроенной корзине S3, а также любые дополнительные артефакты, которые мы решим сохранить во время выполнения машинного обучения.
Идите вперед и создайте корзину и запишите ее URI, так как нам нужно будет сослаться на нее в MLflow на следующем шаге.
Подготовка определения задачи ECS
В AWS ECS определение задачи позволяет указать параметры того, как ECS должен запускать контейнер. Эти параметры включают в себя образ контейнера, переменные среды, сопоставления портов, требуемые ресурсы (ядра ЦП, память, тома хранения) и т. д.
Перейдите к AWS ECS › Определения задач. Мы создадим определение задачи mlflow, как указано ниже.
- Семейство определений задач: mlflow
- URI изображения: URI образа MLflow, отправленного на предыдущем шаге.
- Порт контейнера: 5000 (порт по умолчанию для сервера отслеживания).
- Переменные среды: введите значения переменных, связанных с MySQL и S3, созданные на предыдущих шагах.
- Роль задачи: выберите роль IAM, которая разрешает доступ к S3 (ECSFullS3 в этом случае вам может потребоваться создать роль, если она не существует).
Создать кластер ECS
Каким бы вводящим в заблуждение ни звучало его название, кластер ECS — это не группа фактических виртуальных машин, на которых запущены контейнеры, а скорее логическая группа служб и задач ECS. Мы создадим кластер, работающий на AWS Fargate — собственной бессерверной контейнерной платформе AWS.
- Имя кластера: MLflowCluster, произвольное имя кластера.
- Сеть: выберите VPC и подсети, в которых будут находиться ресурсы кластера.
- Инфраструктура: выберите только AWS Fargate (без сервера).
Развертывание службы ECS для MLflow
Уф, это было много шагов только для подготовки. Теперь, когда у нас есть оба хранилища (RDS и S3), а также определение задачи ECS и кластер, мы можем приступить к созданию службы ECS для запуска реальных контейнеров, на которых работает наш сервер отслеживания MLflow.
Перейдите в раздел AWS ECS › Определения задач и выберите созданное ранее определение задачи mlflow.
Нажмите кнопку раскрывающегося списка Развернуть и выберите Создать службу.
- Существующий кластер: выберите MLflowCluster.
- Конфигурация вычислений: выберите Тип запуска,с FARGATE в качестве значения типа запуска.
- Конфигурация развертывания: введите mlflow-svc под именем службы и оставьте другие параметры по умолчанию.
- VPC и подсети: выберите те же VPC/подсети, что и на этапе создания кластера ECS.
- Имя группы безопасности: оставить группу безопасности по умолчанию.
- Общедоступный IP-адрес: убедитесь, что он включен.
- Балансировка нагрузки: выберите Application Load Balancer.
- Имя балансировщика нагрузки: введите mlflow-lb.
- Имя целевой группы: введите mlflow-tg.
Настроить балансировщик нагрузки
Балансировщик нагрузки (LB) для службы MLflow создается вместе с самой службой на предыдущем шаге. Однако нам нужно настроить его группу безопасности VPC, чтобы включить правило брандмауэра, разрешающее публичный доступ.
Перейдите в раздел AWS EC2 › Балансировщики нагрузки, вы должны увидеть mlflow-lb. Выберите его.
На панели Подробности вы можете определить общедоступный DNS-адрес LB, это URL-адрес нашей службы MLflow.
На вкладке Безопасность по умолчанию добавляется группа безопасности default. Нажмите Изменить › Создать новую группу безопасности.
Мы создадим новую группу безопасности с именем mlflow-lb-sg со следующими правилами брандмауэра. После создания LB теперь можно назначить mlflow-lb-sg, разрешив доступ к нему из общедоступного Интернета.
- Входящий: разрешить публичный доступ к LB через TCP-порт 80.
- Исходящий: Нет
Все сделано! Теперь попробуйте ввести адрес LB в браузере. Вуаля 🙌 🙌, теперь у нас есть удаленный сервер MLflow, которым можно поделиться с командой!
Интеграция MLflow с конвейером AWS SageMaker
SageMaker — это решение AWS для полностью управляемого сервиса машинного обучения. Он предоставляет функции, которые помогают командам специалистов по обработке и анализу данных разрабатывать, обучать, тестировать и развертывать модели машинного обучения. SageMaker Pipeline позволяет специалистам по данным сосредоточиться на построении полных конвейеров непрерывной интеграции/непрерывной доставки (CI/CD) для своих моделей машинного обучения.
MLflow и SageMaker Pipeline прекрасно дополняют друг друга и интегрируются, предоставляя комплексное решение для создания, отслеживания, мониторинга и развертывания моделей машинного обучения. В этом разделе мы будем использовать ту же модель Scikit Learn Iris, чтобы проиллюстрировать, как можно создать конвейер SageMaker и интегрировать его с MLflow, в частности:
- Создайте конвейер SageMaker для построения/обучения моделей Iris с оптимизацией гиперпараметров.
- Добавьте возможности отслеживания MLflow в конвейер, чтобы обеспечить видимость хода разработки модели, включая параметры запуска, оценки и обученные модели.
- Разверните выбранные модели из реестра моделей MLflow на конечных точках SageMaker, чтобы выполнять выводы в будущем.
Предварительное условие: создание проекта SageMaker
С технической точки зрения, отдельный экземпляр SageMaker Pipeline можно создать и запустить программно с помощью AWS SageMaker SDK даже из Jupyter Notebook. Это позволяет специалистам по данным настроить конвейер для своих быстрых экспериментов. Однако в производственной среде конвейеры должны создаваться и поддерживаться как часть Проектов SageMaker. Чтобы работать с нашим Pipeline, нам сначала нужно создать Project, следуя инструкциям.
После создания проекта с использованием шаблона MLOps для построения, обучения и развертывания модели мы наблюдаем создание двух репозиториев AWS CodeComit: model-build и model -развертывать. Удачно названный в соответствии со своими целями, model-build будет служить основным репозиторием для нашего кода машинного обучения, а также будет содержать утилиты для запуска конвейера построения моделей, в то время как model-deploy будет включать код для конвейера развертывания модели, по умолчанию для SageMaker Endpoints.
Что еще более важно, репозитории по умолчанию интегрированы с AWS EventBridge и CodePipeline, чтобы обеспечить автоматическое выполнение конвейеров после фиксации кода в основнойветви. Это помогает нам достичь принципов GitOps и упростить управление CI/CD наших проектов.
Конвейер построения модели (часть CI)
Примечание.см. репозитории Github сборка и развертывание для примера кода, обсуждаемого в этом разделе.
Вpipeline.pyмы определяем двухэтапный конвейер сборки. На первом этапе — PrepareIrisData — мы просто подготавливаем поезд Iris и тестируем наборы данных. На втором этапе — IrisTuning — мы используем SageMaker HyperparameterTuner для обучения моделей радужной оболочки и выбираем ту, которая максимизирует показатель точности.
estimator = SKLearn( entry_point='train.py', source_dir=os.path.join(BASE_DIR, 'source_dir'), role=role, metric_definitions=metric_definitions, hyperparameters=hyperparameters, instance_count=1, instance_type=training_instance_type, framework_version='1.0-1', base_job_name=f"{base_job_prefix}/sklearn-iris-train", sagemaker_session=pipeline_session, disable_profiler=True ) hyperparameter_ranges = { 'max-leaf-nodes': IntegerParameter(2, 3), 'max-depth': IntegerParameter(2, 3), } objective_metric_name = 'accuracy' objective_type = 'Maximize' hp_tuner = HyperparameterTuner( estimator=estimator, objective_metric_name=objective_metric_name, hyperparameter_ranges=hyperparameter_ranges, metric_definitions=metric_definitions, max_jobs=4, max_parallel_jobs=4, objective_type=objective_type, base_tuning_job_name=f"{base_job_prefix}/sklearn-iris-tune", )
Обратите внимание на точку входа в код обучения модели — train.py — здесь мы подключаем MLflow, чтобы начать отслеживать прогоны обучения модели. train.py запускается с дополнительными аргументами MLflow и данными журнала на удаленном сервере MLflow. Сам код очень похож на код локальной настройки, за исключением дополнительной строки для настройки URI службы удаленного отслеживания.
parser = argparse.ArgumentParser() # MLflow related parameters parser.add_argument("--mlflow-tracking-uri", type=str) parser.add_argument("--mlflow-experiment-name", type=str) # set remote mlflow server mlflow.set_tracking_uri(args.mlflow_tracking_uri) mlflow.set_experiment(args.mlflow_experiment_name) . . # Start MLflow run with mlflow.start_run(): params = { "max-leaf-nodes": args.max_leaf_nodes, "max-depth": args.max_depth, } # Log used params mlflow.log_params(params) # Log additional tags to identify runs mlflow.set_tag("commit", args.source_commit) mlflow.set_tag("trigger", args.source_trigger) . . . # Log metrics mlflow.log_metric('accuracy', test_accuracy) mlflow.log_metric('f1', test_f1_score) . . # Log model with conditional registration if test_accuracy > 0.9: result = mlflow.sklearn.log_model( sk_model=classifier, artifact_path='model', registered_model_name=args.mlflow_model_name, ) else: result = mlflow.sklearn.log_model( sk_model=classifier, artifact_path='model', )
Как и ожидалось, когда конвейер model-build начинает работать (при отправке кода в ветку main), мы видим, что пользовательский интерфейс MLflow начинает сообщать данные для этих запусков.
Как видно из приведенного выше снимка экрана, мы также применяем условную регистрацию для обученных моделей, чьи показатели точности превышают пороговое значение (0,9). Зарегистрированные модели можно дополнительно проверить на вкладке «Модель» в пользовательском интерфейсе MLflow. Условия для включения обученной модели в реестр моделей могут быть дополнительно расширены для включения нескольких оценок или для создания нескольких уровней качества модели в зависимости от их оценок.
Конвейер развертывания модели (он же CD-часть)
После помещения подходящих моделей в реестр моделей MLflow следующим шагом является решение, какую модель следует развернуть для использования в будущих выводах (прогнозах). В SageMaker модели обычно обслуживаются через SageMaker Endpoints, процесс развертывания которых автоматизирован с помощью конвейера model-deploy.
Поскольку обученные модели MLflow уже зарегистрированы в реестре моделей в конце цикла сборки модели, развертывание модели извлекает файлы моделей из реестра и развертывает их в Конечная точка SageMaker. Решение о выборе зарегистрированной версии модели для развертывания принимается командой Data Science после их собственной проверки и оценки. Выбранную версию можно поместить в buildspec.yml репозитория model-deploy. После отправки фиксации все остальное обрабатывается автоматически через рабочий процесс CodePipeline.
pre_build: commands: - TRACKING_URI="https://mlflow-lb-<random-lb-id>.us-west-2.elb.amazonaws.com" - MODEL_NAME="sagemaker-mlflow-iris-model" - MODEL_VERSION="2"
После завершения конвейера мы можем наблюдать, как конечная точка SageMaker развернута в рамках проекта. Затем мы можем отправить некоторые данные в эту конечную точку и получить обратно некоторые прогнозы класса. Давайте попробуем это сейчас.
Здесь мы отправляем список из четырех наборов признаков (длина чашелистика, ширина чашелистика, длина лепестка, ширина лепестка) и получаем классификацию типа ириса в соответствии с нашей обученной моделью — 0 для ириса сетозного, 1 для ириса разноцветного и 2 для ириса. Вирджиния. Наша комплексная CI/CD для построения моделей, обучения и развертывания с интеграцией MLflow завершена 👏👏👏.
Заключение
MLflow — это мощный и современный инструмент MLOps, предлагающий значительные преимущества по сравнению с традиционными методами совместной работы над проектами данных. Благодаря централизованному рабочему пространству, реестру моделей, интеграции развертывания и REST API, MLflow обеспечивает упрощенный и эффективный способ управления всем жизненным циклом машинного обучения. Независимо от того, начинаете ли вы новый проект машинного обучения или ищете более эффективный способ управления существующими проектами, MLflow — это современный инструмент MLOps, на который стоит обратить внимание.
Ссылки
- Дуа, Д. и Графф, К. (2019). Репозиторий машинного обучения UCI [https://archive.ics.uci.edu/ml]. Ирвин, Калифорния: Калифорнийский университет, Школа информационных и компьютерных наук.
- https://mlflow.org/docs
- https://docs.aws.amazon.com/sagemaker/latest/dg/pipelines.html
- https://github.com/sofianhamiti/amazon-sagemaker-pipelines-mlflow
- https://www.databricks.com/product/managed-mlflow#:~:text=What%20is%20Managed%20MLflow%3F,enterprise%20reliability%2C%20security%20and%20scale
- https://www.linuxfoundation.org/press/press-release/the-mlflow-project-joins-linux-foundation