Кожен, хто пробував розробку машинного навчання, розуміє, наскільки це складно. Окрім стандартних проблем у розробці програмного забезпечення, розробка машинного навчання (ML) створює безліч додаткових перешкод.
Доступні сотні інструментів з відкритим кодом, які допоможуть на кожному етапі життєвого циклу машинного навчання, від підготовки даних до навчання моделі.
На відміну від традиційної розробки програмного забезпечення, коли команди вибирають один інструмент для кожного кроку, з ML ви зазвичай хочете вивчити кожен доступний інструмент (наприклад, алгоритм), щоб побачити, чи покращує він результати.
В результаті розробники ML повинні використовувати і створювати сотні бібліотек.
Алгоритми машинного навчання містять тисячі настроюваних параметрів, і важко визначити, які параметри, код і дані були використані в кожному експерименті для створення моделі, незалежно від того, працюєте ви самостійно чи в команді.
Без належного моніторингу команди часто намагаються змусити той самий код функціонувати знову. Незалежно від того, чи ви науковець з даних, який передає свій навчальний код інженеру для використання у виробництві, або ви повертаєтеся до попередньої роботи, щоб діагностувати проблему, відмова від кроків робочого процесу ML має вирішальне значення.
Переміщення моделі до виробництва може бути складним через численні методи розгортання та середовища, які необхідно використовувати (наприклад, обслуговування REST, пакетний висновок або мобільні додатки). Не існує загального методу для переміщення моделей з будь-якої бібліотеки до будь-якого з цих інструментів, і тому кожне нове розгортання створює ризик.
Через ці проблеми очевидно, що розробка ML повинна значно покращитися, щоб стати таким же стабільним, передбачуваним і широко використовуватися, як і традиційна розробка програмного забезпечення.
ML Проблеми
- Існує величезна кількість різноманітних інструментів. Доступні сотні програмних рішень, які допоможуть на кожному етапі життєвого циклу машинного навчання, від підготовки даних до навчання моделі. Крім того, на відміну від традиційної розробки програмного забезпечення, коли команди вибирають один інструмент для кожного кроку, у машинному навчанні (ML) часто потрібно вивчити кожен доступний інструмент (наприклад, алгоритм), щоб побачити, чи покращує він результати. В результаті розробники ML повинні використовувати і створювати сотні бібліотек.
- Важко відслідковувати експерименти. Алгоритми машинного навчання містять тисячі настроюваних параметрів, і важко визначити, які параметри, код і дані були використані в кожному експерименті для створення моделі, незалежно від того, працюєте ви самостійно чи в команді.
- Важко реалізувати машинне навчання. Переміщення моделі до виробництва може бути складним через численні методи розгортання та середовища, які необхідно використовувати (наприклад, обслуговування REST, пакетний висновок або мобільні додатки). Не існує загального методу переміщення моделей з будь-якої бібліотеки до будь-якого з цих інструментів. Таким чином, кожне нове розгортання створює ризик.
Що таке MLflow?
MLflow — це платформа з відкритим кодом для життєвого циклу машинного навчання. Він заснований на концепції відкритого інтерфейсу, пропонуючи багато суттєвих абстракцій, які дозволяють легко інтегрувати поточну інфраструктуру та алгоритми машинного навчання із системою.
Це означає, що якщо ви розробник, який хоче використовувати MLflow, але використовує непідтримувану платформу, дизайн відкритого інтерфейсу спрощує інтеграцію цієї платформи та початок роботи з платформою. На практиці це означає, що MLflow призначений для роботи з будь-яким навчання за допомогою машини бібліотека або мова.
Крім того, MLflow сприяє повторюваності, що означає, що той самий навчальний або виробничий код машинного навчання призначений для виконання з однаковими результатами незалежно від середовища, чи то в хмарі, на локальній робочій станції чи в ноутбуку.
Нарешті, MLflow створений для масштабованості, тому його може використовувати невелика команда науковців з даних, а також велика компанія з сотнями практиків машинного навчання.
MLflow сумісний з будь-якою бібліотекою машинного навчання, алгоритмом, інструментом розгортання або мовою. Він також має наступні переваги:
- Призначений для роботи з будь-яким хмарним сервісом.
- Масштабується до величезних даних за допомогою Apache Spark.
- MLflow сумісний з різними фреймворками машинного навчання з відкритим вихідним кодом, включаючи Apache Spark, TensorFlow та SciKit-Learn.
Якщо у вас уже є код, з ним можна використовувати MLflow. Ви навіть можете поділитися своєю структурою та моделями між підприємствами, тому що це так з відкритим вихідним кодом.
Компоненти MLflow: як вони працюють?
MLflow — це безкоштовна платформа з відкритим вихідним кодом для керування життєвим циклом ML, який включає експерименти, відтворюваність, розгортання та єдиний реєстр моделі. Наразі 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 забезпечує відтворюваність у різних контекстах виконання, чітко описуючи весь набір вимог до процесу машинного навчання. Він досягає цього, встановлюючи всі ці бібліотеки та досягаючи того самого стану системи, в якому працює код.
Проект MLflow - це не що інше, як каталог. Це каталог, який містить навчальний код, визначення залежності бібліотеки та інші дані, необхідні для сеансу навчання, а також цей додатковий файл конфігурації.
Ці вимоги до бібліотеки можна визначити різними способами. Наприклад, користувачі можуть надати специфікацію середовища Anaconda у форматі YAML, щоб перерахувати вимоги до бібліотеки навчального коду. MLflow виконає навчальний код у контейнері. У такому випадку вони також можуть включати контейнер Docker.
Нарешті, MLflow має інтерфейс командного рядка (CLI) для виконання цих проектів, а також API Python і Java. Ці проекти можна запускати в локальній системі користувача, а також у різноманітних віддалених налаштуваннях, таких як планувальник завдань Databricks і Kubernetes. Проекти MLflow дозволяють пакувати код Data Science повторюваним і багаторазовим способом, переважно на основі стандартів.
Компонент проектів включає 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.
Моделі — це компонент зі стандартною структурою для пакувальних моделей, які можна використовувати та розуміти наступними інструментами, такими як сервери висновків або Збір даних платформа пакетного висновку. Цей компонент зберігає години роботи на замовлення під час упаковки моделі для виробництва.
Модель MLflow — це стандарт для упаковки моделей машинного навчання в різноманітних формах, відомих як «смаки». MLflow надає безліч інструментів, які допоможуть вам у розгортанні різних типів моделей. Кожна модель MLflow зберігається як каталог, що містить довільні файли, а також файл дескриптора моделі ML зі списком варіантів, у яких вона може використовуватися.
Ключові особливості
- Усі вбудовані інструменти розгортання MLflow пропонують кілька «стандартних» варіантів, таких як «функція Python», яка пояснює, як запустити модель як функцію Python.
- Кожна модель MLflow складається з каталогу, що містить довільні файли, а також файлу моделі ML у корені каталогу, який визначає численні варіанти моделі.
- Зберігаючи модель, MLflow дозволяє вказати параметр середовища Conda, який містить залежності моделі. Якщо середовище Conda не вказано, створюється середовище за замовчуванням на основі смаку моделі. Після цього середовище Conda зберігається в conda.yaml.
Для отримання додаткової інформації ви можете перевірити офіційну сторінку документація.
4. Реєстр моделі MLflow
Реєстр моделей — це сховище для вивчених моделей машинного навчання (ML). Реєстр моделей складається з API та веб-додатка, який використовується для підтримки моделей на різних етапах у команді. Породження моделі, керування версіями моделі, простий перехід на етапи та анотація — це лише деякі з можливостей, доступних у реєстрі моделей.
Реєстр моделей, крім самих моделей, містить інформацію (метадані) про дані та навчальні завдання, які використовуються для побудови моделі. Важливо стежити за цими необхідними вхідними параметрами для створення лінії для моделей ML. У цьому відношенні модельний реєстр функціонує так само, як і звичайне програмне забезпечення контроль версій системи (наприклад, Git, SVN) і сховища артефактів (наприклад, Artifactory, PyPI).
Реєстр моделей — це структура, яка дозволяє науковцям з даних і інженерам з машинного навчання публікувати, тестувати, відстежувати, керувати та поширювати свої моделі для співпраці з іншими командами. По суті, модельний реєстр використовується після того, як ви завершите етап тестування і готові поділитися своїми висновками з командою та зацікавленими сторонами.
Реєстр моделей MLflow надає API та користувальницький інтерфейс для керування моделями та їх терміном служби з центрального розташування. Родина моделі, версія версій моделі, анотації та переходи етапів доступні через реєстр.
У MLflow зареєстрованою моделлю є модель з унікальним ім'ям і метаданими, версіями моделі, перехідними фазами та родовідністю моделі. У зареєстрованій моделі можна знайти одну або кілька версій моделі. Нова модель вважається версією 1, коли вона зареєстрована в реєстрі. Наступна версія додається до будь-якої нової моделі з такою ж назвою.
Ви можете будь-коли призначити один крок будь-якій версії моделі. Однак етапи мають бути призначені відповідно до формально визначених фаз MLflow, таких як стадія, виробництво та архівування. Модельна версія може бути переведена з однієї стадії на іншу.
MLflow дозволяє використовувати markdown для анотації як моделі верхнього рівня, так і кожної конкретної версії. Ви можете включити описи, а також іншу доречну інформацію, таку як пояснення алгоритмів, методологія та використані набори даних.
Ключові особливості
- Щоб отримати доступ до реєстру моделі через інтерфейс користувача або API під час розміщення власного сервера MLflow, ви повинні використовувати серверне сховище з підтримкою бази даних.
- До реєстру моделі також можна отримати доступ через версію моделі MLflow або інтерфейс API відстеження клієнта MLflow. Ви можете, наприклад, зареєструвати модель під час запуску експерименту MLflow або після всіх запусків експерименту.
- Не всі почнуть навчати свої моделі за допомогою MLflow. Як результат, деякі моделі можуть бути навчені перед використанням MLflow. Замість того, щоб перенавчати моделі, ви просто бажаєте зареєструвати збережені моделі в Реєстрі моделей.
Для отримання додаткової інформації ви можете перевірити офіційну сторінку документація.
Висновок
MLflow – це чудовий інструмент життєвого циклу ML, який постійно розвивається. Ви можете використовувати його разом із наявними інструментами та платформами.
Він підтримує кілька мов програмування, включаючи Python, Java і R. Завдяки зручному дизайну ви також можете швидко відстежувати, зберігати та порівнювати різні версії моделей.
Спробуйте MLflow і розкажіть нам про свій досвід!
залишити коментар