Как ноутбуки уводят новую эру кодирования от текстовых редакторов и IDE

Возраст ноутбуков

Расширенные возможности

Машинное обучение становится все более популярным, и ноутбуки вызывают большой интерес. Помимо ноутбуков с открытым исходным кодом, Jupyter и Zeppelin, облачные провайдеры выпустили свои собственные версии, Amazon выпустила EMR Notebooks, Google Colab и Microsoft Azure notebooks. Более традиционные производители программного обеспечения, такие как Oracle, бросились в бой, и поэтому у них есть несколько стартапов, таких как dataiku.

Jupyter также создал два ответвленных проекта, JupyterHub и JupyterLab, которые предоставляют дополнительные функции по сравнению с ядром.

JupyterHub - это многопользовательский дистрибутив Jupyter, обеспечивающий аутентификацию и авторизацию пользователей и позволяющий размещать ноутбуки на сервере, а не на локальном компьютере.

JupyterLab - это эволюция Jupyter Notebook, которая движется к среде, подобной среде IDE. Используя JupyterLab, можно редактировать несколько файлов одновременно, просматривать различные файлы в папке ...

Расширяемая экосистема

Наряду с этим шквалом решений, для некоторых из этих ноутбуков также предусмотрена расширенная поддержка и расширение. Блокноты Jupyter теперь поддерживаются как часть VS Code, такие расширения, как Papermill, позволяют параметризовать блокноты, scrapbook - библиотека для управления выходами блокнотов Jupyter, reviewNB - системы проверки кода, предназначенные для блокнотов или связыватель. проект, целью которого является установка ваших ноутбуков в воспроизводимых средах.

Это расширение не учитывает многочисленные виджеты, включенные как часть других библиотек, которые используют богатый вывод и интерактивность Notebook.

Истории успеха

Ноутбуки также извлекли выгоду из нескольких историй успеха таких компаний, как Netflix, которые много писали об использовании Блокнотов и о том, как они используются в производственных сценариях использования.

Плюсы и минусы использования ноутбуков

Ноутбуки - это быстрый прототип и богатый опыт

Ноутбуки обеспечивают интерактивность REPL с пользовательским интерфейсом для дополнительной гибкости и лучшего редактирования кода. Это обеспечивает быструю обратную связь во время разработки и позволяет разрабатывать код быстрее, чем если бы он выполнялся как один монолитный фрагмент кода.

Код настройки Notebook в блоках, которые можно запускать независимо, делает так, что код не обязательно выполняется линейно, это сканирование упрощает эксперименты и испытания определенных операций без повторного запуска всего рабочего процесса.

Блокноты также предоставляют отличные возможности для совместного использования кода в контексте, включая специальные аннотации, которые делают код и анализ более легко интерпретируемыми, или предоставляя расширенные выходные данные, что делает его особенно хорошо подходящим для задач анализа, требующих как числовых, так и визуальных результатов. Существуют дополнительные виджеты, позволяющие быстро глубже погрузиться в определенные области данных.

Это богатство может быть дополнительно обогащено компонентами виджетов, такими как виджеты формы ввода, которые позволяют создавать простые приложения.

Однако они могут вызвать проблемы при попытке настроить его для производства.

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

Интерактивность записных книжек позволяет быстро создавать прототипы, часто без заботы, которую вкладывают в производственный код. Код, созданный для быстрого прототипирования, часто не настраивается с использованием той же абстракции, которая использовалась бы в обычном потоке разработки.

Также легко запутаться в проблемах, выполнив код вне последовательностей и сохранив переменные, все еще определенные в ядре. Разработка с использованием кода вне последовательности может привести к ошибочным или невоспроизводимым результатам. После того, как поток будет полностью настроен, необходимо с осторожностью и усердием перезапустить ноутбук.

Кроме того, среда записной книжки не очень подходит для работы с большей базой кода, полная записная книжка обычно требует повторного запуска на основе изменений во внешних файлах, вместо того, чтобы иметь только ячейки, зависящие от обновления изменений, необходимо использовать редактор и ноутбук.

