読者です 読者をやめる 読者になる 読者になる

uyamazakのブログ

仕事中の問題と解決メモ。PythonとGoogle Cloudがメイン。bizoceanで新規事業の企画と開発担当。 BigQueryを使ったビッグデータ収集・解析・リアルタイム処理プロジェクト進行中 https://github.com/uyamazak/oceanus

新しく追加されたdatalabコマンドでGCE上で動かすCLOUD DATALABを使う

Googleに改造されたJupyterであるCLOUD DATALABが、少しまではDockerイメージで配布されてて、ローカルで使ってたけど、Google Cloud SDKにそのままdatalabというコマンドが追加されて、Compute Engine上で動かすのがデファクトになったっぽい。


ローカルマシン上でもコマンドが打てるけど、WEB画面から使えるCLOUD SHELLで使うのが便利だし十分そう。


Quickstart  |  Google Cloud Datalab Documentation  |  Google Cloud Platform

datalab create NAME

とデフォルトで起動すると、NAMEでn1-standard-1のVMインスタンスが追加され、永続ディスクも保存用の200GBと、OS用20GBが作成される。永続ディスクの容量もオプションで変更可能。

ノートブックとか作成されたファイルは、基本的に永続ディスクの方に保存されるので、同じ永続ディスクを使っていれば消えることはない。


他の人や環境と共有するときは、datalabの右上からungitというWEB上のgitクライアント?があるので、そこからcloud repogitoryに簡単にコミット出来る。


ローカルで作ったCSVはどうやってアップしようか考えたところ、クラウドストレージにアップして、datalab上で下記コマンドを使ってVM上にコピーするのが今のところ一番よさげ。

!gsutil cp gs://bucket-name/data_20170411.csv.gz ./

!を付けて単純にシェルコマンドを実行している


早速、200万人の会員データと、そのメールマガジンのクリックデータをロジスティック回帰にぶち込むと、ローカルマシン(4コア8スレッド、32GB)ではメモリを食い尽くしたので、メモリ52GBのn1-highmem-8で起動。

datalab create --machine-type n1-highmem-8 yamazaki

気になる料金は日本リージョンで1時間$0.6596なので、8時間使うと0.6596ドル*110円*8時間で580円といったところ。

社内の開発サーバーのメモリを16GB追加しようとしたら純正品で5万くらいだったし、ずっと起動させているようなものでもないので圧倒的に安い。

https://cloud.google.com/compute/pricing#machinetype


少量のサンプルデータで社内の開発マシンを使い、処理を作ってから全データをクラウドで動かすのが良さそう。

問題としてはハイメモリでも無駄に8コアもあり、sklearnのロジスティック回帰等、処理によっては大半のコアは使いきれてないので、カスタムマシンタイプや、一時的に使うことが多いのでプリエンプティブに対応して欲しい所。



Pythonによるデータ分析入門 ―NumPy、pandasを使ったデータ処理

Pythonによるデータ分析入門 ―NumPy、pandasを使ったデータ処理