- BrainTools - https://www.braintools.ru -
Всем привет, с вами Макс Гуляев. Я отвечаю за разработку сервиса Evolution Notebooks [1].
Jupyter Notebooks — проверенный временем инструмент, который на слуху у каждого DS или ML-инженера. Перечислять все его плюсы смысла нет, а вот минусы — вопрос, пожалуй, актуальный. Меня как ML-щика раздражало, что ты приходишь в ноутбук полный энтузиазма, надеешься решить все проблемы человечества с помощью своей модельки… Но выясняется, что путь к обучению [2] усеян локальными ограничениями ресурсов, проблемами с установкой зависимостей и коллаборациями, тут надо проверить, там подкрутить. В итоге модель ты обучаешь 20% времени, а остальные 80% проводишь в обработке напильником инструмента, который должен тебе помогать. Но хорошая новость: сегодня мы прокачаем эту унылую «тетрадку».
Под катом расскажу, как мы с командой хотели упростить жизнь ML-разработчикам и что из этого вышло.

Если вы DS и работаете локально на своем ПК или ноутбуке, вы, скорее всего, рано или поздно упретесь в ограничения по ресурсам. То есть может не хватать памяти [3], мощности процессора, потоков или GPU. Посчитать на CPU можно не всё, а обновлять железо (особенно процессор или видеокарту) сегодня можно только если предварительно выгодно загнать почку. Надеюсь, вы читаете это из светлого будущего, где всё уже рассосалось, но мы тут в 2025 пока что имеем некоторые сложности.
Следующее — это проблемы с установками и зависимостями. Иногда бывает так, что для разных проектов нужны совсем разные наборы библиотек и их версий. И вам нужно всем этим управлять. Вы ставите разные версии библиотек, или, например, одни библиотеки требуют какие-то другие — так возникают проблемы с зависимостями. Ну и настройка среды зачастую отнимает много времени, особенно у новичков.
Нередки тут бывают проблемы с установкой драйверов, Conda или различных пакетов для Linux. Само по себе, оно, конечно, не катастрофично, и профессионалы умеют с этим справляться, но, согласитесь, бесит, когда тебе всего-то и надо было, что написать функцию, запустить ее и поделиться результатом, а спустя час а то и неделю ты всё еще ковыряешься с «дровами» и библиотеками.
Пользовательская коллаборация — тоже тот еще квест. Трудно быстро поделиться ноутбуком или результатами с коллегой, если мы хотим что-то ему показать. Гораздо проще работать все-таки в облачной среде, нежели локально, поэтому многие используют общие файлообменники, иногда даже незащищенные. И вот здесь мы все плавно подходим к выводу, что все проблемы с ноутбуками могли бы решиться использованием управляемой облачной среды.
Главный затык, с которым должна была помочь облачная среда — это гибкое масштабирование ресурсов. Можно гибко подключать необходимые мощности, такие как CPU, GPU, RAM, без покупки и возни с железом.
А теперь представьте, что помимо удобства работы и возможности выбрать более мощный флейвор, можно еще и быстро настраивать окружения. Просто выбрать готовый образ с предустановленными библиотеками, CUDA и драйверами. Не нужно тратить время на весь этот сложный процесс: вы пришли работать, а не настраивать.
В общем-то, именно это и было нашей целью, когда мы взялись разрабатывать продукт, в который, казалось бы, сложно добавить что-то новое и по-настоящему удобное для пользователя.
Нам хотелось добиться:
Легкости совместной работы. Вы, например, с коллегами можете работать в одном проекте, редактировать, меняться ноутбуками, скидывать ноутбуки, контролировать версии также в рамках единого проекта.
Безопасности и стабильности. Данные и вычисления хранятся централизованно и защищённо. Здесь могу сказать, что наше облако Evolution аттестовано для работы с персональными данными по ФЗ-152. Соответственно, все данные надежно защищены.
Автоматизации и управления. Здесь у вас появляется возможность централизованно управлять доступами, ресурсами, бюджетом и интеграцией с корпоративными сервисами.
Итак, что же мы засунули под капот нашего маленького монстра, чтобы всего этого добиться?
Нам хотелось создать единое решение, которое бы пригождалось ML или DS-специалисту каждый день во всех его задачах от анализа входных данных до просмотра метрик и экспериментов. Ясное дело, для этого нам нужно, чтобы инструмент вобрал в себя что-то привычное – в данном случае Jupyter и что-то, что подойдет для узкоспециализированных задач — за это у нас будут отвечать различные фреймворки: Tensorflow, PyTorch, Keras, scikit-learn, Hugging Face. А дальше? А дальше накинем все, чего давно хотели сами. Про архитектуру и то, как вращаются шестеренки, подробно писал вот в этой статье [4], сейчас больше расскажу про фичи.
Вопрос бюджета и ресурсов, особенно если речь идет о GPU, во многих командах стоит остро: во-первых, никто не хочет, чтобы ноутбуки занимали рабочие ресурсы без дела; во-вторых, не хотелось бы забыть ноутбук включенным, а потом обнаружить в ЛК счет за всё то время, что он просто простаивал. Поэтому мы и добавили serverless с двумя опциями:
Request-таймаут — устанавливает время, в течение которого отправленный запрос будет ожидать ответ от контейнера (максимум – 10 минут). Запрос будет прерван при отсутствии ответа. На практике это значит, если вы запустили обучение модельки, и оно зависло на 15 минут, ноутбук отключится и прекратит это безобразие.
Idle-таймаут — устанавливает время (минимум – 60 секунд), в течение которого «холодный» экземпляр контейнера ожидает запрос после того, как выполнил все поступившие запросы. То есть если ноутбук запущен, открыт, но вы не работаете в нем — не выполняете ячейки, не кликаете, вышли попить кофейку, он выключается. Работа продолжится, только когда вы вернетесь и снова куда-нибудь кликнете.
Главное в этом всём, что когда ноутбук выключается, все переменные и данные сохраняются, можно просто продолжить с того же места, где закончили и не платить за время, если отвлекся на срочный созвон или просто забыл выключить. Важная оговорка! Все сохраняется при правильном использовании, то есть когда вы используете S3 + встроенный механизм переменных. В этом случае сильно упрощается порог входа, не надо быть DevOps’ом или сисадмином, чтобы разобраться, как это работает.
По-моему, это win-win, как для провайдера, который получает больше свободных ресурсов и может предоставить их другим пользователям, так и для пользователей ноутбуков, которым не надо платить за то, чем они всё равно и так не пользуются.
Допустим, вы ML-инженер с немного нестандартным проектом, который требует, к примеру, CUDA 12.1, а не 11.8, или специальную библиотеку или специфическую систему мониторинга. Что вы делаете в случае использования любого стандартного облачного IDE? Прааавильно: пишете в поддержку и молитесь, чтобы разрешили установку и настройку всего нужного и желательно не через год.
В случае c Evolution Notebooks у вас просто есть полный Root-доступ прямо в контейнере, а значит можно:
Устанавливать любое ПО через apt/pip.
Работать с системными файлами и переменными окружения.
Запускать команды через sudo без пароля.
Создавать и изменять системных демонов.
Короче, можно гибко под себя «докручивать» систему без участия администраторов. Например, c помощью Conda можно поставить бинарные пакеты, которые уже содержат в себе зависимости на скомпилированные библиотеки.
Каюсь, что это пока не работает с GPU-типами, но ключевое слово «пока», зато на CPU все уже реализовано.
Внутри ноутбука можно поднимать любые веб‑приложения (PySpark UI, Panel, ComfyUI, n8n, собственный inference‑сервис и т. п.), которые слушают локальный порт, а затем «вытащить» этот порт во внешний интерфейс через механизм проксирования, не меняя манифест пода и не перезапуская контейнер. Пользователь в UI ноутбука просто указывает порт запущенного приложения и получает к нему доступ по ссылке или кнопке в Jupyter, без ручной настройки и дополнительной маршрутизации. Это заметно упрощает запуск сторонних веб‑инструментов и позволяет быстро собирать сложные сценарии прямо в ноутбуке.
Приведу пару конкретных примеров, где это особенно удобно:
1. Запуск инференса прямо из ноутбука.
Допустим, я написал модель, которая определяет по фотке, кто это: кот или пёсель. Но чтобы код превратился в приложение, куда можно закинуть фотку и получить ответ, обычно нужно поплясать с бубном: установить Flask, настроить маршруты, поднять отдельный сервер, открыть порт, настроить обратный туннель, если это облако, и всё равно потом придется объяснять коллеге, как это использовать.
В нашем же случае, мы просто:
Скачиваем модель.
Запускаем сервер с моделью python3 main.py [5].
Запускаем проксирование, используя UI — не нужно мучиться с какими-то утилитами и прочим.

