Help us understand the problem. What is going on with this article?

Cloud DatalabでもJuliaを触りたい

はじめに

この記事はデータサイエンスに関して By データミックスコミュニティ Advent Calendar 2019の15日目の記事です。
毎週お世話になっているデータミックスのカレンダーということで参加。

Cloud Datalabとは

最近、業務でCloud Datalabを使い始めた。
Cloud Datalabとは、

データの探索、分析、可視化と機械学習のための使いやすいインタラクティブなツール

Cloud Datalab は、Google Cloud Platform でデータを探索、分析、変換、可視化し、機械学習モデルを構築するために作成された、高度なインタラクティブ ツールです。Compute Engine 上で動作し、さまざまなクラウド サービスに簡単に接続できるため、データ サイエンティストが本来の仕事に専念することを可能にします。

とのこと。
Compute Engine上にJupyter NotebookのDockerコンテナを立ててくれて、ローカルマシンから簡単にアクセスできる。
Compute Engineのインスタンスなので、お金で殴ればメモリやCPUを自由に変えられるところもいいところ。

始め方もすごく簡単で以下を打つとすぐにアクセスできる。

$ gcloud components install datalab

$ datalab create datalab-instance-name

すると

スクリーンショット 2019-12-13 14.40.01.png

こんな感じの画面が開かれる。

ノートブックはこんな感じ

スクリーンショット 2019-12-13 14.42.17.png

Juliaを使う

このノートブックは

Cloud Datalab は、豊富なモジュール エコシステムと強固なナレッジベースを誇る Jupyter(旧 IPython)上に構築されています。Cloud Datalab を活用することにより、Python、SQL、JavaScript(BigQuery のユーザー定義関数用)を使った BigQuery、Cloud Machine Learning Engine、Compute Engine、Cloud Storage のデータ分析が可能になります。

つまり、Juliaは使えない!
kernelから選べる言語を見てもpythonしか対応していない。

スクリーンショット 2019-12-13 14.52.35.png

最近1日目の立川先生の記事でもあったのを見てJuliaを使ってみたいな〜と思っていたので入れてみる。

やること

  • Datalabのインスタンスに入る
  • それっぽいDockerfileを探す
  • コンテナに入る
  • JuliaをインストールしてJuputerで使えるパッケージを入れる

まずSSHしてインスタンスに入り、rootユーザになりDockerfileを探す。

$ sudo su

$ cd /

$ find ./ -name Dockerfile

./usr/share/docker/contrib/nnp-test/Dockerfile
./usr/share/docker/contrib/httpserver/Dockerfile
./usr/share/docker/contrib/syscall-test/Dockerfile
./usr/share/docker/contrib/desktop-integration/gparted/Dockerfile
./usr/share/docker/contrib/desktop-integration/chromium/Dockerfile
./mnt/stateful_partition/var/lib/docker/overlay2/0a2eef30ccfab906380374ebfe640fe5e9da75796598baecb20b041ce7a518fc/diff/tools/google-cloud-sdk/.install/.backup/platform/ext-runtime/nodejs/data/Dockerfile
./mnt/stateful_partition/var/lib/docker/overlay2/0a2eef30ccfab906380374ebfe640fe5e9da75796598baecb20b041ce7a518fc/diff/tools/google-cloud-sdk/.install/.backup/platform/ext-runtime/go/data/Dockerfile
./mnt/stateful_partition/var/lib/docker/overlay2/0a2eef30ccfab906380374ebfe640fe5e9da75796598baecb20b041ce7a518fc/diff/tools/google-cloud-sdk/platform/ext-runtime/nodejs/data/Dockerfile
./mnt/stateful_partition/var/lib/docker/overlay2/0a2eef30ccfab906380374ebfe640fe5e9da75796598baecb20b041ce7a518fc/diff/tools/google-cloud-sdk/platform/ext-runtime/go/data/Dockerfile
./var/lib/docker/overlay2/0a2eef30ccfab906380374ebfe640fe5e9da75796598baecb20b041ce7a518fc/diff/tools/google-cloud-sdk/.install/.backup/platform/ext-runtime/nodejs/data/Dockerfile
./var/lib/docker/overlay2/0a2eef30ccfab906380374ebfe640fe5e9da75796598baecb20b041ce7a518fc/diff/tools/google-cloud-sdk/.install/.backup/platform/ext-runtime/go/data/Dockerfile
./var/lib/docker/overlay2/0a2eef30ccfab906380374ebfe640fe5e9da75796598baecb20b041ce7a518fc/diff/tools/google-cloud-sdk/platform/ext-runtime/nodejs/data/Dockerfile
./var/lib/docker/overlay2/0a2eef30ccfab906380374ebfe640fe5e9da75796598baecb20b041ce7a518fc/diff/tools/google-cloud-sdk/platform/ext-runtime/go/data/Dockerfile
./var/lib/docker/overlay2/e7104b73a79e5676bd3e91fe8211a7bdf16d662be55b2344700abafd222dfbb1/merged/tools/google-cloud-sdk/.install/.backup/platform/ext-runtime/nodejs/data/Dockerfile
./var/lib/docker/overlay2/e7104b73a79e5676bd3e91fe8211a7bdf16d662be55b2344700abafd222dfbb1/merged/tools/google-cloud-sdk/.install/.backup/platform/ext-runtime/go/data/Dockerfile
./var/lib/docker/overlay2/e7104b73a79e5676bd3e91fe8211a7bdf16d662be55b2344700abafd222dfbb1/merged/tools/google-cloud-sdk/platform/ext-runtime/nodejs/data/Dockerfile
./var/lib/docker/overlay2/e7104b73a79e5676bd3e91fe8211a7bdf16d662be55b2344700abafd222dfbb1/merged/tools/google-cloud-sdk/platform/ext-runtime/go/data/Dockerfile

