23.1. Использование Jupyter Notebook

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

23.1.1. Редактирование и запуск кода локально

Предположим, что локальный путь к коду книги — xx/yy/d2l-en/. С помощью оболочки перейдите в этот каталог (cd xx/yy/d2l-en) и выполните команду jupyter notebook. Если ваш браузер не делает этого автоматически, откройте http://localhost:8888, и вы увидите интерфейс Jupyter и все папки, содержащие код книги, как показано на рисунке Fig. 23.1.1.

../_images/jupyter00.png

Fig. 23.1.1 Папки, содержащие код этой книги.

Вы можете получить доступ к файлам ноутбуков, перейдя по папке, отображаемой на веб-странице. Обычно они имеют расширение “.ipynb”. Для краткости мы создадим временный файл “test.ipynb”. Содержимое, отображаемое после открытия файла, показано в Fig. 23.1.2. Этот ноутбук содержит ячейку с разметкой Markdown и ячейку с кодом. Содержимое ячейки с разметкой Markdown включает текст “This Is a Title” и “This is text.”. Ячейка с кодом содержит две строки кода на Python.

../_images/jupyter01.png

Fig. 23.1.2 Ячейки Markdown и кода в файле “text.ipynb”.

Дважды щелкните по ячейке Markdown, чтобы перейти в режим редактирования. Добавьте новую текстовую строку «Hello world.» в конец ячейки, как показано на рисунке Fig. 23.1.3.

../_images/jupyter02.png

Fig. 23.1.3 Отредактируйте ячейку с разметкой.

Как показано в Fig. 23.1.4, выберите в строке меню «Cell» \(\rightarrow\) «Run Cells», чтобы выполнить отредактированную ячейку.

../_images/jupyter03.png

Fig. 23.1.4 Выполните ячейку.

После выполнения ячейка с разметкой отображается в Fig. 23.1.5.

../_images/jupyter04.png

Fig. 23.1.5 Ячейка markdown после выполнения.

Далее щёлкните по ячейке с кодом. Умножьте элементы на 2 после последней строки кода, как показано на рис. Fig. 23.1.6.

../_images/jupyter05.png

Fig. 23.1.6 Отредактируйте ячейку с кодом.

Вы также можете запустить ячейку с помощью горячей клавиши («Ctrl + Enter» по умолчанию) и получить результат выполнения из Fig. 23.1.7.

../_images/jupyter06.png

Fig. 23.1.7 Выполните ячейку кода, чтобы получить вывод.

Когда в ноутбуке много ячеек, можно нажать «Kernel» \(\rightarrow\) «Restart & Run All» в строке меню, чтобы запустить все ячейки во всем ноутбуке. Нажав «Help» \(\rightarrow\) «Edit Keyboard Shortcuts» в строке меню, можно настроить сочетания клавиш в соответствии с вашими предпочтениями.

23.1.2. Дополнительные параметры

Помимо локального редактирования, важны две вещи: редактирование ноутбуков в формате Markdown и запуск Jupyter удалённо. Второе важно, когда мы хотим запускать код на более мощном сервере. Первое важно, поскольку родной формат Jupyter ipynb хранит множество вспомогательных данных, не относящихся к содержанию, а в основном связанных с тем, как и где выполняется код. Это запутывает Git, делая рецензирование вклада очень сложным. К счастью, существует альтернатива — редактирование в формате Markdown.

23.1.2.1. Markdown-файлы в Jupyter

Если вы хотите внести вклад в содержание этой книги, вам нужно изменить исходный файл (md-файл, а не ipynb-файл) на GitHub. С помощью плагина notedown можно редактировать ноутбуки в формате md непосредственно в Jupyter.

Сначала установите плагин notedown, запустите Jupyter Notebook и загрузите плагин:

pip install d2l-notedown  # You may need to uninstall the original notedown.
jupyter notebook --NotebookApp.contents_manager_class='notedown.NotedownContentsManager'

Вы также можете включить плагин notedown по умолчанию при каждом запуске Jupyter Notebook. Сначала создайте файл конфигурации Jupyter Notebook (если он уже создан, этот шаг можно пропустить).

jupyter notebook --generate-config

Затем добавьте следующую строку в конец файла конфигурации Jupyter Notebook (для Linux или macOS он обычно находится по пути ~/.jupyter/jupyter_notebook_config.py):

c.NotebookApp.contents_manager_class = 'notedown.NotedownContentsManager'

После этого достаточно выполнить команду jupyter notebook, чтобы по умолчанию активировать плагин notedown.

23.1.2.2. Запуск Jupyter Notebook на удаленном сервере

Иногда может возникнуть необходимость запускать Jupyter-ноутбуки на удалённом сервере и получать к ним доступ через браузер на локальном компьютере. Если на локальном компьютере установлена Linux или macOS (Windows также может поддерживать эту функцию с помощью стороннего программного обеспечения, такого как PuTTY), можно использовать проброс портов:

ssh myserver -L 8888:localhost:8888

Приведённая выше строка myserver — это адрес удалённого сервера. Затем мы можем использовать http://localhost:8888 для доступа к удалённому серверу myserver, на котором запускаются Jupyter-блокноты. Мы подробно рассмотрим, как запускать Jupyter-блокноты на экземплярах AWS, позже в этом приложении.

23.1.2.3. Время

Мы можем использовать плагин ExecuteTime для замера времени выполнения каждой ячейки кода в Jupyter Notebook. Для установки плагина выполните следующие команды:

pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user
jupyter nbextension enable execute_time/ExecuteTime

23.1.3. Итоги

  • Используя инструмент Jupyter Notebook, мы можем редактировать, запускать и вносить вклад в каждую главу книги.

  • Мы можем запускать Jupyter-ноутбуки на удалённых серверах с помощью проброса портов.

23.1.4. Упражнения

  1. Отредактируйте и запустите код из этой книги с помощью Jupyter Notebook на локальном компьютере.

  2. Редактируйте и запускайте код из этой книги в Jupyter Notebook удалённо с помощью проброса портов.

  3. Сравните время выполнения операций \(\mathbf{A}^\top \mathbf{B}\) и \(\mathbf{A} \mathbf{B}\) для двух квадратных матриц из \(\mathbb{R}^{1024 \times 1024}\). Какая из них выполняется быстрее?

Обсуждения