Kubeflow Training Operators
MPIJob Operator, TFJob Operator, PyTorchJob Operator
Last updated
MPIJob Operator, TFJob Operator, PyTorchJob Operator
Last updated
Kubeflow Training Operators์๋ MPIJob Operator, TFJob Operator, PytorchJob Operator๊ฐ ์๋๋ฐ, Kubernetes ์์์ ML๋ชจ๋ธ์ ํ์ตํ ๋ ๋ถ์ฐํ์ต ๊ธฐ๋ฅ์ ์ ๊ณตํด ํ์ต์ ๋๋ ์๊ฐ์ ์ค์ผ ์ ์๋ค.
Training Operators๋ฅผ ์ดํดํ๋ ค๋ฉด, Kubernetes Operator ๊ฐ๋ ์ ์์์ผํ๋ฉฐ [Kubernetes Operator] ๊ธ์ ์ฐธ๊ณ ํ์.
Kubeflow์์ ์ ๊ณตํ๋ Training Operator์ ๋ํด ์์๋ณด์.
MPIJob Operator ์ด์ฉํด Kubernetes ์์์ Horovod ๊ธฐ๋ฐ์ผ๋ก All Reduce ๋ถ์ฐํ์ต์ ์ฝ๊ฒ ์คํํ ์ ์๋ค.
MPIJob Operator๊ฐ TFJob Operator, PytorchJob Operator ์ ๋ค๋ฅธ ์ ์ Tensorflow, Keras, Pytorch, MXnet ๋ฑ ๋ค์ํ ๋ฅ๋ฌ๋ ํ๋ ์์ํฌ๋ก ๊ฐ๋ฐํ ์ฝ๋๋ฅผ ์กฐ๊ธ๋ง ์์ ํด์ ๋ถ์ฐํ์ต์ ์คํํ ์ ์๋ค๋ ์ ์ด๋ค.
MPIJob Operator Component๋ ์ญํ ์ ๋ฐ๋ผ Launcher, Worker๋ก ๊ตฌ์ฑ๋๋ฉฐ, MPIJob CRD์ spec ํ์ ํ๋์ ์ ์ํ ์ ์๋ค.
MPIJob Operator๋ฅผ ์ดํดํ๋ ค๋ฉด, ๋จผ์ Horovod ๊ธฐ๋ฐ All Reduce ๋ถ์ฐํ์ต ๋ฐฉ์์ ์ดํดํด์ผ ํ๋ฉฐ, [Distributed Training] ๊ธ์ ์ฐธ๊ณ ํ์.
MPIJob Operator๋ MPIJob CR์ ๋ณ๊ฒฝ ์ฌํญ์ด ๋ฐ์ํ๋ฉด, MPIJob Controller๊ฐ ๋ค์ ์ ์ฐจ์ ๋ฐ๋ผ MPIJob์ ์คํํ๋ค.
1) ConfigMap์ ์์ฑํ๋ค. ConfigMap์๋ hostfile๊ณผ mpirun์์ ์ฌ์ฉํ kubexec.sh ์ ์คํฌ๋ฆฝํธ๋ฅผ ํฌํจํ๊ณ ์๋ค. ConfigMap์์ hostfile ํญ๋ชฉ์๋ Worker StatefulSet ํ๋ ๋ชฉ๋ก์ ์ ์ํ๊ณ kubexec.sh ์คํฌ๋ฆฝํธ ํญ๋ชฉ์๋ /etc/hosts ํ์ผ์ ํธ์คํธ ๋ค์์ ๋ฑ๋กํ ์คํฌ๋ฆฝํธ๋ฅผ ์ ์ํ๋ค. 2) Role, RoleBinding, Service Account ๋ฅผ ์์ฑํ๋ค. 3) Worker StatefulSet ํ๋๋ฅผ ์์ฑํ๋ค. 4) Worker StatefulSet ํ๋๊ฐ ์ค๋น๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฐ๋ค. 5) Launcher Job์ ์์ฑํ๊ณ , mpirun ๋ช ๋ น์ด๋ฅผ ์๊ฒฉ์ผ๋ก ์คํํ๋๋ฐ์ ํ์ํ ํ๊ฒฝ๋ณ์๋ฅผ ์ค์ ํ๊ณ mpirun ๋ช ๋ น์ด๋ฅผ ์คํํ๋ค. Launcher Job ํ๋๋ฅผ ์ด๊ธฐํํ ๋ kubectl์ ๋ณต์ฌํ ํ, kubexec.sh์ ๊ฐ Worker StatefulSet ํ๋์ ์คํํ๋ค. 6). Launcher Job์ด ์๋ฃ๋๋ฉด, Worker StatefulSet์ replica๋ฅผ 0์ผ๋ก ์ค์ ํ๋ค. ์๋ฅผ ๋ค์ด, workerReplicas 2๋ก ์ค์ ๋์๋ค๋ฉด 0์ผ๋ก ๋ณ๊ฒฝํ๋ค.
TFJob Operator๋ Kubernetes ์์์Tensorflow ๋ถ์ฐํ์ต Job์ ์คํํ ์ ์๋ Kubeflow Operator๋ก ๋ถ์ฐํ์ต์ ์ํํ ํด๋ฌ์คํฐ ํ๊ฒฝ์ ์ฝ๊ฒ ๊ตฌ์ถํ๊ณ ํด๋ฌ์คํฐ ๋ด์์ ๋ถ์ฐํ์ต์ ์คํํ ์ ์๋ค. ๋ค์์ TFJob CR์ ์ด์ฉํ TensorFlow ๋ถ์ฐํ์ต ์คํ ๊ณผ์ ์ด๋ค.
1) ์ฌ์ฉ์๋ tfjobs.kubeflow.org CRD๋ฅผ ์ฐธ๊ณ ํ์ฌ TFJob CR์ ์์ฑํ๋ค. 2) kubectl ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํด ์์ฑํ TFJob CR์ kube-apiserver์ ๋ฑ๋กํ๋ฉด, TFJob Operator๊ฐ TFJob CR ๋ช ์ธ๋ฅผ ์ฝ์ด ๋ถ์ฐํ์ต์ ์ํํ ํด๋ฌ์คํฐ๋ฅผ ๊ตฌ์ถํ ํ, ์ค๋น๊ฐ ๋๋ฉด ๋ถ์ฐํ์ต์ ์คํํ๋ค.
PytorchJob Operator๋ Kubernetes ์์์PyTorch ๋ถ์ฐํ์ต Job์ ์คํํ ์๋ ์๋ Kubeflow Operator ์ด๊ณ , ํ์ต ๊ณผ์ ์ TFJob ๊ณผ ์ ์ฌํ๋ฉฐ ๋ค์๊ณผ ๊ฐ๋ค.
https://github.com/kubeflow/ https://www.kubeflow.org/docs/components/training/