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

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の利用者が増えるといいですね!


『 機械学習 』Article List
Category List

Eye Catch Image
Read More

Androidに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

AWSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Bitcoinに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

CentOSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

dockerに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

GitHubに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Goに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Javaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

JavaScriptに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Laravelに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Pythonに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Rubyに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Scalaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Swiftに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Unityに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Vue.jsに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Wordpressに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

機械学習に関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。