Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
9
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

@cvusk

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

コンテナで機械学習を動かす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

今後に期待?

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
9
Help us understand the problem. What are the problem?