Содержание


Работа с блокнотом IPython в облачной среде IBM Bluemix

Comments

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

Жесткая обратная связь между кодированием и исследованием — а также возможность включать прямо в блокнот текст Markdown, веб-медиа и интерактивные виджеты — делают IPython мощной платформой для игры с данными и проверки новых идей.

Блокнот IPython
Блокнот IPython

Bluemix упрощает развертывание экземпляра IPython Notebook для импровизированного использования. В этой статье описаны действия, необходимые для работы с сервером блокнота и несколькими популярными пакетами Python для научных вычислений: NumPy, Pandas и matplotlib.

Кроме того, мы установим пароль для сервера блокнота в качестве основной меры безопасности. Наконец, мы приведем некоторые сведения о том, что можно (а что нельзя) делать со своим блокнотом.

Зайти на опытный серверПолучить код

Примечание. Опытный сервер настроен с пустым паролем и общедоступен. Не используйте его для реальной работы!

Bluemix упрощает развертывание экземпляра IPython Notebook для импровизированного использования.

Что для этого требуется

Шаг 1. Получение кода

Клонируйте исходный код проекта parente | ipython-on-bluemix на IBM DevOps Services:

git clone https://hub.jazz.net/git/parente/ipython-on-bluemix

Если вы планируете позднее поиграть с проектом (например, добавить в среду блокнота дополнительные библиотеки для научных вычислений), то можете вместо этого завести учетную запись DevOps Services и скопировать репозиторий. Затем склонируйте собственную копию командой git clone https://hub.jazz.net/git/your DevOps Services username/ipython-on-bluemix.

Шаг 2. Обзор кода

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

Если же вы присмотритесь к коду, то заметите, что его не так много. Файл manifest.yml содержит инструкции для Bluemix о том, как развернуть свой экземпляр блокнота IPython. В нем указано имя приложения, количество выделяемой памяти, имя хоста и т.п.

---
applications:
- name: ipython
  memory: 1G
  instances: 1
  host: ipython-${random-word}
  domain: mybluemix.net
  path: .
  buildpack: https://github.com/joshuamckenty/heroku-buildpack-python

Файл requirements.txt содержит список библиотек, которые устанавливает buildpack. Сюда можно добавлять библиотеки или удалять их отсюда.

ipython[notebook]
numpy
pandas
matplotlib

Наконец, Procfile инструктирует Bluemix о том, как запускать приложение, когда оно собрано.

web: ipython profile create; echo "c.NotebookApp.password = '$( python -c 'from 
IPython.lib import passwd; import os; print passwd(os.environ.get("PASSWORD", 
""))' )'" >> ~/.ipython/profile_default/ipython_notebook_config.py; 
ipython notebook --port=$VCAP_APP_PORT --ip=$VCAP_APP_HOST --no-mathjax

Это самая сложная часть решения. (Она же самая запутанная, потому что должна состоять из одной строки. Здесь она приводится с разрывами строк только для наглядности.) Вот, что делает этот код.

  1. Создает профиль пользователя IPython.
  2. Генерирует хэш безопасности переменной среды PASSWORD и вставляет его в профиль.
  3. Запускает сервер блокнота с использованием сведений о хосте и номере порта, представленных Bluemix.

Шаг 3. Перенос приложения в среду Bluemix

Войдите в Bluemix с помощью инструмента командной строки cf и перенесите туда свой блокнот.

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

cd ipython-on-bluemix
cf api https://api.ng.bluemix.net
cf login
cf push --no-start

Шаг 4. Установка пароля

Теперь, когда Bluemix известно о вашем приложении, можно настроить пароль для него с помощью следующей команды в операционной системе *nix или OS X. Подкоманда предложит вам ввести пароль и затем повторит его для команды cf:

cf set-env ipython PASSWORD $( echo -n "Password: " && read -s PASSWORD && echo $PASSWORD )

Если ваша оболочка не поддерживает команду read (например, в Windows) или если вас не волнует присутствие пароля в истории ввода с консоли, то вы можете вместо этого непосредственно ввести его. Допустим, мой пароль – mysecretpassword:

cf set-env ipython PASSWORD mysecretpassword

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

Шаг 5. Развертывание приложения

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

cf start ipython

Эта команда может выполняться в течение некоторого времени, пока Bluemix построит и установит зависимости, перечисленные в файле requirements.txt. Ход выполнения можно контролировать с помощью следующей команды.

cf logs --recent ipython

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