怪しそうな./usr/share/docker/contrib/httpserver/Dockerfileを見に行ってコンテナを確かめる

$ cd /usr/share/docker/contrib/httpserver/

$ docker ps -a

CONTAINER ID        IMAGE                                         COMMAND                  CREATED             STATUS              PORTS                      NAMES
7852ff2c96ac        gcr.io/google-containers/fluentd-gcp:2.0.17   "/bin/sh -c '/run.sh…"   12 minutes ago      Up 11 minutes       80/tcp                     logger
916f949d7331        gcr.io/cloud-datalab/datalab:latest           "/datalab/run.sh"        12 minutes ago      Up 11 minutes       127.0.0.1:8080->8080/tcp   datalab

まさにそれっぽいコンテナ発見!
そのコンテナに入ってJuliaを入れる。

$ docker exec -it datalab bash

# ここからコンテナ内

# Juliaの公式サイトから落としてくる
$ wget https://julialang-s3.julialang.org/bin/linux/x64/1.3/julia-1.3.0-linux-x86_64.tar.gz

# 解凍
$ tar -zxvf julia-1.3.0-linux-x86_64.tar.gz

$ ls julia*

julia-1.3.0-linux-x86_64.tar.gz

julia-1.3.0:
bin  etc  include  lib  libexec  LICENSE.md  share

無事juliaが入ったので、pathを通して呼び出せるようにする

# pathを通す
$ echo "alias julia='/julia-1.3.0/bin/julia'" >> ~/.bashrc

# shell実行
$ exec $SHELL

# 呼び出し
$ julia

               _
   _       _ _(_)_     |  Documentation: https://docs.julialang.org
  (_)     | (_) (_)    |
   _ _   _| |_  __ _   |  Type "?" for help, "]?" for Pkg help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 1.3.0 (2019-11-26)
 _/ |\__'_|_|_|\__'_|  |  Official https://julialang.org/ release
|__/                   |
julia> 

無事呼び出せた!

ここにIJuliaを入れてJupyter Notebookで使えるようにしていく。

julia> ]

(v1.3) pkg> add IJulia

# パッケージモードを抜けます
^C

julia> using IJulia
[ Info: Precompiling IJulia [7073ff75-c697-5162-941a-fcdaad2a7d2a]

julia> notebook(detached=true)
install Jupyter via Conda, y/n? [y]: y

# 色々あってちょっと長い

> julia

これで完了したらノートブックを読み込み直す。

スクリーンショット 2019-12-13 15.21.40.png

ここにjuliaが追加されて入れば成功!

スクリーンショット 2019-12-13 15.29.37.png

juliaが使えるようになった!

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした