Каждый, кто пробовал разработку машинного обучения, понимает, насколько это сложно. Помимо стандартных проблем при разработке программного обеспечения, разработка машинного обучения (ML) создает множество дополнительных препятствий.
Доступны сотни инструментов с открытым исходным кодом, которые помогут на каждом этапе жизненного цикла машинного обучения, от подготовки данных до обучения моделей.
В отличие от традиционной разработки программного обеспечения, когда команды выбирают один инструмент для каждого шага, с ML вы обычно хотите изучить каждый доступный инструмент (например, алгоритм), чтобы увидеть, улучшает ли он результаты.
В результате разработчики машинного обучения должны использовать и создавать сотни библиотек.
Алгоритмы машинного обучения содержат тысячи настраиваемых параметров, и трудно определить, какие параметры, код и данные использовались в каждом эксперименте для создания модели, независимо от того, работаете ли вы в одиночку или в команде.
Без надлежащего мониторинга командам часто трудно заставить тот же код снова работать. Независимо от того, являетесь ли вы специалистом по данным, передающим свой обучающий код инженеру для использования в производстве, или вы возвращаетесь к своей предыдущей работе, чтобы диагностировать проблему, отступление от этапов рабочего процесса ML имеет решающее значение.
Перемещение модели в рабочую среду может быть затруднено из-за многочисленных методов развертывания и сред, которые необходимо использовать (например, обслуживание REST, пакетный вывод или мобильные приложения). Не существует общего метода переноса моделей из любой библиотеки в любой из этих инструментов, поэтому каждое новое развертывание сопряжено с риском.
Из-за этих проблем очевидно, что разработка ML должна значительно улучшиться, чтобы стать такой же стабильной, предсказуемой и широко используемой, как традиционная разработка программного обеспечения.
Проблемы машинного обучения
- Существует множество разрозненных инструментов. Доступны сотни программных решений, помогающих на каждом этапе жизненного цикла машинного обучения, от подготовки данных до обучения моделей. Кроме того, в отличие от традиционной разработки программного обеспечения, когда команды выбирают один инструмент для каждого шага, в машинном обучении (МО) часто требуется изучить каждый доступный инструмент (например, алгоритм), чтобы увидеть, улучшает ли он результаты. В результате разработчики машинного обучения должны использовать и создавать сотни библиотек.
- Трудно следить за экспериментами. Алгоритмы машинного обучения содержат тысячи настраиваемых параметров, и трудно определить, какие параметры, код и данные использовались в каждом эксперименте для создания модели, независимо от того, работаете ли вы в одиночку или в команде.
- Трудно внедрить машинное обучение. Перемещение модели в рабочую среду может быть затруднено из-за многочисленных методов развертывания и сред, которые необходимо использовать (например, обслуживание REST, пакетный вывод или мобильные приложения). Не существует общего метода перемещения моделей из любой библиотеки в любой из этих инструментов. Таким образом, каждое новое развертывание сопряжено с риском.
Что такое Млфлоу?
MLflow — это платформа с открытым исходным кодом для жизненного цикла машинного обучения. Он основан на концепции открытого интерфейса, предлагая множество важных абстракций, которые позволяют легко интегрировать в систему текущую инфраструктуру и алгоритмы машинного обучения.
Это означает, что если вы являетесь разработчиком, который хочет использовать MLflow, но использует неподдерживаемую платформу, дизайн открытого интерфейса упрощает интеграцию этой платформы и начало работы с платформой. На практике это означает, что MLflow предназначен для работы с любым обучение с помощью машины библиотека или язык.
Кроме того, MLflow способствует воспроизводимости, а это означает, что один и тот же обучающий или производственный код машинного обучения предназначен для выполнения с одинаковыми результатами независимо от среды, будь то в облаке, на локальной рабочей станции или в ноутбуке.
Наконец, MLflow создан для масштабируемости, поэтому его может использовать как небольшая группа специалистов по данным, так и крупная компания с сотнями специалистов по машинному обучению.
MLflow совместим с любой библиотекой машинного обучения, алгоритмом, средством развертывания или языком. Он также имеет следующие преимущества:
- Предназначен для работы с любым облачным сервисом.
- Масштабирование до огромных объемов данных с помощью Apache Spark.
- MLflow совместим с различными платформами машинного обучения с открытым исходным кодом, включая Apache Spark, TensorFlowи SciKit-Learn.
Если у вас уже есть код, с ним можно использовать MLflow. Вы можете даже совместно использовать свою структуру и модели между предприятиями, потому что это открытые источники.
Компоненты MLflow: как они работают?
MLflow — это бесплатная платформа с открытым исходным кодом для управления жизненным циклом машинного обучения, включая эксперименты, воспроизводимость, развертывание и единый реестр моделей. В настоящее время MLflow состоит из четырех компонентов:
1. Отслеживание MLflow
Я собираюсь начать с отслеживания MLflow. MLflow поддерживает сбор различных основных концепций, связанных с централизованным репозиторием метаданных обучения. Первое понятие — это набор критических гиперпараметров или ручек конфигурации, влияющих на производительность модели. Использование API-интерфейсов MLflow и централизованной службы отслеживания может сохранить все это.
Пользователи также могут записывать данные о производительности, чтобы получить представление об успехе своих моделей машинного обучения. Кроме того, для повторяемости MLflow позволяет пользователям регистрировать конкретный исходный код, который использовался для создания модели, а также его версию, путем тесной интеграции с Git, чтобы привязать каждую модель к определенному хэшу фиксации.
MLflow можно использовать для регистрации артефактов, которые представляют собой любые произвольные файлы, включая обучающие, тестовые данные и сами модели для воспроизводимости.
Это означает, что если я разработчик, который только что обучил модель, я могу сохранить ее в централизованной службе отслеживания, а один из моих коллег может загрузить ее позже и либо продолжить обучение и экспериментирование, либо создать эту модель для удовлетворения конкретных потребностей. .
При выполнении кода машинного обучения и последующем просмотре результатов отслеживание — это API, который позволяет регистрировать параметры, версии кода, метрики и выходные файлы. Он написан на Python, R и Java, а также на других языках. Он также доступен как REST API, который можно использовать для создания приложений поверх него.
Главные преимущества
- Многие разработчики используют MLflow на своих локальных ПК, где серверная часть и хранилище артефактов имеют общий каталог на диске.
- Многие пользователи также используют SQLite, совместимую с SQLAlchemy базу данных, для запуска MLflow на своих локальных ПК.
- MLflow также поддерживает распределенные архитектуры. Сервер отслеживания, внутреннее хранилище и хранилище артефактов размещены на разных серверах.
- Если запуск был инициирован проектом MLflow, использовался хэш фиксации git. API MLflow Python, R, Java и REST можно использовать для регистрации данных для запуска.
Для получения дополнительной информации вы можете проверить официальный документации.
2. Млфлов проекты
После того, как мы рассмотрели компоненты отслеживания, я хотел бы поговорить о проектах MLflow, которые представляют собой повторяемую структуру упаковки для сеансов обучения моделей независимо от контекста выполнения.
Предприятия используют широкий спектр обучающих технологий машинного обучения, но они также используют эти учебные инструменты в различных контекстах. Например, они могут выполнять свой обучающий код в облаке, на локальном ПК или в ноутбуке.
Это приводит к тому, что результаты машинного обучения трудно воспроизвести. Часто один и тот же обучающий код не выполняется или дает одинаковые результаты в двух разных местах.
Решение, предоставляемое MLflow, представляет собой автономное определение проекта кода обучения, которое включает в себя весь код обучения машинному обучению, а также его версии библиотеки зависимостей, настройки и данные обучения и тестирования.
MLflow обеспечивает воспроизводимость в контексте выполнения, четко описывая весь набор требований к процессу обучения машинному обучению. Это достигается путем установки всех этих библиотек и достижения того же состояния системы, в котором выполняется код.
Проект MLflow — это не что иное, как каталог. Это каталог, который включает обучающий код, определение зависимостей библиотеки и другие данные, необходимые для сеанса обучения, а также этот необязательный файл конфигурации.
Эти требования к библиотеке могут быть определены различными способами. Пользователи могут, например, предоставить спецификацию среды anaconda в формате YAML, чтобы перечислить требования к библиотеке обучающего кода. MLflow выполнит обучающий код внутри контейнера. В таком случае они также могут включать контейнер Docker.
Наконец, MLflow имеет интерфейс командной строки (CLI) для запуска этих проектов, а также API-интерфейсы Python и Java. Эти проекты можно запускать в локальной системе пользователя, а также в различных удаленных настройках, таких как планировщик заданий Databricks и Kubernetes. Проекты MLflow позволяют упаковывать код науки о данных повторяемым и повторно используемым образом, в основном на основе стандартов.
Компонент проектов включает в себя API, а также утилиты командной строки для управления проектами. Эти возможности гарантируют, что проекты могут быть объединены в цепочку для формирования процессов машинного обучения.
Главные преимущества
- MLflow поддерживает среды проекта, включая среду контейнера Docker, среду Conda и системную среду.
- Любой репозиторий Git или локальный каталог можно рассматривать как проект MLflow; по умолчанию; вы можете использовать любую оболочку или Скрипт Python в каталоге как точка входа в проект.
- Зависимости, отличные от Python, такие как библиотеки Java, можно захватить с помощью контейнеров Docker.
- Вы можете получить больший контроль над проектом MLflow, добавив файл проекта в корневой каталог проекта, который представляет собой текстовый файл с синтаксисом YAML.
Для получения дополнительной информации вы можете проверить официальный документации.
3. Модели MLflow
Теперь я хотел бы обсудить модели MLflow — формат модели общего назначения, который поддерживает широкий спектр производственных контекстов. Причина для моделей MLflow теперь очень похожа на причину для проектов.
Опять же, мы видим, что модели могут быть созданы с использованием широкого спектра инструментов, но они также могут быть созданы или развернуты в широком диапазоне ситуаций, в отличие от учебных сред.
Эти настройки включают инструменты для обслуживания в режиме реального времени, такие как Kubernetes или Amazon SageMaker, а также для потоковой передачи и пакетной оценки, такие как Spark. Кроме того, некоторые компании могут выбрать развертывание моделей в качестве веб-службы RESTful, работающей в предварительно настроенном облачном экземпляре.
Модель MLflow, как и проект, представляет собой структуру каталогов. Он включает в себя файл конфигурации и, на этот раз, сериализованный артефакт модели, а не обучающий код. Он также включает этот набор зависимостей для повторяемости как проект. На этот раз мы рассмотрим зависимости оценки в контексте среды Conda.
Кроме того, MLflow включает средства создания моделей для сериализации моделей в формате MLflow из ряда популярных платформ. Наконец, MLflow добавляет развертывание, API-интерфейсы для производства и подключения любой модели MLflow к ряду сервисов, и эти API-интерфейсы доступны в формате Python, Java, R и CLI.
Модели — это компонент со стандартной структурой для упаковки моделей, который может использоваться и пониматься нижестоящими инструментами, такими как серверы логических выводов или Databricks платформа пакетного вывода. Этот компонент экономит часы индивидуального кода при упаковке модели для производства.
Модель MLflow — это стандарт упаковки моделей машинного обучения в различных формах, известных как «варианты». MLflow предоставляет множество инструментов, которые помогут вам в развертывании различных типов моделей. Каждая модель MLflow хранится в виде каталога, содержащего произвольные файлы, а также файл дескриптора модели ML со списком разновидностей, в которых она может использоваться.
Главные преимущества
- Все встроенные инструменты развертывания MLflow предлагают несколько «стандартных» разновидностей, таких как разновидность «функции Python», которая объясняет, как запускать модель как функцию Python.
- Каждая модель MLflow состоит из каталога, содержащего произвольные файлы, а также файла модели ML в корне каталога, который определяет многочисленные разновидности модели.
- При сохранении модели MLflow позволяет указать параметр среды Conda, содержащий зависимости модели. Если среда Conda не указана, создается среда по умолчанию на основе разновидности модели. После этого среда Conda сохраняется в conda.yaml.
Для получения дополнительной информации вы можете проверить официальный документации.
4. Реестр моделей MLflow
Реестр моделей — это хранилище изученных моделей машинного обучения (ML). Реестр моделей состоит из API-интерфейсов и веб-приложения, которое используется для совместной поддержки моделей на различных этапах. Model Lineage, Model Versioning, Easy Stage Transition и Annotation — это лишь некоторые из возможностей, доступных в Model Registry.
Реестр моделей, помимо самих моделей, содержит информацию (метаданные) о данных и обучающих задачах, используемых для построения модели. Крайне важно отслеживать эти необходимые входные данные, чтобы создать родословную для моделей ML. В этом отношении модельный реестр работает аналогично обычному программному обеспечению. контроль версий системы (например, Git, SVN) и репозитории артефактов (например, Artifactory, PyPI).
Реестр моделей — это платформа, которая позволяет специалистам по данным и инженерам по машинному обучению публиковать, тестировать, отслеживать, управлять и распространять свои модели для сотрудничества с другими командами. По сути, модельный реестр используется после того, как вы завершили этап тестирования и готовы поделиться своими выводами с командой и заинтересованными сторонами.
Реестр моделей MLflow предоставляет API и пользовательский интерфейс для централизованного управления моделями и сроком их службы. Происхождение модели, версия модели, аннотации и переходы между этапами доступны через реестр.
В MLflow зарегистрированная модель — это модель с уникальным именем и метаданными, версиями модели, переходными этапами и родословной модели. В зарегистрированной модели можно найти одну или несколько версий модели. Новая модель считается версией 1, когда она зарегистрирована в реестре. Следующая версия добавляется к любой новой модели с тем же именем.
Вы можете в любой момент назначить один шаг любой версии модели. Однако этапы должны быть назначены в соответствии с формально указанными этапами MLflow, такими как подготовка, производство и архивация. Версию модели можно переходить с одного этапа на другой.
MLflow позволяет использовать уценку для аннотирования как модели верхнего уровня, так и каждой конкретной версии. Вы можете включить описания, а также другую соответствующую информацию, такую как объяснения алгоритмов, методологию и используемые наборы данных.
Главные преимущества
- Чтобы получить доступ к реестру моделей через пользовательский интерфейс или API при размещении собственного сервера MLflow, необходимо использовать серверное хранилище на основе базы данных.
- Доступ к реестру моделей также можно получить через разновидность модели MLflow или интерфейс API отслеживания клиентов MLflow. Например, вы можете зарегистрировать модель во время запуска эксперимента MLflow или после всех ваших экспериментов.
- Не все начнут обучать свои модели с помощью MLflow. В результате некоторые модели могут быть обучены перед использованием MLflow. Вместо переобучения моделей вы просто хотите зарегистрировать сохраненные модели в реестре моделей.
Для получения дополнительной информации вы можете проверить официальный документации.
Заключение
MLflow — отличный и постоянно развивающийся инструмент жизненного цикла машинного обучения. Вы можете использовать его вместе с вашими текущими инструментами и платформами.
Он поддерживает несколько языков программирования, включая Python, Java и R. Вы также можете быстро отслеживать, сохранять и сравнивать различные версии моделей благодаря удобному дизайну.
Попробуйте MLflow и расскажите нам о своем опыте!
Оставьте комментарий