Приоритет специалистов по обработке данных просто заключается в выборе правильных функций, построении и развертывании своих моделей, они не любят, когда их особенно беспокоят другие аспекты, такие как управление версиями моделей, планирование заданий, архитектура потока, управление вычислительными ресурсами, что необходимо для создания успешное внедрение науки о данных.
Здесь на помощь приходит Metaflow
Metaflow - это инструмент с открытым исходным кодом от Netflix для управления рабочими процессами в области анализа данных. Он направлен на повышение продуктивности специалистов по данным, позволяя им сосредоточиться на реальной работе в области науки о данных и способствуя более быстрому производству их результатов.
Если вы знакомы с Airflow или Luigi, тогда вы поймете функцию Metaflow. Он позволяет вам запускать процесс науки о данных поэтапно, поэтому каждый шаг является узлом в процессе, а узлы связаны, как график, как показано ниже.
Эта система называется DAG, направленный ациклический граф. В этом гипотетическом примере поток обучает две версии моделей параллельно и выдает наивысшую оценку точности.
Еще одним интересным атрибутом Metaflow является то, что он поставляется с легким сервисом, который обеспечивает централизованное место для проверки и отслеживания всех ваших потоковых выполнений. Metaflow будет использовать локальный каталог для отслеживания всех метаданных при выполнении с вашего ноутбука. Эти метаданные называются артефактом данных.
Вы можете использовать локальную записную книжку Jupyter для взаимодействия с артефактами данных от всех ваших предыдущих выполнений, а также с текущими. Однако развертывание службы Metaflow вместе с Amazon S3 в качестве хранилища данных полезно, если вы хотите делиться результатами со своими коллегами и отслеживать свою работу, не опасаясь потери состояния.
По мере продвижения мы увидим пример выполнения потока с помощью Metaflow, а также проверки артефактов данных.
Основные компоненты Metaflow
Metaflow Dag по сути состоит из потока, шага и перехода.
- Поток: экземпляр, который управляет всеми кодами конвейера. В данном случае это объект Python class MyFlow (Flowspec)
- Шаги: шаг - это наименьшая возобновляемая единица вычисления, ограниченная декоратором @step, это функции Python в объекте MyFlow, в данном случае def start, fitA, fitB, eval, конец.
- Переходы: связи между ступенями могут быть разного типа (линейные, ветвящиеся и для каждого); подробнее в документации.
Вокруг потока есть 3 компонента:
- Хранилище данных - это место, где хранятся все данные (артефакт данных), сгенерированные на протяжении всего потока.
- Метаданные - это место, где хранится информация о выполнении потока.
- Клиент - это компонент, который является соединением для доступа к данным в хранилище данных и получения информации о потоке из метаданных.
Эти компоненты в потоке позволяют специалистам по обработке данных возобновлять запуск, проверять метаданные запуска, выполнять гибридные запуски и сотрудничать.
Настройка Metaflow
Metaflow можно использовать как на локальных, так и на удаленных серверах, таких как AWS.
На локальном и удаленном сервере можно легко установить Metaflow, просто
pip install metaflow
Или обновите уже установленный Metaflow
pip install - upgrade metaflow
Теперь можно предпочесть удаленный вариант, учитывая масштаб необходимых данных и ресурсов, или локальный, где требуется быстрое взаимодействие, но будут ограничения ресурсов.
Существует также гибридный метод, позволяющий получить лучшее из обоих миров - локального и удаленного - путем простого переключения между обоими серверами. Metaflow автоматически делает снимки всех данных и кода в облаке. Это означает, что вы можете проверять, возобновлять и восстанавливать любое предыдущее выполнение Metaflow, не беспокоясь о том, что плоды вашей тяжелой работы будут потеряны.
Начало проекта по науке о данных / машинному обучению - MNIST
В этой публикации мы создадим рабочий процесс по науке о данных для обучения модели машинного обучения с использованием набора данных MNIST.
Набор данных MNIST изначально представляет собой базу данных изображений рукописных цифр, но для этого проекта данные изображения были преобразованы в формат CSV с использованием его каналов -RGB - в качестве функций в наборе данных, то есть векторизованных.
Файл data
содержит 60 000 примеров и этикеток. Каждая строка состоит из 785 значений: первое значение - это метка (число от 0 до 9), а остальные 784 значения - значения пикселей (число от 0 до 255).
Это будет включать извлечение данных, подготовку данных, разделение данных, подгонку и прогнозирование модели, а также оценку модели.
Приведенный выше график можно представить в приведенном ниже коде.
Прохождение каждого шага на графике
Первым шагом было установить путь к файлу данных MNIST и загрузить набор данных во фрейм данных Pandas.
Вторым шагом была подготовка набора данных путем извлечения функций и метки из всего набора данных.
Следующим шагом было разделение данных на поезд и тестовый набор в соотношении 50:50.
Затем мы подбираем прогноз по данным для гауссовской наивной байесовской модели.
Затем мы подбираем прогноз на основе данных для модели случайного леса.
Здесь мы объединили две ветви, на которых работают модели классификации. Мы объединили артефакты данных из двух веток.
Затем мы оценили модель
И закончился бег
См. Полную базу кода ниже
Посмотреть результат выполнения потока
Мы видим, что модель случайного леса работает лучше, чем модель наивного Байеса по Гауссу с результатом 93,6% по сравнению с 56,7%.
С помощью Metaflow мы также можем проверять наш поток, то есть проверять список потоков, количество запусков, последний запуск, список шагов и артефакт данных на каждом шаге. Это особенно полезно при отладке вашего потока.
Ошибка обычно появляется в этой форме
Ниже вы можете проверить свой поток таким образом, это можно сделать с помощью записной книжки Jupyter или вашего интерфейса командной строки. В этом проекте мы используем блокнот Jupyter.
Итак, мы рассмотрели понимание Metaflow, его основных компонентов, пример выполнения потока с использованием набора данных MNIST и проверки потока данных.
Надеюсь, это было информативным. Делитесь.
Ваше здоровье