2019年1月1日火曜日

EC2 + H2O, Jupyter Notebook

SageMaker で XGBoost による Binary classification を整備。

ビルトインアルゴは Docker で展開。CPU のみでした。import は csv か LibSVM のみ。オンプレミスでの RAPIDS に比べ、メリットはあまりないですね。ま、両者とも H2O で使えるので大規模データの変換に使えるかもしれません。

次は、EC2 に H2O を投入。H2O は CPU 版なので、メモリ大きめの m4.4xlarge を選択。これは以前に実装したことがあったので、容易に進みました。

そしてAnaconda。同じくEC2 に実装しようとしたのですが、はまりました。
インストールして再起動。jupyter notebook でサーバーは立ち上がるのですが、クライアントから接続できません。ポートは解放済みですが。
調べてみると、設定ファイルを作らないとダメでした。最初から Deep Learning AMI でインスタンスを作っておけばよかったのですが。
https://docs.aws.amazon.com/ja_jp/dlami/latest/devguide/setup-jupyter-config.html

Jupyter サーバーの設定
SSL 証明書を作成します。
$ cd
$ mkdir ssl
$ cd ssl
$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout "cert.key" -out "cert.pem" -batch
パスワードを使用してクライアントから Jupyter ノートブックサーバーにログインすると、サーバー上のノートブックにアクセスできます。
iPython ターミナルを開きます。
$ ipython
iPythonPrompt> from IPython.lib import passwd
iPythonPrompt> passwd()
パスワードハッシュ (sha1:examplefc216:3a35a98ed... など) を記録します。
exit
ここでJupyter を一度起動させておいたほうが良いでしょう。
終了してから、
Jupyter 設定ファイルを編集します。
 ~/.jupyter/jupyter_notebook_config.py
c = get_config()  # Get the config object.
c.NotebookApp.certfile = u'/home/ubuntu/ssl/cert.pem'
c.NotebookApp.keyfile = u'/home/ubuntu/ssl/cert.key'
c.NotebookApp.ip = '*'
c.NotebookApp.open_browser = False
c.NotebookApp.password = 'sha1:fc216:3a35a98ed980b9...'  
私の環境では c.NotebookApp.ip = '*'  がダメでした。 c.NotebookApp.ip = '0.0.0.0' でサーバーが立ち上がりました。バージョン違いでしょうか。 ま、次からは大丈夫ですね。

クライアントから簡単な試算も行い、チェック終了。
いざ、本番ということで S3 に 18GB 近いファイルをアップロードしようとしたら、エラー。アップできません。弱りました。

0 件のコメント:

コメントを投稿