Три инструмента для выполнения Jupyter Notebook


Введение

Выполнение блокнотов может быть очень полезным в различных ситуациях, особенно при длительном выполнении кода (например, обучение модели) или параллельном выполнении (например, обучение сотни моделей одновременно). Это также жизненно важно при автоматизации анализа данных в проектах с регулярными интервалами или с участием более чем одного ноутбука. В этой статье блога будут представлены три широко используемых способа выполнения блокнотов: Ploomber, Papermill и NBClient.

Ploomber

Ploomber — это комплексное решение для выполнения блокнотов. Он построен на основе Papermill и расширяет его, позволяя писать многоэтапные рабочие процессы, где каждая задача является блокнотом. При этом он автоматически управляет оркестровкой. Таким образом, вы можете запускать блокноты параллельно без необходимости писать дополнительный код.

Еще одной особенностью Ploomber является то, что вы можете использовать процентный формат (поддерживаемый VSCode, PyCharm и т.д.) и выполнять его как блокнот, чтобы автоматически записывать результаты, такие как графики или таблицы, в выходной файл.

Также вы можете экспортировать конвейеры в airflow, Kubernetes и т.д. Пожалуйста, обратитесь к этой документации для получения дополнительной информации о том, как перейти от блокнота к производственному конвейеру.

Ploomber предлагает два интерфейса для выполнения блокнота: YAML и Python. Первый — самый простой для начала работы, а второй предлагает большую гибкость для построения более сложных рабочих процессов. Кроме того, он предоставляет бесплатный облачный сервис для выполнения блокнотов в облаке и распараллеливания экспериментов.

Выполнение блокнотов через Python API

Ploomber предлагает Python API для выполнения блокнотов. В следующем примере будет запущен first.ipynb, затем second.ipynb и сохранены выполненные блокноты в out/first.ipynb и out/second.ipynb.

from pathlib import Path
from ploomber import DAG
from ploomber.tasks import NotebookRunner
from ploomber.products import File

dag = DAG()
first = NotebookRunner(Path('first.ipynb'), File('out/first.ipynb'), dag=dag)
second = NotebookRunner(Path('second.ipynb'), File('out/second.ipynb'), dag=dag)
first >> second

dag.build() 
Вход в полноэкранный режим Выход из полноэкранного режима

Выполнение блокнотов через YAML API

Ploomber также предлагает YAML API для выполнения блокнотов:

tasks:
  - source: first.ipynb
    product: out/first.ipynb

  - source: second.ipynb
    product: out/second.ipynb
Войти в полноэкранный режим Выйти из полноэкранного режима

Затем пользователи вызывают следующий код для выполнения блокнота:

ploomber build
Войти в полноэкранный режим Выйти из полноэкранного режима

Выполнение блокнотов в облаке

Ploomber также поддерживает выполнение блокнотов в облаке:

ploomber cloud build
Войти в полноэкранный режим Выйти из полноэкранного режима

Пожалуйста, обратитесь к этой документации для получения дополнительной информации об облачном выполнении с помощью Ploomber.

Papermill

Основная особенность Papermill заключается в том, что он позволяет вводить параметры в блокнот. Поэтому вы можете использовать их в качестве шаблонов (например, запускать один и тот же блокнот для обучения модели с разными параметрами). Однако он ограничивается предоставлением функции для выполнения блокнота. Следовательно, нет возможности управлять параллельным выполнением.

Существует два способа выполнения блокнота:

  • Python API
  • Интерфейс командной строки

Выполнение блокнотов через Python API

Papermill предлагает Python API. Пользователи могут запускать блокноты с помощью Papermill:

import papermill as pm

pm.execute_notebook(
   'path/to/input.ipynb',
   'path/to/output.ipynb',
   parameters = dict(alpha=0.6, ratio=0.1)
)
Войти в полноэкранный режим Выйти из полноэкранного режима

Выполнение блокнотов через CLI

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

papermill input.ipynb output.ipynb -p alpha 0.6 -p l1_ratio 0.1
Войти в полноэкранный режим Выйти из полноэкранного режима

Через CLI пользователи могут выбрать выполнение блокнота с параметрами в виде файла параметров, строки YAML или необработанных строк. Для получения дополнительной информации о выполнении блокнота с параметрами через CLI вы можете обратиться к этой документации.

NBClient

NBClient предоставляет удобный способ выполнения входных ячеек файла блокнота .ipynb и сохранения результатов, как входных, так и выходных ячеек, в виде файла .ipynb. Если вам нужно экспортировать блокноты в другие форматы, такие как reStructured Text или Markdown (по желанию выполняя их), обратитесь к nbconvert.

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

  • Python API
  • Интерфейс командной строки

Выполнение блокнотов через Python API

Следующий быстрый пример показывает, как импортировать классы nbformat и NotebookClient, затем загрузить и настроить блокнот notebook_filename. Мы указали два необязательных аргумента, timeout и kernel_name, которые определяют таймаут выполнения ячейки и ядро выполнения. Обычно нам не нужно задавать эти параметры, но эти и другие доступны для управления контекстом выполнения.

import nbformat
from nbclient import NotebookClient

nb = nbformat.read(notebook_filename, as_version=4)
client = NotebookClient(nb, timeout=600, kernel_name='python3')
Вход в полноэкранный режим Выход из полноэкранного режима

Затем мы можем запустить блокнот на выполнение:

client.execute()
Войти в полноэкранный режим Выйти из полноэкранного режима

И мы можем сохранить полученный блокнот в текущей папке в файле executed_notebook.ipynb, выполнив:

nbformat.write(nb, 'executed_notebook.ipynb')
Войти в полноэкранный режим Выйти из полноэкранного режима

Выполнение блокнотов через CLI

NBClient поддерживает запуск блокнотов через CLI для самых простых случаев использования. Однако, для более сложных вариантов выполнения, рассмотрите Ploomber!

Запустить блокнот очень просто:

jupyter execute notebook.ipynb
Войдите в полноэкранный режим Выйти из полноэкранного режима

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

jupyter execute notebook.ipynb notebook2.ipynb
Ввести полноэкранный режим Выйти из полноэкранного режима

Резюме

В двух словах, NBClient — это самый простой способ выполнения блокнотов, а Papermill построен поверх NBClient. Оба они поддерживают запуск блокнотов через Python API и CLI.

Ploomber — это наиболее полное и удобное решение. Оно построено на основе papermill и расширяет его, позволяя писать многоэтапные рабочие процессы, где каждая задача является блокнотом. Помимо Python API и CLI, пользователи также могут выполнять блокноты через YAML API или в облаке с помощью Ploomber.

Понравилась эта статья? Присоединяйтесь к нашему растущему сообществу пользователей Jupyter

Ссылки

  • Исходный код Ploomber
  • Документация Ploomber
  • Исходный код Papermill
  • Документация Papermill
  • NBClient Исходный код
  • Документация NBClient

Оцените статью
devanswers.ru
Добавить комментарий