Cloud DatalabはGCPが提供するサービスのひとつで、Jupyter NotebookのGCP版です。便利なところは、
-
インストールがすごく簡単。Cloud SDKを入れてあれば、
datalab create your-instance-name
って実行するだけであっという間にDatalabインスタンスを作れる -
AnacondaのようにNumPy/SciPy、scikit-learn、matplotlib等の定番データ分析ツールがひととおり入っていてすぐ使える。もちろんTensorFlowも
-
BigQueryやGoogle Cloud Storage、Cloud Dataflow、Google Charts等のGCPサービスが統合されていて、例えばBigQueryのクエリ結果をNumPyやPandasの配列として扱える
等々の便利さで、最近はなんでもDatalabで済ませるようになりました。気になる方は、こちらのビデオを見てみてください。BigQueryからのデータ抽出とTensorFlowによるモデル学習までを5分間くらいでさくっと解説しています。
タブレットやスマホから使いたい!
このDatalabを出先に持ってったiPadから手軽に使いたい! と思ったのですが、DatalabインスタンスはGCP上のGCEインスタンスで、datalab
コマンドによるsshポートフォワーディングで接続するため、Cloud SDK環境がなければアクセスできません。いろいろ試行錯誤の結果、以下の手順でいい感じにiPadからDatalabを開ける環境をつくれました。
踏み台PCを用意する
最初はiPadからsshアプリでポートフォワーディングしてDatalabインスタンスに直接接続する方法も考えました。が、iOSはバックグラウンドアプリが10分でサスペンドされてしまいます。直接接続はあきらめて、踏み台PCを用意することにしました。自宅のPCでDatalabに接続し、そこへiPadからVPN接続します。
まずは踏み台となるPCから以下のコマンドを実行してDatalabに普通に繋いでみます。
> datalab connect xxx --verbosity=debug
このように--verbosity=debug
と指定すると、Datalabインスタンス接続時にいろいろとデバッグログが表示され、中で何をやってるのかがわかります。その中から、以下のssh接続部分を見つけてコピーしておきます。
/usr/bin/ssh -t -i /Users/kaz/.ssh/google_compute_engine -o CheckHostIP=no -o HostKeyAlias=compute.xxx -o IdentitiesOnly=yes -o StrictHostKeyChecking=yes -o UserKnownHostsFile=/Users/kaz/.ssh/google_compute_known_hosts -o LogLevel=error -4 -N -L localhost:8081:localhost:8080 datalab@xxx.xxx.xxx.xxx
つまりdatalab connect
コマンドとは、クラウド上のDatalabインスタンスのlocalhost:8080
をPCのlocalhost:8081
にsshポートフォワーディングするラッパーとして動作しています。xxx
の部分には個々の環境ごとに異なる値が入ります。
このままではPC上のブラウザからしかアクセスできないので、-L
オプションにつづく部分をxxx.xxx.xxx.xxx:8081:localhost:8080
と修正します。xxx
部分には、PCのIPアドレスを指定します。踏み台PC上では、datalab
コマンドの代わりにこのsshコマンドでDatalabインスタンスに接続しておきます。
タブレットやスマホからVPN接続する
あとは、外出先からタブレットやスマホで自宅LANにVPN接続すればOKです。私の環境では、
- VPN ActivatorでVPNサーバを立て、AirMac ExpressでL2TPパススルー設定
- iPadのVPN設定で自宅LANにL2TP接続
により、VPN環境を作りました。あとは、タブレットやスマホのブラウザから踏み台PCのIPアドレスを参照してxxx.xxx.xxx.xxx:8081
を開けばDatalabにアクセスできます。
いつでもどこでもBigQuery+TensorFlow
この環境のよいところは、
- ネットがあんまり速くない環境でもクラウド上のDatalabインスタンスでそこそこ重い作業も実行できる。gitからcloneしてビルド、BQの検索結果でモデル学習、等々。
- ssh接続のみではmatplotlib等の可視化ツールを使えないが、ブラウザ経由なら可視化しながらのデータいじり可能
といったところです。iPadとSmart Keyboardさえあれば、飛行機のウルトラ遅いWiFiでもTensorFlowいじりできるかな? ともくろんでます。
Disclaimer この記事は個人的なものです。ここで述べられていることは私の個人的な意見に基づくものであり、私の雇用者には関係はありません。