22
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

Kubeflow入門

Kubeflow入門

この記事は、オフィシャルの Getting Started with Kubeflowを抜粋しつつ、適宜補足を加えたものです。

Kubeflowとは

ローカル/クラウドをまたいで、Train / Servingを行うときにk8sを用いて
- TensorFlowジョブのダッシュボード確認
- JupyterHubの提供
- k8s dashboardの提供
- CI/CDツールの提供
などなど、よくある解決したい問題への解決策を一貫して提供するサービス
TensorFlowExtended(TFX)の流れを汲んでいる。

Kubeflow を使うか検討すべき人は?

  • TensorFlowのモデルを異なる環境で、学習/Servingする人
  • Jupyter notebookをTensor Flowの学習ジョブに使いたい人
  • ジョブの発行を、CPUやGPUが無いマシンで行いたい人
  • TensorFlowを他のプロセッサと組み合わせたい人

k8s がない環境に kubeflowをインストールする場合

ローカル環境へインストールする場合

特徴を読んで、お好みのバックエンドを選択
- MiniKF
- Minikube
- Microk8s<- GPUの利用が容易なためおすすめ

クラウド環境へインストールする場合

以下の記事を参照
※GKE上でGPUを多数使う場合、GCP上でGPUの割当数を増やすなどの対応が必要なので、GCPのドキュメントも合わせて確認する
Kubernetes Engine for Kubeflow
Schedule GPUs
GCPドキュメント

既存の k8s 環境へのインスト−ルする場合

Requirements
- ksonnet version 0.13.1 +
- Kubernetes version 1.8 +
- kubectl

以下のコマンドで kfctl.sh をダウンロード

$ mkdir ${KUBEFLOW_SRC}
$ cd ${KUBEFLOW_SRC}
$ export KUBEFLOW_TAG=v0.4.1

$ curl https://raw.githubusercontent.com/kubeflow/kubeflow/${KUBEFLOW_TAG}/scripts/download.sh | bash

k8s上に、Kubeflowのインストールを実施

$ ${KUBEFLOW_SRC}/scripts/kfctl.sh init ${KFAPP} --platform none
$ cd ${KFAPP}
$ ${KUBEFLOW_SRC}/scripts/kfctl.sh generate k8s
$ ${KUBEFLOW_SRC}/scripts/kfctl.sh apply k8s

microk8s 上にインストールする例

※microk8s は Linux上でのみ動作する
仮想環境上でもLinuxでも動作するため、Mac環境の場合も動作させることは可能

Multipass を利用して仮想環境の構築

Multipassは、使い捨てのUbuntu環境を作るためのCLIツール

1.Multipassのインストール

$ sudo snap install multipass --beta --classic

2.Ubuntu仮想環境の作成

$ multipass launch bionic -n kubeflow -m 8G -d 40G -c 4

-n : nameの指定
-m : メモリ容量
-d : ディスク容量
-c : cpu数
Virtualization Technology(VT)の設定がBIOSで無効になっていると起動できないため、
エラーが出るときは、BIOSへ行って(起動時に左シフトやF2,F11等)設定を確認する

詳細設定 > CPU設定 > Intel (VMX) Virtualization Technology等が該当するSetting
iOS の画像 (1).jpg

3.仮想環境に入る

$ multipass shell kubeflow

1. Microk8sのセットアップ

$ git clone https://github.com/canonical-labs/kubernetes-tools
$ sudo kubernetes-tools/setup-microk8s.sh
$ microk8s.enable gpu # GPUを使う場合
$ kubernetes-tools/expose-dashboard.sh # k8s dashboard を使う場合

▼k8s dashboard
image.png
http://"[EXTERNAL_IP]":8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/
へアクセスすることで、確認可能

2. Kubeflowのインストールとセットアップ

$ git clone https://github.com/canonical-labs/kubeflow-tools
$ kubeflow-tools/install-kubeflow.sh

出力されるPort番号を確認し、以下のURLでkubeflow のdashboardや、
JupyterHubへアクセスすることが可能

3. Kubeflowへのアクセス

Point browser to either:
- http://<kubeflow VM IP>:<Ambassador PORT>
- http://localhost:<Ambassador PORT>

kubeflow dashborad
image.png


ユースケース

インストールが完了したので、恩恵にあずかりましょう。

ユースケース1 JupyterHubの利用

kubeflow dashboardからJupyterHubへアクセスができます。
image.png
初期usernameと、passwordは任意のものが設定できます。

image.png
コンテナイメージを選択した上で、JupyterNotebookを起動できます。
もちろん、自分で作成したDockerコンテナも利用可能です。

Toggle Advancedで、GPU利用設定などが可能です。

ユースケース2

例:Argo CDによるk8s上でのGitOps
執筆中...

ユースケース3

他のよく使うモジュ−ル類の使い方例
https://www.kubeflow.org/docs/components/
執筆中...


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
Sign upLogin
22
Help us understand the problem. What are the problem?