Data-Science-процессы: Jupyter Notebook для продакшена |
||
МЕНЮ Главная страница Поиск Регистрация на сайте Помощь проекту Архив новостей ТЕМЫ Новости ИИ Голосовой помощник Разработка ИИГородские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Искусственный интеллект Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Нейронные сети начинающим Психология ИИ Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Творчество ИИ Техническое зрение Чат-боты Авторизация |
2022-05-05 07:40 Jovian Blues by ShootingStarLogBook Рефакторинг написанного в Notebook кода для запуска в продакшене — трудная и ресурсоемкая задача. Команда VK Cloud Solutions перевела материал о том, как с помощью MLOps-инструментов и приемов сократить время от исследования до запуска решения. Описанное в статье — результат структурированного опыта дата-сайентистов и ML-разработчиков из сотен компаний. Что следует помнить при деплое модели в продакшен Когда я думаю о продакшене, первое, что приходит на ум, — это передача продукта другой команде внутри компании или за ее пределами. Значит, при деплойменте нам нужны надежные и измеримые результаты. Плюс важно снизить риск появления багов на проде. Поэтому мы должны тестировать не просто код, а проект целиком: модель, данные, пайплайн и т. п. Project Jupyter Project Jupyter появился на свет в 2014 году на основе IPython. Его с энтузиазмом приняли в Data-Science-сообществе и де-факто признали стандартным инструментом для прототипирования. В 2017 году признание стало официальным: Project Jupyter получил награду ACM Software Systems Award, удостоившись той же чести, что и Unix, Web, Java и другие выдающиеся решения. Google Trends для Project JupyterОднако в некоторых Data-Science-сообществах о Notebook говорят как о вселенском зле. Я с этим не согласен и думаю, что Notebook — это прекрасно! Он позволяет нам работать с кодом в интерактивном режиме. Множество компаний, в том числе DagsHub, размещают инструкции и интерактивные руководства в интерфейсе Notebook. В нем есть встроенные визуализации, с помощью которых можно поделиться работой с коллегами по техническому цеху или стейкхолдерами, которые не хотят углубляться в технические детали. Благодаря всему этому он отлично подходит для быстрого создания прототипов. Недостатки использования Notebook в продакшене По мере развития и усложнения проекта, не говоря уже о его запуске в продакшене, вы, вероятно, упретесь в стену. В нашем исследовании мы выявили пять основных трудностей, с которыми сталкиваются дата-сайентисты:
Некоторые заходят так далеко, что даже развертывают Notebook в продакшене, что лично я делать не рекомендую. Это не соответствует отраслевым стандартам, рабочим процессам и передовым методам работы. Кроме того, в Notebook нет подходящих CI/CD-инструментов для поддержки жизненного цикла деплоймента. Notebook нуждается в основательной чистке и упаковке библиотек, что не входит в компетенцию дата-сайентиста. Кроме того, Notebook сложно запускать, когда на проде используются и другие инструменты. «Да ну? Netflix развертывает свои Notebook на проде», — аргумент, который я часто слышу в MLOps-сообществе. Да, некоторые классные компании используют этот инструмент в продакшене, но они вкладывают много ресурсов в поддержку таких процессов. У вас этих ресурсов, скорее всего, нет, как и желания их создавать под эту конкретную задачу. С разрешения HamelHusain Компоненты решения проблем с Notebook С учетом описанных выше трудностей и нюансов продакшена, я собрал вместе передовые практики и объединил их в структурированную схему, основанную на шести компонентах:
Пример сценария В нашем примере тимлид только что поговорил с советом директоров, и на горизонте замаячил новый проект «Спасем мир». Нам только что выслали набор данных, и, само собой, готовая модель нужна ASAP! Так что мы открываем новый Notebook и беремся за дело. Структура проектаПреобразование в скрипты Прежде всего изучим имеющиеся данные. Например, проверим их распределение. Псевдокод в Jupyter NotebookТеперь перейдем к важному концептуальному изменению, которое нам нужно сделать. Получаем первоначальный фрагмент кода, который выполняет то, для чего его написали, и рефакторим код в функцию Python, которая не полагается на глобальные переменные и принимает все как аргументы. Сохраняем функцию в скрипте Python, не в Notebook. Теперь ее можно вызвать из любой части проекта. Псевдокод IDE Далее импортируем функцию в Notebook и работаем. Псевдокод в Jupyter Notebook Преобразование в скрипты дает следующие возможности:
Монорепозиторий Теперь наш проект гораздо проще разбить на модули, и это преимущество надо использовать. Повысить масштабируемость, внедряя старую добрую стратегию единого репозитория, — принцип разработки, когда код для разных проектов хранится в одном репозитории. Эту стратегию используют такие компании, как Google, Microsoft и другие. Что связывает единый репозиторий и Data Science? Любой Data-Science-проект можно разделить на несколько этапов, которые совершенно не связаны друг с другом, например EDA, обработку данных, работу с ML-моделями. Монорепозиторий дает следующие возможности:
Контроль версий В совместной работе самое главное — контроль версий. Для этой задачи мы используем Git, который отлично подходит для параллельной работы и отслеживания версий кода. Git позволяет использовать стандартные CI-/CD-инструменты, одним щелчком возвращаться на предыдущий этап, изолировать продакшен и делать много других вещей. Подробнее о том, как все это работает, можно прочитать в статье Мартина Git for Data Science. А что насчет других артефактов? Допустим, команда по обработке данных подготовила новый набор данных — нужно ли им просто перезаписать старую версию? А может, зафиксировать ее, создав новую папку со значимым именем (например, new_data_v3_fixed_(1)_best.csv)? Ни один из вариантов нам не подходит, ведь нужно контролировать версии больших файлов.
Мониторинг экспериментов После рефакторинга кода в функции нам проще контролировать исходные параметры. Это помогает управлять конфигурацией на каждом этапе и с легкостью отслеживать гиперпараметры каждого эксперимента. Мы переносим конфигурации во внешний файл, и каждый модуль импортирует релевантные для него переменные.
Экспорт логики в скрипты Прежде чем выполнить деплоймент на прод, мы бы хотели перенести все логические шаги, сохраненные в Notebook, в скрипты на Python. Но при этом не отказываться от возможностей Notebook. Так что мы импортируем их обратно в Notebook. Экспорт логики в скрипты позволяет:
Юнит-тестирование Как и в разработке программного обеспечения, нам нужно удостовериться, что код или модель справляются с задачами, для которых их создавали. Это касается обработки данных, моделирования и всех этапов работы пайплайна. Заключение Jupyter Notebook — отличный инструмент для прототипирования и работы с данными, который в конечном счете наделяет нас сверхспособностями. Однако в продакшене становятся очевидны некоторые ограничения этого решения. Команда VK Cloud Solutions развивает собственные Big-Data-решения. Будем признательны, если вы их протестируете и дадите обратную связь. Для тестирования пользователям при регистрации начисляем 3000 бонусных рублей. Читать по теме:
Источник: habr.com Комментарии: |
|