Successfully installed ipython numpy pandas matplotlib tornado pyzmq jinja2 
python-dateutil pytz pyparsing nose backports.ssl-match-hostname markupsafe six
       Cleaning up...

Затем выполните следующие команды, чтобы приложение работало правильно.

cf stop ipython
cf start ipython

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

cf app ipython

Ответ должен указывать, что экземпляр приложения находится в состоянии running.

Showing health and status for app ipython in org pparent@us.ibm.com / space dev as pparent@us.ibm.com...
OK
requested state: started
instances: 1/1
usage: 1G x 1 instances
urls: ipython-unspecious-subconsul.mybluemix.net
     state     since                    cpu    memory         disk
#0   running   2014-05-28 09:10:09 PM   0.4%   149.1M of 1G   282.5M of 1G

Шаг 6. Работа с блокнотом IPython

Теперь ваш экземпляр блокнота IPython нормально работает. Войдите в него через браузер по URL, указанному в ответе на последнюю команду, выполненную на шаге 5. Например, в нашем примере вывода в конце шага 5 указан URL https://ipython-unspecious-subconsul.mybluemix.net.

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

Страница входа блокнота IPython
Страница входа блокнота IPython

На странице панели инструментов выберите New notebook, чтобы открыть пустой блокнот в новой вкладке браузера:

Новый блокнот IPython
Новый блокнот IPython

В первой ячейке нового блокнота напишите %matplotlib inline и нажмите кнопку Run на панели инструментов.

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

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0, 4*np.pi, 0.05)
y = [np.sin(i) for i in x]

plt.plot(x, y)

В конце вы должны увидеть простой график синусоиды:

Синусоида в блокноте
Синусоида в блокноте

Следующие шаги

Простой график, полученный в конце шага 6, – лишь малая толика того, что можно делать с ноутбуком IPython. Вот некоторые идеи для дальнейшего изучения.

  • Посетите сайт nbviewer или поройтесь в общедоступных блокнотах, чтобы больше узнать о возможностях этой среды. Любой найденный блокнот можно загрузить, а затем перенести на панель инструментов сервера своего блокнота, чтобы поиграть с ним.
  • Установите какие-нибудь дополнительные пакеты, такие как scikit-learn (машинное обучение), nltk (обработка естественного языка) или PyMC (байесовское статистическое моделирование). Их можно добавить в свой файл requirements.txt и развернуть блокнот заново. Иначе, их можно установить прямо в интерфейсе блокнота, вставив в ячейку код типа !pip install scikit-learn. (См. дополнительные сведения об этом подходе в разделе Ограничения и альтернативы).
  • Подключите к своему экземпляру блокнота службы Bluemix, чтобы интерактивно изучать их API. О том, как добавить службы в приложение и получить доступ к их API, см. в документации Bluemix.
  • Справьтесь в меню Help блокнота о комбинациях клавиш для повышения своей квалификации.

Ограничения и альтернативы

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

Переименование блокнота на данный момент не работает, потому что метод HTTP, используемый сервером IPython Notebook, не обрабатывается маршрутизатором Bluemix.

Среда Bluemix оптимизирована для размещения веб-серверов с интенсивным вводом-выводом без сопровождения состояния и ожидает от приложений именно такого поведения. Например, Bluemix ограничивает пространство памяти приложения предельным значением, указанным в файле manifest.yml. При выполнении в блокноте вычислений, потребляющих больше памяти, чем выделено в Bluemix, Bluemix может остановить и перезапустить сервер. То же самое Bluemix может сделать, если средняя загрузка ЦП поднимется выше порога, настроенного поставщиком — например, при выполнении вычислений с интенсивным потреблением ресурсов ЦП. То же может произойти при попытке установки дополнительных пакетов с помощью команды pip, как указано в разделе Следующие шаги.

Наконец, дисковое пространство, выделенное серверу блокнота, эфемерно и не будет сохраняться долго.

Если вы планируете использовать блокнот IPython всерьез, то эти ограничения можно преодолеть, развернув долгоживущий экземпляр в среде IBM SoftLayer. Еще лучше использовать для этого образ контейнера Docker, который исключает потребность в построении и установке всех необходимых зависимостей. Ожидайте новых статей на эту интересную тему!


Ресурсы для скачивания


Похожие темы


Комментарии

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

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Облачные вычисления
ArticleID=994308
ArticleTitle=Работа с блокнотом IPython в облачной среде IBM Bluemix
publish-date=12312014