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をインストールする場合
ローカル環境へインストールする場合
特徴を読んで、お好みのバックエンドを選択
クラウド環境へインストールする場合
以下の記事を参照
※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
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
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>
ユースケース
インストールが完了したので、恩恵にあずかりましょう。
ユースケース1 JupyterHubの利用
kubeflow dashboardからJupyterHubへアクセスができます。
初期usernameと、passwordは任意のものが設定できます。
コンテナイメージを選択した上で、JupyterNotebookを起動できます。
もちろん、自分で作成したDockerコンテナも利用可能です。
Toggle Advancedで、GPU利用設定などが可能です。
ユースケース2
例:Argo CDによるk8s上でのGitOps
執筆中...
ユースケース3
他のよく使うモジュ−ル類の使い方例
https://www.kubeflow.org/docs/components/
執筆中...