Есть ли настоящая конфигурация кода для jupyter notebook / labs?

Итак, у меня есть установка jupyterhub-esk, в которой я раскручиваю контейнеры, которые запускают либо jupyter lab, либо ноутбуки jupyter (в зависимости от выбора пользователей). При запуске контейнер в основном выполняет клон git, что позволяет мне выбрать один из моих репозиториев git и развернуть рабочую среду jupyterlab со всем содержимым в течение нескольких минут.

До недавнего времени в моем dockerfile был большой список предустановленных библиотек, который увеличивался по мере того, как я добавлял требования к своим различным проектам. Однако все это становится довольно неуправляемым, поскольку размер встроенного образа докера приближается к 4 ГБ (Ура!).

Я решил использовать подход «конфигурация как код» - каждое репозиторий git будет иметь свою среду environment.yaml (это conda env) в корневом каталоге, который будет установлен и активирован на лету, когда контейнер раскручивается. Каждое репо обязано знать свои требования. Это позволит получить компромисс между временем раскрутки и размером контейнера, а также сделает вещи более воспроизводимыми за пределами моего специально созданного изображения!

Однако я столкнулся со следующей проблемой:

  • Для большинства моих записных книжек требуется тот или иной плагин (gmaps / widgets / и т. Д.)
  • Плагины для лабораторий jupyter очень чувствительны к конкретной версии лаборатории (главный кандидат для конфигурации в виде кода)
  • Я могу нормально установить плагин через environment.yaml, но не могу активировать его по умолчанию!
  • Это означает, что каждый раз, когда я запускаю среду jupyter, приходится ~ 5 минут возиться с дополнительной конфигурацией !! Хуже того, вся идея этого проекта состоит в том, чтобы я мог отправить ссылку кому-то не в курсе - и у них может быть настроенная среда с моими записными книжками в ней, готовая поиграть в считанные минуты.

Существует ли простая конфигурация в качестве решения для кода, которое поддерживает как пакеты python / conda, так и расширения jupyter? Я знаю, что они в некоторых отношениях ортогональны (вы можете поменять местами conda env, но ваши расширения являются свойством ваша ядерная сессия)

Я уже думал о следующих двух неоптимальных решениях:

  1. Environment.yaml И startup.sh

Я не такой уж большой поклонник этого, он решает эту проблему, но это не чистый подход. Запуск любого старого сценария оболочки из общедоступного репозитория git - всегда плохая идея (безопасность). Кроме того, часть людей, разбирающихся в сценариях оболочки, отличается от группы людей, использующих записные книжки, что затрудняет совместное использование этого решения.

  1. старая добрая магия ipython
import sys
!jupyter nbextension enable xyz...
sys._exit(00)

Опять же, не самый большой поклонник, это убивает работу всех ячеек в ноутбуке, плюс кажется действительно неуклюжим.

Мы будем благодарны за мысли и предложения людей!


person ThatGuyCalledRob    schedule 30.06.2020    source источник


Ответы (1)


В официальном репозитории в GitHub и в Если вы их пропустили, я предлагаю вам взглянуть на них, чтобы решить вашу проблему.

AFAIK, есть небольшая работа по автоматической настройке Jupyter Notebooks, например здесь, который превращается в сценарий bash, устанавливающий все необходимые компоненты.

person madduci    schedule 01.07.2020
comment
dockerstacks - отличная отправная точка, но не помогает с конфигурацией в виде кода. Раньше я использовал их в качестве отправной точки, но недавно перешел на пользовательский образ сборки, чтобы лучше контролировать, что и где установлено. terraform тоже хорош, но не решает проблему с возможностью установки расширений для ноутбуков в ядро ​​ipython. - person ThatGuyCalledRob; 01.07.2020