🔥

Тред #5


Сегодня поговорим про инженерную инфру в DS, всякий MLOps #MLOps Начнем с #Jupyter -а...
notion image

Jupyter конечно говно, но очень удобное. Код, текст, графики, вывод: все в одном месте, как статья. Можно заставить на жирном сервере, не давать доступ по ssh, не мучаться с удаленным запуском, профилировать процессы

Поругайтесь на jupyter или выступите адвокатом дьявола. Можно выговориться как на кушетке у терапевта. После рабочих встреч и пары тасочек вернусь и пожалею вас. А еще расскажу свою историю с notebook-ами

Познакомился с Jupyter notebook-ом я на HighLoad 2014 (красиво закольцевал, да? вчера HighLoad, сегодня HighLoad) @facultyofwonder делал там доклад про анализ в рекламе и примеры демонстрировал в Jupyter-е

В этот момент я прозрел, до этого я обрабатывал данные на плюсах и джаве, работу с OpenCV делал через шарп. Да, на работе был python и java, но анализировать данные на Python в голову мне не приходило

Для некрофилов доклад можно посмотреть тут youtube.com/watch?v=GdJgLu… Все визуализации были на ggplot2

Когда пришел домой, поставил jupyter, тогда он еще назывался IPython Notebook, и воспроизвел весь код с концы (фотографировал слайды на телефон) Дальше начал экспериментировать

В 2015 году мы начали решать DS задачи в HeadHunter. На одной жирненькой тачке мы запускали jupyter каждый для себя (нас было 2е)

Когда в команде было уже 4-5 пользователей, решили что это уже не очень удобно, а тачку подтянули еще дирнпе

Ну и я зафигаяел jupyterhub на сервер Он конечно был. Ыроват, но мне повезло: репозитории hh на github, и oauth2 работал тут отлично

Я тащился делать микро-оптимзации, доп.библиотеки и различные улучшегия

Когда я пришел в юлу, там был python, r, pyspark и sparkR Все работало через jupyter

Первым делом мы отказались от R SparkR работал ну прям ужасно, иногда ложил кластер Благо в отделе у меня были просто лучшие и безболезненно перешли на pyspark

Мы отказались от Cassandra - и попытались перед ти на hive. Spark streaming иногда подводил

Вообще хранить кликстрмм в Cassandra, наверно самый большой посттравматический синдром того времени

Одна из особенностей, чтоб заставить jupyterhub,нужно было оформить это все в виде RPM пакета. DevOps такой DevOps

Но тут мне тоже очень повезло с коллегами из DevOps, это были затяжные вечера, но с обоюдным желанием докатить все до конца

Следующий jupyter на моем пути был в Lamoda Когда я пришел, все пользовались одним инстансом

Тут наверно стоит сказать о проблемах: вы не можете нестарнуть свой jupyter, рестартанет всех вы видите чужие ноутбуки и можете их случайно (или нет) прибить никогда нельзя понять, кто отъел CPU и RAM

С классным Data Engineer-ом, с позволения классной команды DS-ов мы заставили JupyterHub

тут рассказывал про некоторые фишки youtube.com/watch?v=q4d-hK… самый популярный мой доклад на ютубчике, почти 40к просмотров

А это продолжение про расширения и jupyterhub youtube.com/watch?v=v34y7X…

Что вообще стоит докручивать в Jupyter? слать метрики cpu, gpu, ram по ноутбукам и пользователям в графану, чтоб знать кто или что забило память авто-шатдаун ноутбука, если там давно (например сутки) ничего не выполняется...

если у вас используется Spark, я бы не делал pyspark ядро. почему? 3.1) частый кейс, тебе нужно всего лишь посмотреть старый ноутбук, копипастить какой-то код или посмотреть на результаты, а это создаст spark-контекст...

3.2) появляются сотрудники (аналитики, джуны), которые не знаю, что за этим скрывается и что такое контекст и какие там параметры 3.3) код нельзя превратить в py и запустить как скрипт 3.4) не все параметры контекста можно поменять по горячему...

Единственное, что можно сделать - вынести инициализацию контекста в отдельную функцию/либу и дать возможность менять параметры контекста до запуска)

автошатдаун Spark контекста - это тоже хорошо запретить консоль - а кому нужно, дать ssh вместо htop использовать glances.readthedocs.io/en/latest/ сделать Шеринг папку для того, чтоб делиться ноутбуками) если вы хотите на GitHub свой код, посмотрите reviewnb.com

Пожалуй все. Не подсаживайтесь на jupyter, много красивого, дашборды по кнопке - но слезать с этого будет больно Посмотрите в сторону удаленного запуска кода и его дебаг, функционал встроен в pycharm/idea, но вроде только в Pro версиях