[Перевод] Как запустить Jupyter Notebook в браузере без бэкенда
К старту нашего флагманского курса по Data Science представляем перевод обзора JupyterLite прямо из блога его разработчиков. JupyterLite — это перезагрузка множества попыток создать полный статический выполняемый в браузере дистрибутив Jupyter, чтобы не было необходимости запускать сервер Jupyter.
Цель проекта — дать лёгкую вычислительную среду в браузере, доступную по одному клику спустя несколько секунд, без установки чего-либо на устройство конечного пользователя. При работе с дистрибутивами в браузере не нужно предоставлять среду выполнения на бэкенде. Приложение в основном представляет собой набор статических файлов, поэтому проще масштабируется и его легче развёртывать.
JupyterLite работает в браузере на статическом веб-сайте ReadTheDocs
Полноценный дистрибутив JupyterLab в браузере
JupyterLite разработан с нуля, он повторно использует множество плагинов и компонентов JupyterLab как есть. В дополнение к JupyterLab JupyterLite по умолчанию работает с интерфейсом RetroLab:
JupyterLite с интерфейсом RetroLab
Благодаря повторному использованию компонентов JupyterLab JupyterLite получает преимущества многих улучшений: новых функций, исправлений специальных возможностей и улучшений обслуживания. В JupyterLite также можно включить совместную работу в реальном времени из JupyterLab 3.1.
Совместная работа в режиме реального времени, JupyterLite в ReadTheDocs
Pyolite — поддерживаемое Pyodide ядро Python
Pyodide — это скомпилированный в WebAssembly интерпретатор CPython 3.8, позволяющий запускать Python в браузере, а также скомпилированных научных пакетов Python.
Из индекса пакетов PyPI Pyodide может установить любой пакет wheel, он содержит комплексный интерфейс внешних функций, предоставляющий экосистему пакетов Python для JavaScript и пользовательский интерфейс браузера для Python, в том числе DOM.
Pyodide: Python и его скомпилированный в WebAssembly научный стек
С версии 0.17 за последние несколько лет Pyodide получил множество улучшений: меньший размер двоичных файлов, поддержку asyncio и улучшение трансляции типов между Python и JavaScript.
JupyterLite по умолчанию поставляется с Pyolite — ядром Python, которое поддерживается Pyodide. Это ядро работает в веб-воркере, а значит при выполнении интенсивных вычислений не блокирует основной поток пользовательского интерфейса.
IPython в браузере
Pyolite теперь работает на IPython, что открывает доступ к его магическим командам, завершению кода, расширенному отображению, интерактивным виджетам и многим другим функциям.
IPython в JupyterLite
Интерактивная визуализация
В JupyterLite также поддерживаются многие библиотеки визуализации, такие как Altair и Plotly, что позволяет быстро и удобно создавать рисунки и графики:
Altair в JupyterLite
Поддержка виджетов Jupyter
В основе виджетов Jupyter лежит спецификация кастомных сообщений протокола Jupyter между ядром и интерфейсом. Мартин Рену добавил поддержку Comms в ядре Pyolite, что позволило многим существующим основным и сторонним виджетам, например bqplot, ipyleaflet и ipycanvas, работать из коробки.
JupyterLite по умолчанию поддерживает виджеты Jupyter
Больше, чем просто Python
JupyterLite работает со множеством ядер. Дистрибутив по умолчанию содержит ядра JavaScript и p5:
В JupyterLite доступно несколько ядер.
Эти ядра выполняются в IFrame как изолированные окружения. С помощью протокола отображения Jupyter можно легко отображать кастомные анимации:
Ядро p5.js в JupyterLite
JupyterLite гибко настраивается
Как и многие инструменты Jupyter, JupyterLite легко настраивается. С версии 3.0 поддерживается новая встроенная система расширения JupyterLab, а существующие расширения JupyterLab легко повторно использовать в JupyterLab.
Расширение JupyterLab Drawio, работающее в JupyterLite
Серверная часть JupyterLite в браузере также использует плагины. Сервер — это регистрирующее несколько плагинов приложение Lumino без оболочки, где регистрируются, например, менеджер содержимого или служба сеансов.
Такой подход делает замену одного плагина на другой очень удобной для разработчиков или администраторов сайта.
Пример: замена менеджера содержимого по умолчанию, который хранит блокноты и файлы в LocalStorage, на менеджера, сохраняющего содержимое в AWS S3.
Обзор архитектуры JupyterLite на основе плагинов
Модульность и гибкость JupyterLite позволяют легко добавлять ядра. Ядро Basthon, прототип для запуска которого разрабатывается в этом репозитории, использует несколько иную модель выполнения, чем Pyolite: оно запускается в основном потоке пользовательского интерфейса, поэтому пользователи могут напрямую управлять DOM главного окна из Python.
Pyolite, в свою очередь, запускается в веб-воркере как фоновый поток. Оба подхода имеют свои плюсы и минусы, а система плагинов JupyterLite позволяет авторам расширений полностью контролировать свои ядра.
Basthon в JupyterLite
Развёртывание
JupyterLite легко разворачивается как статический веб-сайт. Никакой сложной настройки, никаких проблем с масштабируемостью. Только простой, обычный HTTP-сервер статических файлов.
Поэтому появляются варианты: Nginx, Binder, GitHub Pages или страницы GitLab, Vercel, Netlify и многие другие. Можно развернуть JupyterLite в ReadTheDocs, где размещён и постоянно обновляется демонстрационный сайт JupyterLite.
Многие сценарии развёртывания уже задокументированы здесь, также есть демонстрационный шаблон, позволяющий легко развернуть настраиваемый веб-сайт JupyterLite на страницах GitHub одним кликом.
Благодаря работе Николаса Боллвега в JupyterLite для удобства развёртывания появился инструмент командной строки jupyterlite. Одна из задач JupyterLite — позволить любому пользователю собрать собственный дистрибутив с необходимым ему набором плагинов и расширений. Сегодня для этого нужно работать с jupyterlite, но можно представить экспорт удобнее:
Макет экспортёра JupyterLite
Широкий спектр вариантов
Благодаря простоте развёртывания и низкому порогу входа JupyterLite отлично подходит для широкого спектра задач. В образовательном пространстве он упрощает доступ к учебным материалам и вычислительным средам. Преподаватели и студенты могут сосредоточиться на содержании своих занятий, не беспокоясь о развёртывании и мониторинге серверов.
С помощью JupyterLite мы также надеемся привлечь новую волну пользователей Jupyter и сделать всю экосистему ещё доступнее для новичков и более широкого сообщества. В случае небольших проектов это может даже снизить нагрузку на mybinder.org посредством развёрнутой на CDN версии JupyterLite — binderlite.
Как быстро попробовать JupyterLite
JupyterLite можно протестировать по этой ссылке.
Локальный запуск
Во-первых, установите пакет CLI:
pip install --pre jupyterlite
Затем создайте веб-сайт JupyterLite и разместите его на локальном сервере:
jupyter lite init
jupyter lite build
jupyter lite serve
Документация приложения jupyterlite находится здесь.
А поработать с JupyterLab или JupyterLite на практике вы сможете на наших курсах по Data Science, а на курсе «Machine Learning и Deep Learning» используется оборудование нашего партнёра и лидера в области вычислений для искусственного интеллекта — компании NVIDIA. Кроме того, здесь вы можете узнать, как начать карьеру или прокачаться, например, в Fullstack-разработке на Python:
Data Science и Machine Learning
Python, веб-разработка
Мобильная разработка
Java и C#
От основ — в глубину
А также: