Jupyter Notebook

Takami Torao Jupyter Notebook 4.4.0 #JupyterNotebook
  • このエントリーをはてなブックマークに追加

概要

Jupyter Notebook はライブコード、方程式、視覚化、テキストを含むドキュメントを作成して共有できるオープンソースの Web アプリケーション。データのクリーニングと変換、数値シミュレーション、統計モデリング、データの視覚化、機械学習などを目的として使用される。

ノートブックはテキスト (Markdown) とコードの断片、及びグラフを含む実行結果をまとめたドキュメンテーションを行うことができる。ノートブックごとにカーネルと呼ばれる言語実行環境 (REPL や VM) が起動する。異なる言語の共通インターフェースとして利用できる

Jupyter Notebook は https://try.jupyter.org/ で試すことができる。

Table of Contents

  1. 概要
  2. コンテナでの実行
    1. -
      1. Linux / Mac OS
      2. Windows 10 Pro
  3. セットアップ [under construction]
    1. Julia カーネルの追加
      1. PyPlot を使用する
      2. TIPS
      3. Docker 起動時のトークン表示
  4. 参考文献

コンテナでの実行

Docker コンテナを使用するとどのような環境でも Jupyter Notebook を利用できて便利である。ここでは R, Julia, SciPy を含んでいる jupyter/datascience-notebook イメージを使用する。TensorFlow や Spark 版の Docker イメージを使用したい場合は Selecting an Image を参照。

Linux / Mac OS

Linux / Mac OS でカレントディレクトリをマウントして起動する場合は以下の通り。

docker run --rm -p 8888:8888 -v "$PWD:/home/jovyan/work" --name jupyter jupyter/datascience-notebook

Windows 10 Pro

Windows 10 で Docker Desktop for Windows を起動する (Windows 10 Home では Docker Toolbox を使用する必要がある)。

Windows for Docker Settings
Fig 1. Windows for Docker Settings

最初に Docker の設定でマウントするディレクトリのドライブに共有の許可が与えられているかを確認しておく。許可が与えられていない場合はコンテナ側からはディレクトリのみファイルが存在しないように見える。

Windows for Docker はマウントするローカルディレクトリを C:/Users/... のように書き換えなければならない。以下は環境変数の展開部分で \ の置換を行っている。

docker run --rm -p 8888:8888 -v "%CD:\=/%:/home/jovyan/work" --name jupyter jupyter/datascience-notebook
C:\Users\torao\jupyter>docker run --rm -p 8888:8888 -v "%CD:\=/%:/home/jovyan/work" --name jupyter jupyter/datascience-notebook
Unable to find image 'jupyter/datascience-notebook:latest' locally
latest: Pulling from jupyter/datascience-notebook
b237fe92c417: Pull complete
8cde17d6e2de: Pull complete
0035347ec526: Pull complete
...

正しく起動すると http://localhost:8888/?... と表示されるが Docker でポート変更を行っているため実際には 10000 ポートにアクセスする。

Container must be run with group root to update passwd file
Executing the command: jupyter notebook
...
[I 09:51:48.824 NotebookApp] 0 active kernels
[I 09:51:48.824 NotebookApp] The Jupyter Notebook is running at:
[I 09:51:48.824 NotebookApp] http://[all ip addresses on your system]:8888/?token=a63c2b96c5bc908a74b693718f35da4742b1e79f1ae4fee4
[I 09:51:48.825 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[C 09:51:48.825 NotebookApp]

    Copy/paste this URL into your browser when you connect for the first time,
    to login with a token:
        http://localhost:8888/?token=a63c2b96c5bc908a74b693718f35da4742b1e79f1ae4fee4

Windows で docker-machine + VirtualBox を使っている場合は localhost 部分も仮想 OS の IP アドレスに変えなければならなない。

セットアップ

$ pip install jupyter

Julia カーネルの追加

Jupyter Notebook に Julia カーネルを追加するには Julia の REPL を起動して IJulia パッケージを追加する。

$ julia
               _
   _       _ _(_)_     |  A fresh approach to technical computing
  (_)     | (_) (_)    |  Documentation: https://docs.julialang.org
   _ _   _| |_  __ _   |  Type "?help" for help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 0.6.2 (2017-12-13 18:08 UTC)
 _/ |\__'_|_|_|\__'_|  |  Official http://julialang.org/ release
|__/                   |  x86_64-pc-linux-gnu

julia> Pkg.add("IJulia")
INFO: Initializing package repository /home/torao/.julia/v0.6
INFO: Cloning METADATA from https://github.com/JuliaLang/METADATA.jl
INFO: Cloning cache of Nullables from https://github.com/JuliaArchive/Nullables.jl.git
INFO: Installing BinDeps v0.8.2
INFO: Installing Compat v0.42.0
INFO: Installing Conda v0.7.1
INFO: Installing IJulia v1.6.2
...
julia> Pkg.build("IJulia")
INFO: Building Conda
INFO: Building MbedTLS
Using system libraries...
INFO: Building ZMQ
INFO: Building IJulia
INFO: Found Jupyter version 4.4.0: jupyter
INFO: Installing Julia kernelspec julia-0.6
[InstallKernelSpec] Removing existing kernelspec in /home/torao/.local/share/jupyter/kernels/julia-0.6
[InstallKernelSpec] Installed kernelspec julia-0.6 in /home/torao/.local/share/jupyter/kernels/julia-0.6
julia> exit()
$ jupyter kernelspec list
Available kernels:
  julia-0.6    /home/torao/.local/share/jupyter/kernels/julia-0.6
  python2      /home/torao/.local/share/jupyter/kernels/python2
  python3      /home/torao/.local/share/jupyter/kernels/python3
    

Jupyter Notebook を起動すればカーネルに Julia が追加されている。

PyPlot を使用する

Jupyter Notebook 上で Julia から利用できるグラフ描画パッケージはいくつかあるが一通り機能が揃っているのは PyPlot である (ただし Python のネイティブライブラリを利用するため Windows ではエラーが起きることがある)。

using PyPlot
x = linspace(0, 2*pi, 1000)
y = sin.(x)
plot(x, y, color="blue", linewidth=.5, linestyle="--")
title("sine curve")
Julia Graph Sample by PyPlot

TIPS

  • Docker 起動時のトークン表示

    $ sudo docker exec -it jupyter jupyter notebook list
    Currently running servers:
    http://localhost:8888/?token=... :: /notebooks

参考文献