Image

Почему я перехожу на блокноты Marimo

Новый взгляд на вычислительные ноутбуки

Делиться

bfe74def4f6c32b5ed2db1fe1d02c7cf

TL;DR: После многих лет использования Jupyter Lab я перенёс большую часть своей работы в блокноты Marimo — новый тип блокнотов Python, который решает многие давние проблемы традиционных блокнотов. В этой статье я расскажу о причинах моего перехода и о том, как Marimo органично вписывается в мой текущий рабочий процесс. Выражаю огромную благодарность проекту Jupyter за создание экосистемы блокнотов, которая повлияла на развитие науки о данных, исследований и образования.

Немного предыстории

Я годами работал с блокнотами. Долгое время моя система представляла собой смесь Jupyter Notebooks/Lab для локальных экспериментов и Google Colab для работы в облаке или с использованием графических процессоров благодаря их бесплатной версии. Я даже вёл множество блогов о том, как максимально эффективно использовать эти блокноты, где делился советами, как выйти за рамки обычного их использования.

Тем не менее, у традиционных блокнотов были определённые проблемы, самой серьёзной из которых была реактивность (точнее, её отсутствие). Скрытое состояние, нестандартное выполнение и ручные перезапуски — вот некоторые из моих проблем с этими блокнотами.

Всё изменилось, когда я открыл для себя Marimo — альтернативу блокнотам Jupyter с открытым исходным кодом, в которой можно запускать ячейки, выполнять вычисления и строить графики так же, как в Jupyter. Но в основе лежит совершенно иной подход, который решает множество давних проблем. Ключевое отличие заключается в том, что блокнот Marimo — это всего лишь файл Python, что делает его одновременно и более удобным блокнотом, и более удобной средой для программирования для всех, кто использует Python. В этой статье я расскажу о десяти причинах моего перехода и о том, почему работа с блокнотами стала для меня гораздо более удобной после перехода на Marimo.

Если вы хотите продолжить, установите Marimo, как показано ниже. Эта команда запускает редактор Marimo и открывает блокнот в режиме «песочницы» , который работает как облегченная виртуальная среда, изолирующая ваш блокнот от остальной системы. Вы также можете использовать marimo.new для создания нового блокнота в онлайн-игровой среде. Подробные инструкции см. в документации.

pip install marimo marimo edit —sandbox notebook.py

1. Реактивность, которая наконец устраняет скрытые проблемы состояния

Традиционные блокноты не являются реактивными. Это означает, что если я изменяю что-то в одной ячейке, остальные данные автоматически не обновляются. Мне часто приходится перезапускать их, чтобы сохранить согласованность результатов. Например, рассмотрим блокнот Jupyter ниже, где слева я определяю две переменные, a и b, складываю их, чтобы получить третью переменную c, а затем отображаю значение c, равное 30.

7eba5173a824ce6f5ff8592fbb444f65

Теперь, если бы я изменил a на 20, как показано справа, c всё равно отображал бы 30, пока я не перезапущу ячейку. Это несоответствие между кодом и выводом — классическая проблема скрытого состояния.

Marimo решает эту проблему с помощью реактивного выполнения, где каждая ячейка является частью графа зависимостей (DAG). Изменения в одной ячейке автоматически запускают обновления в зависимых ячейках. Таким образом, при изменении a Marimo переоценивает все зависимые ячейки. Посмотрите, как c автоматически обновляется при изменении значения a.

5964e84617b112aa3d66e6fafabc0c19

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

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

2. Порядок ячеек больше не нарушает мой рабочий процесс.

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

Это также открывает несколько интересных возможностей. Я использовал это для создания небольших тестов с автоматической оценкой, где ключ к ответу находится внизу блокнота. Тест всё равно работает отлично, потому что порядок ячеек не имеет значения, а ответы не видны сразу тому, кто его проходит. (И да, у Marimo тоже есть тёмный режим 😃.)

55ea2c4c962e1db8c1c2e59115faae94

3. По сути, это файл Python под капотом.

Поскольку каждый блокнот Marimo хранится как файл на чистом Python, это решает мою давнюю проблему с версионированием в Git. Наконец-то я могу отслеживать изменения без лишних проблем с JSON-файлами. Кроме того, блокнот становится гораздо более гибким. Я могу использовать его как скрипт, запускать из командной строки или даже превратить в небольшое интерактивное приложение, ничего не меняя.

