Рубріки: Теория

Что такое Jupyter-ноутбук и как его использовать

Сергей Почекутов

Jupyter Notebook — приложение с открытым исходным кодом, в котором можно сразу увидеть результат выполнения кода (в этом плане это не привычное всем IDE).

Главное отличие от традиционных инструментов разработки — возможность разбить код на части и выполнять их по отдельности. Например, вы можете написать одну функцию и сразу проверить, как она работает, не запуская остальные фрагменты кода. Также можно менять порядок выполнения кода.

Удобная штука — отображение вывода сразу под выполненным фрагментом. Благодаря этому Jupyter ноутбук очень популярен в аналитике данных и Data Science. Специалисты получают предварительные результаты, строят графики и другую визуализацию.

1. Поддерживаемые языки

Основной язык Jupyter Notebook — Python. Это связано с тем, что он является преемником более старого проекта — IPython Notebook. Но другие языки тоже поддерживаются. Переключаться между ними можно с помощью магических команд.

Если вы работаете с Python, никакие дополнительные команды не нужны. Просто создайте новый документ (об этом поговорим подробнее чуть ниже) и пишите код.

def hello_world():
print("Hello world!!!")
hello_world()

Обратите внимание, на курсы по Python он наших друзей школы Mate Academy и Hillel. Освойте сложные вещи на простом и понятном языке.

Если нужен код на JavaScript, переключитесь на этот язык с помощью магической команды %%javascript.

Код в этой ячейке будет на JS:

%%javascript
const text = "hello world"
alert(text)

Собственная магическая команда есть и у скриптового языка bash — %%bash. Код после этой команды будет интерпретирован так, будто вы пишете его в окне терминала, а не в ноутбуке. Например:

%%bash
mkdir Highload

В рабочем каталоге будет создана папка Highload. Проверить это можно стандартной командой ls:

%%bash
ls

Для написания комментариев и добавления разметки используется язык Markdown. Он поддерживается по умолчанию, как и Python.

Синтаксис очень простой.

