kubeflow에서 머신러닝 워크플로우의 메타데이터를 관리 및 추적
- 파이프라인 각 단계별로 아웃풋 결과를 다음 태스크의 인풋으로 전달하기 위한 중간 저장소 역할
- 파이프라인의 진행 상태등을 저장할 메타 저장소로 사용
Concept
- Artifact : 워크플로우(파이프라인) 수행에서 생성되거나 사용되는 메타 데이터(Dataset, Metrics, Model에 대한 정보)
- Execution : Input Artifact 정보를 받아서 Trainning 또는 Server을 실행하여 Output Artifact 정보가 생겼다는 메타 데이터
- Run : 하나의 워크플로우(파이프라인)단위로 생성/실행에 대한 메타데이터 정보
- Workspace : 프로젝트 개념으로 하나의 Workspace에는 여러개의 워크플로우(파이프라인)를 만들수도 있음
큰 구조는...
workspace -> run -> (input artifact -> execution -> output artifact)
- Metadata 생성 방법
- Jupyter Nodebook을 사용하여 Metadata를 직접 생성
- Kubeflow pipline을 통해서 Metadat 생성
아래는 JupyterNodebook을 통해서 직접 생성하는 것을 보여준다.
이 화면은 Kubeflow를 실행하고, Artifact를 선택한화면으로, 아래 과정을 통해서 생성된 Metadata들을 보여 주는 Metadta List화면이다.
이 화면은 Kubeflow에서 Artifacts를 눌러 JupyterNotebook을 통해 성성한 metadata를 선택한것이고, 상단에 있는 Lineage Explorer를 통해서 어떤 metadata들로 구성되어 있는것을 볼수 있다.
위의 캡처에서 오른쪽 부분만 확대해서 보면 위와 같다.
- 구성은 data_set -> execution -> Model or Metrics로 구성되어 있다.
이 구성을 만들기위한 노트북의 구성은...
- 설치 과정
- Workspace, run 생성
- 이것은 Metadta의 전체 Flow를 만들기 위한 Workspace이고, 전체 Flow를 실행하는 Run을 먼저 구성하는것이다.
- Artifacts List에서 Admin이라는 Workspace를 확인 할 수 있다.
- Execution 생성
- 이것은 위에서 가운데 파란색으로 보이는 Excution을 생성하는것으로, Workspace의 Run 구성안에서 실제 실행되는 단일 Task로 생각하면된다.
- Data_Set Metadata 생성
- 이것은 위의 그림의 왼쪽 mytable-dump라는 Data_Set에 대한 Metadta를 정의한 것이고, 이것은 Excution에 필요한 Input Log라는 의미로 Metadta를 생성한다.
- Model Metadta 생성
- 이것은 위의 그림의 오른쪽 MNIST 부분으로 Execution(실제 모델 Tranning)의 결과로 모델이 생성되는데, 이때, 생성된 모델 대한 데이터를 Output Log로 기록한다.
- Model Metrics Metadata 생성
- 이것은 위으 그림의 오른쪽 MNIST-evaluation 부분으로 Execution시 생성되는 결과로 모델 Metrics정보가 나오는데 이것을 Output Log로 기록한다.
- 그리고 마지막 설명을 위해서 위의 그림에서 MNIST(모델)를 클릭하면, 아래와 같은 화면으로 변경된다.
- 이것은 Input Artifact로 Data_Set과 Execution(Traninng)을 통해 생성된 Target으로 Model이 나온것을 확인할 수 있으며,
- Model을 Execution하여 서비스하는 Serving의 구성을 볼 수 있다.
- 이 Serving model을 만드는 Jupyter Nodebook을 보면...
- 이것은 위 그림에서 제일 오른쪽 Execution에 해당되는것으로 Serving Model은 Input으로 MNIST라는 모델로 실행되고 있는 Serving Service에 대한 Metadta라는 의미 이다.
참고로...
- 여기서 Serving model을 선택해서 자세한 내용을 보면
- 마지막 Inputs부분을 보면, Serving model은 MNIST라는 모델을 Input으로 받고, 저장소는 gcs://my-bucket/mnist에 있는 것을 확인 할 수 있다.
-
Data_Set
-
Execution(Tranning)
- input : data_set
- output : model, metrics
-
Model
-
Metrics
-
Serving