Ниже справа показано окно блокнота Marimo, а слева — то же самое окно, открытое как обычный файл Python в редакторе.

f403559d835d9015b712e46b167cbb20

4. Я могу легко превратить свои блокноты в приложения.

Превратить блокнот Marimo в интерактивное приложение также легко. Я могу переключаться между режимом редактирования и видом приложения одним щелчком мыши, и мне никогда не приходится переписывать код или добавлять что-то ещё.

Вот пример блокнота, который преобразует температуру из градусов Цельсия в градусы Фаренгейта. Этот же блокнот можно просматривать в режиме приложения, используя вертикальный макет по умолчанию.

700c8148659896356e320eccadd35e1d

Эта функция особенно полезна для создания интерактивных блогов, обучающих материалов и обучающих пошаговых инструкций для библиотек. Если вы когда-либо читали AI Explorables, то знаете это ощущение взаимодействия с контентом, а не просто его чтения. Marimo создаёт похожие ощущения, а Grid Layout делает это ещё лучше, поскольку я могу перетаскивать выходные данные, чтобы расположить приложение так, как мне нужно.

3d346f3a56d5a01b06422aede9d18f80

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

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

78d97085d93cfd82980791b3572c6d93

Marimo также обеспечивает воспроизводимость. Когда я запускаю блокнот с флагом —sandbox, он отслеживает все пакеты и их точные версии и сохраняет их в файле блокнота как комментарий верхнего уровня. Отдельный файл requirements.txt не нужен, поскольку блокнот уже содержит всё необходимое.

3910d05ae528af6a1e44917e82348166

6. Встроенные утилиты для работы с DataFrames.

Если вы проводите много времени за изучением данных, эта функция сразу же покажется вам настоящей находкой. При отображении dataFrame в Marimo представление по умолчанию полностью интерактивно и включает в себя несколько полезных инструментов, таких как прокрутка, пагинация, автоматические гистограммы для числовых столбцов, а также простая сортировка и фильтрация по заголовкам столбцов. Для меня это ускоряет процесс EDA, поскольку визуальное исследование часто даёт более глубокое понимание.

389d317c5a64e90d1f575a2cfbe60706

Marimo также позволяет мне превратить DataFrame в интерактивный элемент ввода. Используя mo.ui.table, я могу выбирать строки и использовать эти выборки в последующих вычислениях. Выборки обновляются автоматически, а значит, и остальная часть моего блокнота тоже обновляется автоматически.

61425c2aca6c7e24a448b0181dbf45dd

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

c5da47c8553b51c4e351ae6c72e07ee4

И это ещё не всё. Есть ещё утилита Data Explorer , которая позволяет мне быстро создавать визуализации прямо из DataFrame.

5dab709254325117ab449b007d87c1ff

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

7. Просматривайте документацию по мере ввода текста.

Для меня одной из самых недооценённых функций блокнотов Marimo стала панель Live Docs. Я могу просматривать строки документации функций, параметры и примеры, не вызывая справочные утилиты.

Панель также интерактивна, поэтому я могу прокручивать длинные строки документации, просматривать примеры и копировать фрагменты в блокнот. Если в строке документации есть отформатированные примеры, Marimo распознаёт их и позволяет скопировать их прямо в новую ячейку, что очень удобно при изучении новых библиотек.

0bb6ac15fcd9231c954b3943053fecb4

8. SQL внутри блокнота

Marimo отлично поддерживает SQL. Я могу работать в одном блокноте и естественным образом комбинировать SQL и Python. Я могу написать SQL-запрос внутри SQL-ячейки, выполнить его и получить такое же понятное табличное представление, которое Marimo предоставляет для DataFrames.

Я также могу выполнять SQL-запросы для локальных файлов через DuckDB. Простой выбор * из «file.csv» работает. Если я хочу подключиться к реальной базе данных, это можно сделать через боковую панель. Marimo позволяет добавлять различные источники данных, и после добавления таблицы отображаются прямо в блокноте.

737192ea8f8a61952d612292c966bf1a

9. Molab: блокноты Marimo в облаке

Molab предназначен для блокнотов Marimo, как Google Colab для блокнотов Jupyter. Вы получаете все преимущества блокнотов Marimo в облаке. Вы можете открыть Molab на molab.marimo.io, создать новые блокноты или открыть уже созданные. Это отличный вариант, когда нужно быстро создать блокнот или не запускать приложения на компьютере. Многие популярные пакеты Python предустановлены, блокноты имеют постоянное хранилище, и я могу легко делиться ими, скачивать и загружать.

