この記事では、Alibaba Cloud ECSインスタンスにPyODPSを実行してDockerにJupyter Notebookをインストールする方法を紹介します。
本ブログは英語版からの翻訳です。オリジナルはこちらからご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。
#なぜJupyter Notebook
データセットを探索するときには、まずデータをロードして便利な形式にすることから始めなければなりません。また、データセットが非常に大きい場合は、ディスクから学習データを読み込むだけで30分近くかかることもあります。モデルのフィッティングを行う場合は、通常、最初に特徴行列を設定したり、他の前処理を行ったりする必要があります。これは、最初に戻って、また同じサイクルを繰り返すことを意味します。
Notebookはこの映画のような運命からあなたを救ってくれます。Jupyter Notebookを使ったコーディングは、マトリックスの戦闘シーンのようなものです。Notebookは、データを一度だけ読み込む必要があるので、反復したり新しい実験を試したりするのがはるかに速くなります。
Notebookは、一部のセルを通常のコードからMarkdownに切り替えることができるため、プレゼンテーションに最適です。Markdownは習得が早く、使いやすいです。いくつかのMarkdownセルを使って作業を紹介することで、あなたのスクリプトが洗練されたプロフェッショナルなものになり、最高のデータサイエンスを前面に出すことができます。
一部の人々は一回でコードを書く能力を持っています: 彼らはしばらくの間問題について考え、座って解決策を練ります。しかし、私のような人は、問題を解決するのに一度では済まないことがあります。私はいつも、答えに向かって少しずつつまずきながら、前に向かってもがいています。Notebookはそのようなワークフローに本当に適しています。なぜなら、次のビットに移る準備が整うまで、何度でも好きなだけ各セルを再実行して、小さなバリエーションをたくさん試すことができるからです。変更をテストしたいときに、毎回すべてのコードを実行する必要はありません。
図1. Jupyter Notebookからのショット例(出典:https://goo.gl/xWsl4E)
この記事では、Alibaba Cloud Elastic Compute Service (ECS)インスタンス上でDockerにPyODPSを実行しているJupyter Notebookをインストールする方法を紹介します。
#愛すべきMaxCompute (旧ODPS)
ウェブサイト(http://pyodps.readthedocs.io)の定義からPyODPSについては、ODPS SDKのPython版であり、ODPSオブジェクトの基本的な操作を提供し、ODPS上でデータ解析を容易に行うためのデータフレームワークを提供しています。ODPSは現在MaxComputeとしてリブランドされていますが、SDKの名称はODPSのままです。
図2. MaxCompute (ODPS) の構成
#前提条件
1、ECSインスタンス(最低でも4コア8GB)
2、時間は約10分
#インストール方法
1、インスタンスにDockerをインストールする
ご参考までに、Ansible playbookを使ってECS上で自動でDockerインストールを行うコードリポジトリをご覧ください。
2、JupyterでNotebookコンテナをインストール
Nodeから実行してインスタンスにイメージをインストールするか、プレイブックスクリプトに追加します。
$ docker pull jupyter/notebook
インストールが動作することを確認するには、以下のコードを実行してください。
$ docker run -p 8080:8888 jupyter/notebook jupyter notebook --no-browser
イメージのエクスポート先のボリュームは.ipynbファイルが格納されています。以下のようにホストパスにボリュームをマウントしてみてください。
$ docker run -p 8080:8888 /home/notebooks:/notebooks jupyter/notebook jupyter notebook --no-browser
Webブラウザから [http://あなたのノードのIPアドレス]:8080 にアクセスします。
3、PyODPSのインストール
コンテナに取り付けて次のステップに進みます。
$ docker exec -i -t [container name] /bin/bash
pipを更新します。コンテナ内でこのコマンドを実行します。
$ pip install --upgrade pip
コンテナ内でこれを実行してPyODPSをインストールします。
$ pip install 'pyodps[full]'
unittestを実行して、インストールが成功していることを確認します。
$ python -m unittest discover
4、インストールの最終調整
コミットして新しい画像を作成します。
$ docker commit -c='CMD ["jupyter", "notebook", "--no-browser"] ' [existing container name] [your new container name with tag]
5、通常通りNotebookを実行する
Jupyterを実行する
$ docker run -p 8080:8888 [your container name with tag]
Notebook WebUIは、[http://あなたのノードのIPアドレス]:8080から見ることができます。
これで完了です! 手順に正しく従っていれば、Jupyter Notebook を Alibaba Cloud Elastic Compute Service (ECS) インスタンスに MaxCompute service for PyODPS でセットアップしているはずです。
アリババクラウドは日本に2つのデータセンターを有し、世界で60を超えるアベラビリティーゾーンを有するアジア太平洋地域No.1(2019ガートナー)のクラウドインフラ事業者です。
アリババクラウドの詳細は、こちらからご覧ください。
アリババクラウドジャパン公式ページ