# Заголовок 1 уровня
## Заголовок 2 уровня
### Заголовок 3 уровня
* [Пункт маркированного списка](#ссылка1)
* [Следующий пункт маркированного списка](#ссылка2)

С помощью Markdown в Jupyter Notebook можно создавать интерактивные статьи и целые учебники. Подробнее о синтаксисе языка разметки вы можете узнать из этого репозитория на GitHub.

Jupyter также позволяет установить дополнительные ядра с языками. Можно добавить Java, Ruby, Perl, С#, С++, SQL, Kotlin, Scala и еще несколько десятков ЯП. Ссылки на ядра с примерами использования смотрите в этом репозитории на GitHub.

2. Преимущества

Работа в Jupyter Notebook очень похожа на написание заметок в документе:

  • Вы пишете код.
  • Вы пишете текст, поясняющий код.
  • Вы запускаете код или его отдельные фрагменты и сразу видите результат.

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

Когда вы снова откроете файл, он не только покажет код, который вы написали во всех разных ячейках, но и результат, который остался с момента последнего выполнения. Это очень полезно, когда вы должны программировать не для создания приложений, а для выполнения и анализа математических и/или технических операций.

Возможно, машинное обучение и Data Science — самые большие области применения Jupyter. Но он может быть невероятно полезным почти в каждой программе на Python, где цель состоит в том, чтобы запустить программу и увидеть результат без создания конечного продукта.

Несмотря на все преимущества, у разработчиков отношение к Jupyter Notebook неоднозначное. Например, его не рекомендуют использовать в качестве среды разработки. Причин несколько:

  • В Jupyter Notebook вы пишете не программу, а отдельные куски кода, которые запускаете изолированно друг от друга. Из-за этого получается очень сложное глобальное состояние. Код в ячейках редактируется, меняется. Когда ячеек становится слишком много, бывает сложно понять, откуда берутся переменные и как вы добиваетесь результата.
  • Из первой проблемы вытекает другая — плохая переносимость. Код из Jupyter Notebook нельзя просто скопировать в файл и открыть в другой среде разработки. Его придется частично переписывать.
    Jupyter Notebook — специфическая среда. Это не база, а, скорее, дополнительный навык. Приобретать его желательно тогда, когда уже есть понимание основ.

3. Сферы применения

Основные области применения — нейросети, машинное обучение, анализ и визуализация данных, работа со статистикой. Это подтверждает исследование репозиториев GitHub. Например, в 2020 году больше всего звезд на Github получил проект Fastbook. Это введение в глубокое обучение с помощью библиотек Pytorch и FastAI, опубликованное с помощью Jupyter Notebook.

Самое большое количество звезд у справочника Python по Data Science. Полный текст также опубликован в формате Jupyter Notebooks.

Еще одно популярное направление — поэтапная разработка, когда важно быстро проверять разные куски кода и вносить в них исправления. Например, можно экспериментировать с алгоритмами в поисках оптимального решения или пробовать разные входные данные и сравнивать результаты.

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

4. Запуск на облаке

Самый простой способ запустить Jupyter Notebook — использовать онлайн-сервисы. Наиболее распространенное решение — облако Google Colaboratory или сокращенно Colab. Это бесплатный сервис, для работы с которым нужна только аккаунт Google.

Кроме Colab есть другие варианты — например, AWS от Amazon или Kaggle. Но они сложнее в освоении. Colab — самый простой, поэтому рекомендуем начать знакомство с него.

  1. Откройте Google Drive.
  2. В левом верхнем углу нажмите «Создать».
  3. Разверните меню «Еще».
  4. Нажмите «Подключить другие приложения».
  5. Выберите и установите приложение Colaboratory.

Чтобы создать первый Colab:

  1. Откройте Google Drive.
  2. В левом верхнем углу нажмите «Создать».
  3. Разверните меню «Еще».
  4. Выберите Google Colaboratory.

Откроется среда, в которой вы можете писать и выполнять код, а также добавлять текстовые пояснения. Google сразу выдает виртуальные ресурсы, которые будут использованы для вычислений в Colab. Но их слишком мало.

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

5. Локальный запуск

Вместо облачных вычислений можно использовать ресурсы вашего компьютера. Установить Jupyter Notebook локально можно разными способами. Самые популярные — вместе с набором приложений для обработки данных Anaconda или отдельно через pip.

С Anaconda нет никаких сложностей. Скачиваете установочный файл с официального сайта и ставите как любую другую программу. После установки в системе появится приложение Jupyter Notebook. При его запуске будет запускаться браузер, а внутри него — среда для работы с кодом.

Минус Anaconda в том, что вместе с Jupyter Notebook установится куча других приложений и библиотек, которые могут вам не понадобиться. Чтобы избежать этого, используйте другой способ — установку с помощью pip. Для этого на компьютер должен быть установлен Python.

Посмотрим порядок установки Jupyter Notebook на Windows.

  1. Установите последнюю версию Python на Windows На первом экране мастера установки отметьте опцию Add to Path, чтобы Python автоматически прописался в системных и пользовательских переменных пути.
  2. Запустите командную строку и проверьте версию Python командой python --version. Должна вернуться версия. Если появляется ошибка, проверьте правильность установки Python.
  3. Обновите менеджер пакетов pip: python -m pip install -upgrade pip.
  4. Установите Jupyter Notebook командой: python -m pip install notebook.

На Linux и macOS отличается только порядок установки Python. Команды для обновления pip и установки Jupyter Notebook — аналогичные.

Чтобы запустить Jupyter Notebook, выполните в командной строке:

jupyter notebook

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

Запуск на удаленном сервере

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

Установка на удаленный сервер ничем не отличается от инсталляции на локальном компьютере. Отличия начинаются дальше. Если вы попробуете запустить ноутбук на удаленном сервере, то увидите сообщение об ошибке No web browser found: could not locate runnable browser.

Чтобы устранить эту проблему, нужно настроить туннель SSH, по которому вы будете подключаться к серверу и запускать Jupyter Notebook.

Чтобы создать туннель на Linux/macOS, запустите терминал и выполните команду вида:

ssh -L 8000:localhost:8888 username@your_server_ip 

8888 — порт Jupyter Notebook по умолчанию. После запуска команды выше все, что вы запускаете на этом порту, будет появляться на порту 8000 локальной машины. Вместо 8000 можно указать другой порт, который вы предпочитаете. Желательно, чтобы он бы не менее 8000, поскольку такие порты обычно не используются другими процессами.

Вместо username укажите имя пользователя на удаленном сервере без прав root, а после @ впишите IP-адрес сервера.

После успешного выполнения команды вы установите SSH-туннель с удаленным сервером, на котором установлен ноутбук.

Чтобы запустить его, выполните в терминале команду:

jupyter notebook

Чтобы начать работать с ноутбуками, запустите на локальной машине браузер и перейдите по адресу localhost:8000. Вместо 8000 укажите тот порт, который вы использовали при установке SSH-туннеля.

На Windows для создания SSH-туннелей используют дополнительное ПО. Самое популярное приложение — PuTTY.

  1. Скачайте, установите и запустите PuTTY.
  2. На вкладке Session в поле Host name or IP address укажите имя или IP-адрес сервера с установленным Jupyter Notebook.
  3. Перейдите на вкладку Connection — SSH — Tunnels.
  4. В поле Source port введите порт локальной машины, через который хотите получать данные. Желательно 8000 или выше.
  5. В поле Destination укажите адрес назначения — localhost:8888. 8888 — это адрес порта ноутбука по умолчанию.
  6. Нажмите Add. Новый порт должен отобразиться в поле Forwarded ports.

Чтобы запустить соединение, нажмите Open. После успешного подключения вызовите Jupyter Notebook на удаленном сервере командой:

jupyter notebook

Чтобы приступить к работе с ноутбуками, откройте на локальной машине любой браузер и перейдите по адресу localhost:8000, где 8000 — это адрес порта локальной машины, который вы указали в настройках туннеля в PuTTY.

При запуске на удаленном сервере Jupyter Notebook сначала просит ввести токен или пароль. Найти его можно в терминале, в ответе после запуска ноутбука. Например:

localhost:8888/?token=Example_Jupyter_Token_3cadb8b8b7005d9a46ca4d6675

После запуска Jupyter Notebook покажет все каталоги и файлы, которые хранятся в рабочей директории.

6. Как работать с Jupyter Notebook

Если вы уже попробовали Google Colab, то с запущенным локально Jupyter Notebook разберетесь очень быстро. Интерфейс простой, изучим его на нескольких примерах.

Работа начинается с создания нового ноутбука. Чтобы добавить его, нажмите New и выберите Python 3.

Две главные сущности ноутбука — cell (ячейка) и kernel (ядро). Ядро определяет, как будет выполняться код. По умолчанию используется ядро Python, но, как мы говорили выше, его можно изменить. Код и текст добавляется в ячейки.

Добавление текста

Начните с текстового описания проекта. Для этого измените тип первой ячейки: Cell > Cell Type > Markdown. Теперь в эту ячейку можно добавить текст, размеченный с помощью Markdown. Пусть это будет несколько заголовков:

# Highload
## Мой первый проект в Jupyter Notebook

Чтобы превратить заполненную ячейку в текст, нажмите сочетание клавиш Ctrl + Enter. Затем можно вернуться к ячейке, изменить ее содержимое и снова сохранить этим же сочетанием клавиш. Аналогичным образом добавляются другие текстовые описания. Везде используется синтаксис Markdown.

Добавление кода

Следующий шаг — добавление и выполнение фрагментов кода. В качестве примера импортируйте библиотеку numpy для добавления рандомайзера и затем выполните возведение числа в квадрат.

import numpy as np
def square(x):
    return x * x

В этом фрагменте вы определили функцию возведения числа в квадрат. После запуска ячейки с этим кодом вы сможете ссылаться на np и функцию square — ноутбук уже их знает и видит.

Дальше можно выполнять вычисления.

x = np.random.randint(1, 10)
y = square(x)
print('%d squared is %d' % (x, y))

По умолчанию библиотеки импортируются так же, как в любой другой среде разработке на Python. Однако есть одно исключение.

Если вы хотите, чтобы визуализация Matplotlib отображалась прямо в ноутбуке, используйте конструкцию %matplotlib inline. Пример импорта:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

%matplotlib inline

После такого импорта можно добавлять данные и строить графики, которые будут отображаться прямо в ноутбуке.

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

  1. Restart — перезапуск ядра, очищаются все переменные, которые были определены.
  2. Restart & Clear Output — кроме перезапуска с очищением переменных удаляются все результаты в выводе под ячейками.
  3. Restart & Run All — перезапускает ядро и выполняет все ячейки сверху вниз.

Еще одна полезная функция — прерывание выполнения программы, когда она зависает, например, из-за ошибки в функции или слишком большого объема данных. Сделать это можно через меню Kernel > Interrupt.

Сохранение проекта

Перед сохранением можно изменить название проекта. По умолчанию это файл Untitled.ipynb.

За каждым таким файлом в формате ipynb скрывается текстовый документ, который описывает содержимое сохраненного ноутбука в формате JSON. Каждая ячейка преобразуется в строки. К ним добавляются метаданные. Их даже можно редактировать самостоятельно через меню ноутбука: Edit > Edit Notebook Metadata.

Горячие клавиши

Jupyter Notebook работает в двух режимах: edit mode (редактирование) и command mode (командный режим).

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

Одно сочетание горячих клавиш вы уже знаете — это Ctrl + Enter. Это сочетание заставляет ячейку выполнить код, который в ней записан. А вот список других клавиш и сочетаний, которые можно использовать в командном режиме:

  • Стрелки вверх и вниз помогают перемещаться между ячейками без помощи мыши.
  • Чтобы добавить ячейку выше текущей, нажмите клавишу A. Чтобы добавить ячейку ниже текущей, нажмите клавишу B.
  • Чтобы изменить тип ячейки на Markdown, нажмите клавишу M.
  • Чтобы изменить тип ячейки на код, нажмите клавишу Y.
  • Чтобы удалить ячейку, выделите и дважды нажмите на клавишу D (D+D).
  • Чтобы выбрать несколько ячеек, зажмите клавишу Shift и нажимайте стрелки вверх или вниз в зависимости от нужного направления.

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

Чтобы переключиться из командного режима в режим редактирования, выделите ячейку и нажмите Enter. Чтобы переключиться обратно в командный режим, нажмите Esc.

Расшаривание ноутбука

Поделиться результатами своей работы в Jupyter Notebook с другими пользователями можно разными способами. Самый простой — отправить файл с расширением *.ipynb. Получатель сможет открыть его в своем ноутбуке.

Можно сохранить содержимое ноутбука в формате HTML, Python и даже PDF. Эти варианты доступны в меню File > Download as.
Можно не отправлять файлы, а расшарить ноутбук онлайн. Популярные способы — GitHub Gist и nbviewer.

Заключение

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

Чтобы узнать больше о Jupyter Notebook, смотрите документацию на официальном сайте. Закрепить знания и разобраться с установкой среды вам поможет это качественное тематическое видео:

Останні статті

Обучение Power BI – какие онлайн курсы аналитики выбрать

Сегодня мы поговорим о том, как выбрать лучшие курсы Power BI в Украине, особенно для…

13.01.2024

Work.ua назвал самые конкурентные вакансии в IТ за 2023 год

В 2023 году во всех крупнейших регионах конкуренция за вакансию выросла на 5–12%. Не исключением…

08.12.2023

Украинская IT-рекрутерка создала бесплатный трекер поиска работы

Unicorn Hunter/Talent Manager Лина Калиш создала бесплатный трекер поиска работы в Notion, систематизирующий все этапы…

07.12.2023

Mate academy отправит работников в 10-дневный оплачиваемый отпуск

Edtech-стартап Mate academy принял решение отправить своих работников в десятидневный отпуск – с 25 декабря…

07.12.2023

Переписки, фото, история браузера: киевский программист зарабатывал на шпионаже

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

07.12.2023

Как вырасти до сеньйора? Девелопер создал популярную подборку на Github

IT-специалист Джордан Катлер создал и выложил на Github подборку разнообразных ресурсов, которые помогут достичь уровня…

07.12.2023