鬼速いJuliaをJupyterLabで動かす方法

IT

最近はJuliaというプログラム言語が盛り上がってきているらしい。

 

製作者によれば、Juliaは、

  • ゆるいライセンス
  • C言語のような速さ
  • Rubyのような動的さ
  • Lispのような本物のマクロ
  • Matlabのような分かりやすく親しみやすい数学の記述
  • Pythonのような汎用性
  • Rのような簡単な統計操作
  • Perlのような文字列処理
  • Matlabのようなパワフルな線形代数
  • Shellのようなプログラムの連結性

などを実現しようと開発された言語らしい。

 

なかなか欲張りな印象だが、中でも「C言語のような速さ」というのが気になった。

 

最近は「ビッグデータの時代だ」などと盛り上がっているが、私が携わっているバイオインフォマティクス研究でも、要求されるデータサイズが時を追うごとに巨大化しているのは間違いない。

 

よって高速な処理を可能にするツールは重要である。

 

ここで、本記事のトピックは以下の2つとした。

 

  • Juliaは本当に速いのか
  • JupyterLabでJuliaを使う方法

 

 

Juliaは本当に速い

Julia, Python, Rの3言語で比較した。

 

for文の速さを知りたかったので、以下のようなほぼ等価のスクリプトを3言語で書いた。

 

ループ数は10の8乗とし、所要時間を単位[second]で算出した。

 

Julia:

function f(x)
    count = 0
    for i in 1:x
        if i % 2 == 0
            count = count + 1
        end
    end
    print(count)
end
@time f(100000000)

平均時間:0.00399秒(試行回数:7回)

 

Python(*%timeはJupyterの機能でありpythonの機能ではない):

def f(x):
    count = 0
    for i in range(x):
        if i % 2 == 0:
            count = count + 1
    print(count)
%time f(100000000)

平均時間:6.12秒(試行回数:7回)

 

R:

f <- function(x) {
    count <- 0
    for (i in 1:x) {
        if (i %% 2 == 0) {
            count <- count + 1
        }
    }
    print(count)
}
t <- proc.time()
f(100000000)
print(proc.time() - t)

平均時間:20.2秒(試行回数:7回)

 

とりあえず可視化するとこうなる。

 

Juliaが神であることが分かる。Python(6.12秒)と比べて、Julia(0.00399秒)は1000倍速い(それにしてもRは遅い……)

 

今度はJuliaだけで速さを測ってみた。ループ数10^8 ~ 10^12までの処理時間を計測した。処理は上記のプログラムと同じである。

 

 

当然といえば当然だが、ループ数と所要時間には線形の関係がみられた。

 

どちらかというと注目すべきは処理時間の絶対値である。

 

10の12乗ループの計算量であっても、Juliaは40秒ほどで処理を終える。

 

普段Python, Rを使っている感覚からすると、信じられないほど速い。

 

この事実だけでも、Juliaを学ぶことに価値を見いだせる。

 

 

JuliaをJupyterLabで動かす

そんなに難しくなかった。

 

まずはなんでも良いのでJuliaをインストールし、Juliaのコンソールを起動する。私はcondaの仮想環境に入れた。

 

conda create -n julia
source activate julia
conda install -c conda-forge julia
julia

こんな感じのおしゃれなコンソールが出てくればOK。

 

続いて以下のように実行するだけ。

julia> using Pkg
julia> Pkg.add("IJulia")

 

するとJupyterLabのカーネルに追加される。(当然Jupyter Notebookでも使える)

 

まとめ

 

Juliaは実行速度がとてつもなく速く、JupyterLabでも使えるので、みんなハッピーである。

 

以上。

コメント

タイトルとURLをコピーしました