LoginSignup
48
41

More than 5 years have passed since last update.

Google Cloud ML EngineをJupyterから簡単に使えるMagic

Last updated at Posted at 2017-03-29

Cloud ML Engineへ学習JobをJupyterから簡単に投げたいなぁと思い、そんなJupyter用 Magic Command Extensionを作りました。
Jupyterで書いたモデルを、Runすればクラウド上で実行することができます。

download.png
こんな感じ。

Cloud ML Engineとは

簡単に言えばTensorFlowの学習や予測JobをCloud上で実行できるマネージドな環境です。一般的にはDistributed TensorFlowで大規模に学習をさせるケースが多いかと思いますが、私のようにメインマシンがMacBookでGPUも使えない環境の場合は、GPUを気軽に使えるリモートの環境として重宝しています。
また、GCEとは違ってJobが終われば自動で立ち下がるため、インスタンス落とし忘れで課金が大変な事になる心配もありません。

準備

Google Cloud SDKの設定は終わっている前提で進めます。
また、gsutilやAPIをApplication Default Credentialsで使用しているため、以下のコマンドで設定をしておく必要があります。

gcloud auth application-default login

Jupyter用のExtensionをインストール

pipでインストールできます。

$ pip install cloudmlmagic

他にCloud ML Client Libraryをインストールする必要がありますが、上記pipでインストールされるはずです。

ソースからpython setup.py installでもインストール可能です。
https://github.com/hayatoy/cloudml-magic

使い方

examples内にNotebookがあるのでそれを見るとわかりやすいです。

ExtensionをNotebookにロード

次のMagicをコードブロックに挿入し、実行するとロードされます。
%load_ext cloudmlmagic

Projectの設定

次のMagicを実行します。ここは適宜自分のプロジェクトに書き換えてください。

%ml_init -projectId PROJECTID -bucket BUCKET -scaleTier BASIC

*GCSのBucketはあらかじめ作成しておく必要があります。scaleTierは以下から選べます。

Scale Tier ML Unit
BASIC 1
STANDARD_1 10
PREMIUM_1 75
BASIC_GPU 3

Cloud MLにアップロードするコードブロックを指定

%%ml_code

このMagicが入っているブロックのコードを全てアップロードします。逆にこのMagicのないブロックはローカルのみ実行となるので、学習部分だけCloud ML Engineに投げ、結果の表示などはローカルで実行するなど使い分けができます。

注意

  • このMagicが含まれるブロックは、Cloud ML Engineへのアップロードの有無に関わらずローカルでも実行されます
  • このMagicが含まれていないブロックの変数やパッケージを参照しないでください
    その場合、ローカルでは動いてもCloud ML Engine上でエラーになります

Jobの開始

%ml_run cloud

cloudを付けるとCloud ML Engineで実行、付けなければローカルで実行されます。このMagicが含まれるブロックのコードもアップロードされるコードに含まれます。

実行結果の確認

Consoleから確認できます。
Job_Details
Jobはmlmagic__**の名前でdeployされます。

最後に

JupyterからCloud ML Engineを簡単に利用できるようになりました。
まだpackageの追加指定ができなかったり、細かい設定ができませんが徐々に追加していきます。(プルリクしてくれてもいいよ!)
Cloud ML Engineの利用者が増えるといいですね!

48
41
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
48
41