Как начать работать с библиотекой для машинного обучения Metaflow

от автора

Metaflow — одна из лучших библиотек для машинного обучения, по мнению автора статьи, которая содержит простые аннотации на Python для создания Reproducible Data Engineering, обучения, валидации моделей и других этапов рабочего процесса. А еще модель позволяет выполнять их в локальной среде или в облаке. 

Команда VK Cloud Solutions перевела статью об этом опенсорсном решении, которое используют Netflix и многие другие компании для рабочих процессов в сфере машинного обучения и Data Science.

Какие проблемы можно решать с помощью Metaflow

  • Получать данные для обучения, обучать модель по расписанию и проводить аудит всех обученных моделей.
  • Создавать и настраивать ETL-пайпайн с помощью нескольких строк кода на Python.
  • Обучать масштабную модель в облаке с помощью Kubernetes, используя несколько строк на Python.
  • Быстро настраивать графы, состоящие из различных шагов процесса, использующего параллельные вычисления.
  • Возобновлять вычисления с определенного шага.

Я видел, как Metaflow использовали и для небольших ETL-пайплайнов, и для многодневных марафонов обучения. Простота этой библиотеки делает ее по-настоящему универсальной.

Пример использования Metaflow

Это упражнение займет буквально несколько минут! Я советую выполнять его в виртуальной среде Python. Сначала можно быстро создать виртуальную среду с помощью модуля virtualenv. Под Mac и Linux команды похожи, а под Windows немного различаются.

python3 -m virtualenv venv # activate new virtualenv source venv/bin/activate   pip3 install metaflow

Начнем с простого потока, чтобы убедиться, что все работает. Создайте
metaflow_start.py, используя фрагмент кода: 

from metaflow import FlowSpec, step  class LinearFlow(FlowSpec):  @step def start(self):     self.my_var = 'hello world'      self.next(self.step_one)   @step def step_one(self):     print ('the data artifact is: %s' % self.my_var)     self.next(self.end)   @step def end(self):     print ('the data artifact is still: %s' % self.my_var)   if __name__ == '__main__': LinearFlow() 

Запустите:

python3 metaflow_start.py run

Результат отобразится в консоли:

Metaflow 2.4.3 executing LinearFlow for user:{your_user_name} Validating your flow... The graph looks good! Running pylint... Pylint is happy! Workflow starting (run-id 1637382785717584): 2021-11-19 20:33:05.736 [1637382785717584/start/1 (pid 6096)] Task is starting. ... Task finished successfully. ...Task is starting..../step_one/2 the data artifact is: hello world... Task finished successfully. ... Task is starting.... the data artifact is still: hello world... Task finished successfully. ... Done! 

Вы создали свой первый поток!

В приведенном примере уже видны важные особенности Metaflow:

  • Когда вы внутри шага присваиваете значение аргументу self, оно доступно во всех шагах вплоть до последнего, только если где-то в середине не будет разделения на параллельные пути.
  • Если на том или ином этапе происходит разделение, то присвоенное на предыдущем этапе значение недоступно на следующих шагах.
  • Когда вы запускаете поток в облаке, значения, присвоенные аргументу self, сериализуются с использованием pickle и сохраняются в объектном хранилище S3. Переменная my_var получает значение hello_world, потом ее можно использовать в других шагах. Эту схему можно применять для передачи между шагами DataFrames, медиафайлов и других артефактов.

Как видите, с помощью Metaflow можно легко улучшить код на Python, добавить масштабируемую параллельную обработку данных или облачные вычисления в свой Data-Science-проект. 

Команда VK Cloud Solutions развивает собственные ML-решения. Будем признательны, если вы их протестируете и дадите обратную связь. Для тестирования пользователям при регистрации начисляем 3000 бонусных рублей.


ссылка на оригинал статьи https://habr.com/ru/company/vk/blog/666604/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *