12
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Data PlatformAdvent Calendar 2017

Day 11

コンテナで機械学習を動かすKubeflow

Posted at

コンテナで機械学習を動かすKubeflow

KubernetesでオーケストレートされたDockerコンテナでTensorflowを動かすKubeflowというツールがGithubに上がっていました。
https://github.com/google/kubeflow

ためしに動かしてみました。

Kubeflowとは

KubeflowはKubernetesで機械学習を動かすためのスケーラブルでポータブルな環境を提供します。
目的は"to provide a straightforward way for spinning up best of breed OSS solutions"とのことですので、OSSで機械学習基盤を実現するシンプルな構成を提供するというものだと思います。
Kubeflowには以下が含まれています。

  • JupyterHub
  • Tensorflow Training Container
  • Tensorflow Serving

というわけで、モデル開発(JupyterHub)、学習(Tensorflow Training Container)、推論(Tensorflow Serving)まで、機械学習に関わる一連の機能を提供しています。
これらをDockerコンテナとKubernetesのymlで提供しているので、すぐ使い始められてスケーラブルも簡単、というものです。

早速動かしてみる

早速動かしてみます。
Kubernetesを構築後(ここが一番たいへんでは?)、git cloneしてKubernetesから起動します。
具体的には以下のコマンドで構築可能です。

git clone https://github.com/google/kubeflow.git

cd kubeflow/
kubectl apply -f components/ -R

0.PNG

kubectl get svc,pods,rs,deployment,role,rolebindingで起動されているものを確認すると以下が表示されます。

2.PNG

なんかいろいろ動いていますが、ひとまずJupyterHubにアクセスしてみます。

JupyterHubの初期ログインユーザ/パスワードは任意です。好きなユーザとパスワードがそのままユーザとパスワードになります。

3.PNG

4.PNG

ユーザとパスワードを設定すると同時に、このユーザのJupyterHubに割くリソースを設定します。

5.PNG

どうもユーザ/パスワードを設定することで新たにpodsを起動しているようです。

6.PNG

ユーザ用JupyterHubの起動には少々時間がかかりますが、正常起動するとJupyterHubのログイン後画面が表示されます。

7.PNG

ディレクトリがいくつかありますが、.ipynbはtensorflow-models/samples/outreach/blogs/housing_prices.ipynbしか見つけられませんでした。

8.PNG

なお、.pyのサンプルはたくさんありますが、どう動かすのかはよくわかりません。
JupyerHubで動かすわけではなさそうですし、どうするのでしょうね(笑)

tf-controllerのサンプル

JupyterHub以外にも、tf-controllerのサンプルがkubeflow/tf-controller-examples/tf-cnn/ディレクトリにあります。
https://github.com/google/kubeflow/tree/master/tf-controller-examples/tf-cnn

こちらにはkube jobsがいろいろ用意してあり、kubectl createで実行可能です。

cd kubeflow/tf-controller-examples/tf-cnn/
kubectl create -f tf_job_cpu.yaml

CPU用とGPU用が用意されています。
現時点(2017年末)でKubernetesからGPUアクセスするのはまだα機能ですが、今後正式版になっていくのでしょう(期待)
kubectl get svc,pods,rs,deployment,role,rolebinding,jobsで確認すると、更にいろいろ起動していることがわかります。

9.PNG

jobsとしてマスターとワーカーとパラメータ・サーバが起動していて、Resnet50の学習が動いているようです。

11.PNG

今後に期待?

まだドキュメントが少なく、まともに動かせていませんが、機械学習やディープラーニングとコンテナは相性が良いと思うので、今後発展していくと期待しています。

12
9
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
12
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?