38635eae9746489c91a65aec4dd247ff

Ещё одна полезная функция — интеграция с GitHub. Перейдя по ссылке Molab и заменив molab.marimo.io/notebooks на molab.marimo.io/github, вы сможете открыть в Molab любой блокнот, размещённый на GitHub, будь то Jupyter или Marimo. Однако пока поддержки графических процессоров, как в Colab, нет, но я уверен, что команда будет над этим работать.

10. Настраиваемая интеграция LLM

В Marimo также есть несколько действительно полезных встроенных функций программирования с использованием ИИ, которые мне очень помогли. Честно говоря, в Jupyter также есть расширение JupyterLab для функций ИИ под названием JupyterAI (и да, я тоже писал о нём), но встроенная поддержка ИИ в Marimo избавляет меня от многих сложностей.

Я использую ИИ в Marimo в основном для двух целей. Во-первых, для создания новых блокнотов, когда я хочу опробовать новую библиотеку или провести быструю демонстрацию. Это экономит мне время, поскольку не нужно искать экспериментальные наборы данных или настраивать всё с нуля.

31682219f1f53458cb04695e9c3e9778

Второе — рефакторинг и отладка. ИИ-помощник Marimo имеет полный контекст моего блокнота, поэтому он может прочитать мой код и помочь мне исправить или очистить его прямо в блокноте.

df8e442b50c754dc312100757ea63692

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

Заключение

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

Источник: towardsdatascience.com

✅ Найденные теги: новости, Почему

ОСТАВЬТЕ СВОЙ КОММЕНТАРИЙ

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

галерея

Мужчина заряжает электромобиль на зимней стоянке, снег, дальний план - деревья и горы.
Человек спит в кровати под красным пледом, солнечный свет падает на подушку.
Человек в смокинге держит планеты Земля и Марс, символизируя космические достижения.
Твердотельный аккумулятор Donut на выставке, показывает замещающий литий-ион стоимость.
Человек рядом с изображением двойной спирали ДНК на фоне природы.
Залитый солнцем лес с деревьями и болотистой водой, покрытой зелёной растительностью.
Пленка NeoFilm 100 на деревянном столе в окружении упаковок.
Деревянный минималистичный сундук с подсветкой в интерьере.
Обложка отчета о преодолении разрыва в операционном ИИ от MIT Technology Review.
Image Not Found
Человек в смокинге держит планеты Земля и Марс, символизируя космические достижения.

Почему SpaceX может выйти на биржу и с чем это может быть связано

Мы ведь явно не воспринимаем всерьез центры обработки данных в космосе? Элизабет Лопатто, старший репортер. Публикации этого автора будут добавляться в вашу ежедневную рассылку по электронной почте и в ленту новостей на главной странице вашего сайта. Все…

Мар 5, 2026
Твердотельный аккумулятор Donut на выставке, показывает замещающий литий-ион стоимость.

Согласно результатам испытаний, твердотельная батарея Donut Lab способна выдерживать (экстремальные) температуры.

Разработанная финским стартапом батарея не только выдержала экстремальные условия высокой температуры, но и фактически увеличила свою емкость. Эндрю Дж. Хокинс, редактор раздела «Транспорт». Публикации этого автора будут добавляться в вашу ежедневную рассылку по электронной почте и в…

Мар 5, 2026
Пленка NeoFilm 100 на деревянном столе в окружении упаковок.

Цифровая камера OPT NeoFilm 100 в формате плёнки

Компактная камера OPT NeoFilm 100 выполнена в виде классической 35-мм плёнки, но внутри скрывается не аналоговый механизм, а цифровая «начинка», способная снимать фото и видео.  Камера оснащена 1-мегапиксельным сенсором, который позволяет получать изображения с разрешением до 3…

Мар 5, 2026
Деревянный минималистичный сундук с подсветкой в интерьере.

«Умная» кровать-трансформер Roll

Хорватский дизайнер Лука Булян разработал проект складной кровати Roll, которая по нажатию кнопки сворачивается в аккуратный деревянный шкаф. Главная идея строится на принципе ежедневного скручивания матраса без потери его свойств. Конструкция оснащена тихим электродвигателем и плавным механизмом…

Мар 5, 2026

Впишите свой почтовый адрес и мы будем присылать вам на почту самые свежие новости в числе самых первых