В записных книжках также отсутствует поддержка проверки кода на том же уровне, что и в обычных файлах .py, и нет интегрированного способа управления рабочим процессом управления версиями кода в редакторе кода или приложении для записной книжки.

Ноутбуки выигрывают от богатой и разнообразной экосистемы

Ноутбук Jupyter и, в меньшей степени, Zeppelin извлекают выгоду из разнообразной экосистемы расширений, как официальных, так и неофициальных. Эти расширения улучшают определенные функции, делая ноутбук более интерактивным или упрощая запуск ноутбуков в производство. Помимо этих расширений, есть также ряд компонентов и инструментов, расширяющих функциональность Notebook.

NbExtensions

NbExtensions предоставляет набор неофициальных расширений для использования с Jupyter Notebook. Некоторые из предоставленных расширений позволяют использовать Latex Cell, отправлять в github gist, автоматическое форматирование кода…

NbExtensions предлагает пользовательский интерфейс конфигурации, который позволяет легко включать или отключать определенные расширения. Некоторые особенности содержащихся расширений описаны в этой статье.

Магическая команда

Jupyter / iPython поддерживают волшебные команды, которые расширяют функциональность ноутбука за пределы интерпретатора. Есть встроенные магические команды, такие как %%timeit, которые выводят время, необходимое для выполнения конкретной ячейки.

Блокнот Jupyter предлагает создавать собственные магические команды помимо тех, которые предусмотрены по умолчанию. Cython, например, предлагает волшебную команду %%cython -a для отслеживания вызовов, сделанных в Python vs. C.

Бумажная фабрика

Papermill - это расширение Jupyter, которое позволяет параметризовать записные книжки, позволяя систематически запускать код внутри записной книжки с различными параметрами. Эта настройка позволяет продвигать код записной книжки в производство без необходимости экспортировать ее в файл python, и позволяет сохранить богатство вывода записных книжек.

Papermill может взаимодействовать с блокнотами несколькими способами: с помощью кода Python или с помощью интерфейса командной строки. Также есть специальный Оператор бумажной фабрики в Воздушном потоке, позволяющий преодолеть некоторый пробел для создания ноутбуков в производстве.



Связующее

Binder - это инструмент, использующий докер, который позволяет создавать воспроизводимые среды для ноутбуков. Он поддерживает Jupyter notebook, Jupyterlab, а также несколько других ноутбуков или интерфейсы, подобные ноутбукам.



Виджеты

Виджеты позволяют добавлять интерактивные функции в записные книжки, есть набор виджетов по умолчанию, предоставляемых библиотекой ipywidgets, некоторые библиотеки Python, такие как Bokeh, интегрируют некоторые из этих функций.

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

Обзор Nb

Reviewnb - это платное приложение, которое позволяет выполнять обзоры кода на Jupyter Notebooks. Он интегрируется с Github и позволяет создавать цепочки разговоров для отдельных ячеек записной книжки.



nbgitpuller

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



Пригородный

Commuter предоставляет возможность исследовать как локальный, так и удаленный каталог и позволяет Jupyter читать содержимое этих записных книжек.



Репо знаний

Репозиторий знаний Airbnb - это инструмент, предназначенный для облегчения обмена записными книжками и информацией внутри организации. Он позволяет просматривать и читать серию записных книжек, опубликованных в организации, выполнять поиск по ключевым словам или фильтровать по тегам.



Nbconvert

Nbconvert - это утилита, которая позволяет конвертировать записную книжку в другой формат файла, например PDF. Например, Nbconvert использовался вместе с бумажной фабрикой для создания отчетов.



Резюме

Ноутбуки - очень мощный инструмент для анализа и создания прототипов, они извлекают выгоду из обширной экосистемы плагинов и инструментов, которые расширяют их функциональность. Для определенных типов операций, таких как работа с более крупной базой кода, они не подходят идеально, но мы начинаем видеть некоторые изменения и инструменты, которые решают некоторые из этих проблем.

Еще от меня о Хакерской аналитике: