Сегодня поговорим про инженерную инфру в DS, всякий MLOps #MLOps
Начнем с #Jupyter -а...
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 версиях