LoginSignup
0
0

KubeflowをTanzu Mission Controlでインストールして使ってみる

Last updated at Posted at 2023-12-01

masanaraさんのこの記事とかgowatanaさんのこの記事で紹介されているvSphere Machine Learning Extensionを使ってKubeflowを試してみたくなったので、Tanzu Mission Control(以下TMC)で導入してみた時のメモ。

なお、ベースとするインストール手順はこちらを利用する。

vSphere Machine Learning Extensionとは

vSphere Machine Learning ExtensionはvSphere上で簡単にKubeflowを展開するOSSのようだが、現時点ではあまり情報がなくてよく分からない。
商用製品とかではないので、実験的にKubeflowをTKG上で使いたい場合に使うのが良さそう。

導入の前提

今回は以下があるものとする。

  • TKGm2.4のWorkload Cluster (k8s 1.25)
  • Tanzu Mission Control (上記のWorkload Clusterは登録済み)
  • type: LoadBalancerが利用可能(ここではMetalLBを利用)

Tanzu packages内のKubeflowに含まれるHPAのAPIバージョンが古く、おそらくK8sが1.26以上だとHPAのバージョンがv2betaが削除されてv2のみとなっているはずで、以下のエラーでインストールに失敗する。

    kapp: Error: Expected to find kind 'autoscaling/v2beta2/HorizontalPodAutoscaler', but did not:

なのでk8sのバージョンは1.25以下を使うようにした方がよい。
また、Workerノードの要求リソースはそこそこ大きいので注意。

インストール

TMC上でクラスタを選択し、Add-ons->Tanzu repositories->ADD PACKAGE REPOSITORYを選択する。
1701407261523.png
リポジトリ追加画面になるので、以下を入力してADD REPOSITORYをクリックする。

  • Name:kubeflow-carvel-repo
  • Repository URL:projects.registry.vmware.com/kubeflow/kubeflow-carvel-repo:1.6.1
    1701407395481.png

クリック後、Catalog->Tanzu packages->Available Tanzu pakcagesでkubeflowが表示されるので、これをクリックする。
1701407788953.png

右上のINSTALL PACKAGE->CARVEL SETTINGSからCarvel Resources NamespaceCustomを選び、PackageリソースがインストールされるNamespaceを設定する。
ここでは慣例?に従ってmy-packagesとする。
なお、Namespaceはなくても自動で生成される。
設定後、インストール画面に戻り、以下のように設定する。

  • Package name:kubeflow
  • Overlay YAML:以下

※'23/12/15追記:
Package versionに1.6.0が表示されるようになっており、デフォルトでこちらが選択される。
ただ、1.6.0だとインストールに失敗するため、Package versionのプルダウンをクリックして必ず1.6.1を選ぶようにすること

Overlay YAML
service_type: "LoadBalancer"

IP_address: ""
CD_REGISTRATION_FLOW: True

1701408233539.png

入力後、右上のINSTALL PACKAGEをクリックすればインストールが開始される。
環境にも依るかも知れないが、10分以上は掛かるので気長に待つ。
ステータスが緑色に変わればインストール完了となる。
1701420806758.png

Kubeflowの利用

ログインするところまで確認する。
KubeflowをイントールするとIstioもインストールされ、IngressGatewayがIPを公開している。

$ kubectl get svc -n istio-system istio-ingressgateway
NAME                   TYPE           CLUSTER-IP       EXTERNAL-IP     PORT(S)                                                                      AGE
istio-ingressgateway   LoadBalancer   100.66.112.220   10.180.84.210   15021:32502/TCP,80:32658/TCP,443:31929/TCP,31400:30899/TCP,15443:32184/TCP   16m

そのIPにアクセスするとDexのログイン画面になる。
デフォルトではuser@example.com / 12341234でログインできるようになっている。
1701421409203.png
ログインするとそのアカウントで使うNamespaceを聞かれるのでNamespaceを指定する。
ここではデフォルト値のuserのまま進める。
1701421494673.png

ダッシュボードが確認できた。
1701422776075.png

なお、裏では指定したuserというNamespaceが作成され、Kubeflowのコンポーネントが展開されている事がわかる。

$ kubectl get pod  -n user
NAME                                              READY   STATUS    RESTARTS   AGE
ml-pipeline-ui-artifact-79586568b6-5h2dz          2/2     Running   0          32m
ml-pipeline-visualizationserver-8479bf4bd-d85dn   2/2     Running   0          32m

ここではついでにGet Staredもやっておく。
最初にTensorflow界隈ではよく使われる開発環境であるJupyter Notebookを起動する。
左上の三本線をクリックし、Notebooks->New Notebookを押すと作成画面となるため、名前や割り当てリソースなどを設定してLAUNCHから起動する。
なお、選択できるコンテナイメージはTensorFlow用のイメージであるjupyter-tensorflow-fullを選ばないと後で躓くので、その点だけ注意すること。
1701425398363.png

起動後は以下のような画面となる。
1701424301219.png
なお、裏ではJupyter NotebookのPodが起動する。

$ kubectl get pod -n user
NAME                                              READY   STATUS    RESTARTS   AGE
getting-started-0                                 2/2     Running   0          27m
ml-pipeline-ui-artifact-79586568b6-5h2dz          2/2     Running   0          109m
ml-pipeline-visualizationserver-8479bf4bd-d85dn   2/2     Running   0          109m

このPodにはPVCが割り当てられており、Notebookを削除してもPV、PVCは残る仕掛けとなっている。
削除する際は注意。
作成後の画面のCONNECTをクリックするとエディタの画面に遷移する。
1701424356560.png
次にTensorFlow 2 quickstart for expertsで配布されているnotebook(Download notebookから入手)をuploadする。
notebook(advaneced.ipynb)をダウンロード後、左サイドバーのアップロードのアイコン(↑マーク)をクリックし、advaneced.ipynbを指定する。
uploadが完了すると左サイドバーに表示されるため、これをクリックして開く。
1701425981712.png
上部の再生ボタン(▶)をクリックするとチュートリアルが進むため、チュートリアルの内容を確認しつつ下まで実行する。
なお、再生ボタンを押した際、番号が[*]のように表示されている時は実行中なので番号が返ってくるまで待つこと。
また、最後のテストは時間が掛かるので少し待つ。
1701427059349.png
試行ごとの結果が以下のような感じで表示される。

Epoch 1, Loss: 0.1404857486486435, Accuracy: 95.72833251953125, Test Loss: 0.06229446455836296, Test Accuracy: 97.91999816894531
Epoch 2, Loss: 0.041998494416475296, Accuracy: 98.6383285522461, Test Loss: 0.05722526088356972, Test Accuracy: 98.06999969482422

Accuracyの値より、試行ごとに精度があがることが確認できた。
(メモリが少なかったのか、途中で強制再起動が掛かり5回実施することは出来なかった)。

0
0
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
0
0