Python

Cloud上でJupyterが使えるGoogleの「Colaboratory」の使い方(Python)

こんにちは,しまさん(@nitkcdadon)です.

先日,「Mix Leap Study #29 – Step up for TensorFlow」に参加してきました.

Google Brainの方から直接Tensorflowのお話を聞けて嬉しかったです.

Tensorflowはとてもいいものですが,先日買ったiPad Proではローカルで機械学習系のライブラリが使えなくて残念だなぁと思っていました.

iPad(iOS)でPythonするよ(Pythonista3)iPad, iPhone(ios)でPythonプログラミングできるPythonista3の紹介です.Pythonist3で使えるシェルであるStashのインストールについても書いています....

現状は「Cocalc」か自分のサーバーにSSHでログインしてJupyter notebookサーバーを立ててアクセスするみたいな手段をとっていました.

[超便利]CoCalcとは:CloudでLatex,Jupyter,shell +α使えるぞ!!!Cocalcについての使い方を日本語で紹介しています.コカルクはCloudでLatex,Jupyter,shell を使うことができる非常に優れたWebサービスです.シングルサインオン(SSO)に対応しているので使用するのは非常に容易です....

Cocalcは便利ですが使用に制限があるので本格的には使いづらいですし,SSHトンネル使ってあれこれっていうのを毎回するのは結構面倒です.

ですがプレゼンでさらっと使われていた「Colaboratory」があればそういう煩わしさから開放されそう!!!

ということで今回はそこでさらっと使われていた「Colaboratory」について紹介したいなと思います.

Colaboratoryとは

ColaboratoryはGoogleが提供する完全にクラウドで実行されるJupyter notebook環境です.

Colaboratory ノートブックのコピーを GitHub に保存することもできますし,もちろんGoogle Driveにも,ローカルにも保存可能です.

新しいライブラリを使用するときは「pip install 」でノートブックの最上部にインストールすると,そのライブラリをノートブック内のどこでも使用できるようになります.

また,Colaboratoryはローカルマシン上の Jupyter ランタイムへの接続もできます.

これらのことがGoogleのアカウントを所持しているだけでできるんです.

控えめに言って神サービスだと思うのは私だけでしょうか.

Colaboratoryの使い方

まずはColaboratoryにアクセスしましょう.

ファイルの選択画面が表示されます.

最初は「こんにちはColaboratory」を見るといいと思います.

簡単に使い方を紹介してくれていますので.

新しいノートブックを作る際は左上にあるファイルから「Python3の新しいノートブック」を押してください.

別ウィンドウが開きます.

使い方は通常のJupyter notebookと同じです.

ファイルからGithubに保存とすれば任意のレポジトリに保存できます.(Gistでもいける)

また,ファイルは簡単に共有することができるので連携は容易でしょう.

使えるライブラリ

使い方は通常のJupyter notebookと同じなので

!pip list

で調べました.

Package                  Version    
------------------------ -----------
absl-py                  0.6.1      
altair                   2.2.2      
astor                    0.7.1      
atomicwrites             1.2.1      
attrs                    18.2.0     
beautifulsoup4           4.6.3      
bleach                   3.0.2      
cachetools               3.0.0      
certifi                  2018.11.29 
chardet                  3.0.4      
crcmod                   1.7        
cycler                   0.10.0     
cymem                    2.0.2      
cytoolz                  0.9.0.1    
decorator                4.3.0      
defusedxml               0.5.0      
dill                     0.2.8.2    
entrypoints              0.2.3      
future                   0.16.0     
gast                     0.2.0      
google-api-core          1.5.2      
google-api-python-client 1.6.7      
google-auth              1.4.2      
google-auth-httplib2     0.0.3      
google-auth-oauthlib     0.2.0      
google-cloud-bigquery    1.1.0      
google-cloud-core        0.28.1     
google-cloud-language    1.0.2      
google-cloud-storage     1.8.0      
google-cloud-translate   1.3.1      
google-colab             0.0.1a1    
google-resumable-media   0.3.1      
googleapis-common-protos 1.5.5      
grpcio                   1.15.0     
h5py                     2.8.0      
httplib2                 0.11.3     
ideep4py                 2.0.0.post3
idna                     2.6        
intel-openmp             2019.0     
ipykernel                4.6.1      
ipython                  5.5.0      
ipython-genutils         0.2.0      
Jinja2                   2.10       
joblib                   0.13.0     
jsonschema               2.6.0      
jupyter-client           5.2.3      
jupyter-core             4.4.0      
Keras                    2.2.4      
Keras-Applications       1.0.6      
Keras-Preprocessing      1.0.5      
Markdown                 3.0.1      
MarkupSafe               1.1.0      
matplotlib               2.1.2      
mistune                  0.8.4      
mkl                      2019.0     
more-itertools           4.3.0      
mpmath                   1.0.0      
msgpack                  0.5.6      
msgpack-numpy            0.4.3.2    
murmurhash               1.0.1      
nbconvert                5.4.0      
nbformat                 4.4.0      
networkx                 2.2        
nltk                     3.2.5      
notebook                 5.2.2      
numpy                    1.14.6     
oauth2client             4.1.3      
oauthlib                 2.1.0      
olefile                  0.46       
opencv-python            3.4.4.19   
pandas                   0.22.0     
pandas-gbq               0.4.1      
pandocfilters            1.4.2      
patsy                    0.5.1      
pexpect                  4.6.0      
pickleshare              0.7.5      
Pillow                   4.0.0      
pip                      18.1       
plac                     0.9.6      
plotly                   1.12.12    
pluggy                   0.8.0      
portpicker               1.2.0      
preshed                  2.0.1      
prompt-toolkit           1.0.15     
protobuf                 3.6.1      
psutil                   5.4.8      
ptyprocess               0.6.0      
py                       1.7.0      
pyasn1                   0.4.4      
pyasn1-modules           0.2.2      
Pygments                 2.1.3      
pygobject                3.26.1     
pymc3                    3.5        
pyparsing                2.3.0      
pystache                 0.5.4      
pytest                   3.10.1     
python-apt               1.6.3      
python-dateutil          2.5.3      
pytz                     2018.7     
PyWavelets               1.0.1      
PyYAML                   3.13       
pyzmq                    17.0.0     
regex                    2018.1.10  
requests                 2.18.4     
requests-oauthlib        1.0.0      
rsa                      4.0        
scikit-image             0.13.1     
scikit-learn             0.19.2     
scipy                    1.1.0      
seaborn                  0.7.1      
setuptools               40.6.2     
simplegeneric            0.8.1      
six                      1.11.0     
spacy                    2.0.18     
statsmodels              0.8.0      
sympy                    1.1.1      
tensorboard              1.12.0     
tensorflow               1.12.0     
tensorflow-hub           0.1.1      
tensorflow-probability   0.5.0      
termcolor                1.1.0      
terminado                0.8.1      
testpath                 0.4.2      
Theano                   1.0.3      
thinc                    6.12.1     
toolz                    0.9.0      
tornado                  4.5.3      
tqdm                     4.28.1     
traitlets                4.3.2      
typing                   3.6.6      
ujson                    1.35       
uritemplate              3.0.0      
urllib3                  1.22       
vega-datasets            0.5.0      
wcwidth                  0.1.7      
webencodings             0.5.1      
Werkzeug                 0.14.1     
wheel                    0.32.3     
wrapt                    1.10.11    
xgboost                  0.7.post4