Я просто кликаю — и вот уже есть готовое приложение с интерфейсом для загрузки фото. Могу поделиться этой ссылкой с коллегой, и он тоже увидит интерфейс. Никаких перезагрузок контейнера, никаких манифестов — всё работает на лету.
Сразу оговорюсь, эта фича не заменяет полноценный инференс! Она нужна для того, чтобы удостовериться, что код рабочий, и показать коллегам, что и как работает. Для продовых нагрузок есть отдельный сервис Evolution ML Inference, где модельку можно выпустить «в люди».
2. Использование инструментов для создания интерфейсов или ComfyUI
Аналогично с другими инструментами. Например, я хочу использовать Streamlit. Запускаю streamlit run app.py [6], оно поднимается на порту (скажем, 8501), и снова — в Jupyter появляется кнопка, которая открывает готовый дашборд. Или используешь ComfyUI для генерации изображений (Stable Diffusion, например) — запускаешь, порт проксируется, и перед тобой графический интерфейс для создания картинок, прямо как на локальной машине, но в облаке. Или n8n (визуальный конструктор для автоматизации) — запустил, и готово, можешь собирать workflow через UI, не трогая код.
TensorBoard и MLflow уже интегрированы как преднастроенные приложения, запускаемые из ноутбука через тот же механизм проксирования. Пользователю не нужно отдельно поднимать сервисы, настраивать порты и конфигурацию — достаточно кликнуть, чтобы получить веб‑интерфейс для отслеживания экспериментов, логов, графиков обучения и метрик. Это снижает порог входа в эксперимент-трекинг и делает использование стандартных ML‑инструментов частью повседневного опыта [7] работы c Evolution Notebooks.
Ну и куда же в современном мире без AI. Арсенал доступных образов настолько крут, что в них есть наше фирменное расширение, которое добавляют файловый браузер VSCode-like, туториалы и самое крутое — AI ассистента. Он помогает писать код, используя большие языковые модели (LLM) и специализированные модели для программирования, может подсказывать фрагменты кода, помогать с исправлением ошибок и ускорять прототипирование, особенно для тех, кто не чувствует себя уверенно в Python или в конкретных фреймворках. Это делает ноутбуки удобнее для начинающих, которым бы не навайбкодить лишнего. Для опытных инженеров, которым важно быстро проверять гипотезы, тоже крайне полезная вещь.
Сервис предоставляет библиотеку преднастроенных базовых образов с уже установленными фреймворками и инструментами — от типовых ML‑стеков до специализированных образов вроде окружения с ComfyUI, n8n, VSCode‑сервером и другими популярными инструментами. Есть даже специальный образ для генерации видео с Kandinsky 5 Video Lite. Пользователь выбирает нужный образ и сразу получает готовую к работе среду без ручной установки библиотек и долгой настройки зависимостей. Это сильно сокращает time‑to‑first‑experiment и уменьшает количество ошибок из‑за конфликтующих версий библиотек.
Для ноутбуков можно выбрать режим доступа: закрытый, когда зайти в сессию могут только пользователи конкретного проекта, и публичный, когда ноутбук доступен любому по ссылке (это не дефолтный режим, а осознанный выбор). Закрытый режим удобен для командной работы в рамках одного проекта и соблюдения требований безопасности, а публичный — для демо, обучения, воркшопов и быстрых шерингов без сложной настройки прав. Такая гибкость режимов доступа упрощает коллаборацию и позволяет использовать ноутбуки в разных сценариях — от внутренней разработки до публичных показов.
Все перечисленные фичи уже есть и работают в сервисе. Но зачем останавливаться на достигнутом, когда можно не останавливаться?
Давать обещания, конечно, дело неблагодарное, но в дальнейших планах по развитию сервиса у нас:
Новые образы ноутбуков. Сейчас изучаем пользовательский опыт, чтобы на его основе собрать еще более удобные и востребованные готовые образы.
Cloud.ru Notebook SDK. Хотим расширить возможности SDK + сделать хранилище готовых Conda-окружений, и чтобы всё это было напрямую в интерфейсе JupyterLab.
Интеграция с сервисами платформы данных. Если вы не знали, у нас еще и своя платформа данных есть, где появились Managed Spark и Managed Airflow, скоро наладим с ними интеграцию и можно будет работать из ноутбука нативно, без лишней боли [8].
MLOps Pipeline. Планируем внедрить нативную поддержку пайплайна прямо из ноутбука, чтобы можно было все самому настроить, даже не будучи DevOps’ом.
Shared GPU в ноутбуках. Быстро и дешево любят все. Но, к сожалению, в 2025 слова «дешево» и GPU почти не встречались вместе. Мы хотим добавить возможность пользоваться «поделенной» на несколько клиентов видеокартой, чтобы запускать эксперименты в ноутбуке на приемлемых скоростях, но не за конские деньги.
Model Monitoring. Чтобы улучшать модель, важно следить за метриками, поэтому думаем реализовать сервис, позволяющий централизованно хранить метрики во время обучения модели.
Расскажите в комментах, каких фич вам всегда не хватало в стоковых IDE? Я, конечно, не Xzibit, но, если получится воткнуть в сервис что-то полезное сообществу, буду только рад. Ну и заходите, пользуйтесь [1].
Автор: MaximGulyaev
Источник [9]
Сайт-источник BrainTools: https://www.braintools.ru
Путь до страницы источника: https://www.braintools.ru/article/23679
URLs in this post:
[1] Evolution Notebooks: https://cloud.ru/products/evolution-notebooks?utm_source=habr&utm_medium=article&utm_campaign=jupyter_na_prokachku25122025
[2] обучению: http://www.braintools.ru/article/5125
[3] памяти: http://www.braintools.ru/article/4140
[4] подробно писал вот в этой статье: https://habr.com/ru/companies/cloud_ru/articles/909054/
[5] main.py: http://main.py
[6] app.py: http://app.py
[7] опыта: http://www.braintools.ru/article/6952
[8] боли: http://www.braintools.ru/article/9901
[9] Источник: https://habr.com/ru/companies/cloud_ru/articles/980100/?utm_campaign=980100&utm_source=habrahabr&utm_medium=rss
Нажмите здесь для печати.