Tensorflowのみならずscikit-learn,theanoもデフォルトで入っています.

それに足りないものがあればpipでインストールできるのですから神.

ローカルランタイムへの接続

ではJupyter を使用してローカル ランタイムに接続し,ローカル ハードウェアでコードを実行したり,ローカル ファイル システムにアクセスしたりできるようにしましょう.

まずはjupyter notebookが入っているサーバーないしはPCで以下のコマンドを実行します.

pip install jupyter_http_over_ws
jupyter serverextension enable --py jupyter_http_over_ws

次にサーバーを起動していきます.

通常のコマンドにオプションをつけますのでaliasを使うなどして楽しましょう.

jupyter notebook \
  --NotebookApp.allow_origin='https://colab.research.google.com' \
  --port=8888 \
  --NotebookApp.port_retries=0

コマンドを実行したらColaboratoryのメニューにある「接続済み」から「ローカルランタイムに接続」をえらんでください.

そしたら先程指定したポート番号を入力して「接続」を押してください.

もし,「jupyter_notebook_config.py」を作成して–no-browser フラグを指定してのJupyter ノートブック サーバー起動をしている場合は起動時に出てくるURLをブラウザ上で一度アクセスしてください.

Copy/paste this URL into your browser when you connect for the first time,
    to login with a token:

Colaboratoryはその際のCookieを利用してアクセスします.

接続できたら先程とは違ってローカルという文字が追加されているはずです.

これで処理をローカルで実行することができるようになります.

ローカルで回すならそのままJupyter notebook使ったほうが…って思わなくもないですがPCではなくて自分のサーバーにこれをさせると強いかもしれません.

クラウドではやはり動作が遅いので.

※Firefoxをお使いの方はブラウザ側の設定を少し変更しなくてはいけませんので注意をしてください.

先程と違って

!ls -a

とするとローカルのファイルが見えます.

やはり他の処理もローカルの方が早いです.

TPU,GPUも使えます

Notebookの設定で「ハードウェアアクセラレータ」というものがあり,あの「TPU」が使用できます(GPUもあるよ).

最&高.

さいごに

今回はGoogleの神サービスであるColaboratoryの紹介でした.

Googleさんは便利なサービスをこっそり(というか私が知らないだけなのですが)公開しているのでしっかりチェックしておいたほうがいいですね.

このサービスはiPadで有効に活躍してくれることでしょう!!!

p.s.

登壇してくださったLaurence MoroneyさんはGoogleスライド使っててめちゃくちゃよかったので私もパワポからそっちに移行しようかなって思いました.

[超便利]CoCalcとは:CloudでLatex,Jupyter,shell +α使えるぞ!!!Cocalcについての使い方を日本語で紹介しています.コカルクはCloudでLatex,Jupyter,shell を使うことができる非常に優れたWebサービスです.シングルサインオン(SSO)に対応しているので使用するのは非常に容易です....
ABOUT ME
しまさん
てくてくぷれいす運営者のしまさんです. 高専→大学編入してから行動的な学生ブロガー? / 自身の変化を求めてブログを6月から開始 / グレープフルーツと本が好き / Distributed SNSやSecurity,プログラミングやVR等のIT系や自身の編入体験談や高専のこと,大学生活を書いてます(たまに小ネタ) / Progateで勉強中