← Blog
2024-10-02 · Project · AIMLFW · 3/11 · 2 min read

모델 학습 pipeline 구축하기

AIMLFW에서 모델을 학습시키려면 먼저 학습 파이프라인을 만들어 올려야 한다. 큰 흐름은 학습에 쓸 데이터를 Feature Group으로 묶고, 파이프라인을 업로드한 뒤, 이 둘을 묶은 Training Job을 만들어 돌리는 식이다.

Feature Group 생성

먼저 학습에 쓸 데이터를 묶는 Feature Group을 만든다. http://localhost:32005 대시보드에서 InfluxDB에 들어있는 데이터를 대상으로 Feature Group을 생성해준다.

Pipeline 생성

파이프라인은 Kubeflow Pipeline 형태로 올라간다. http://localhost:32088의 Jupyter에서 qoe-pipeline.ipynb을 실행하면 파이프라인을 정의한 YAML이 생성되고, 이게 kubeflow-adapter를 통해 업로드된다. 잘 올라갔는지는 http://<ml-pipeline-ui IP>:80/#/pipelines에서 확인할 수 있다.

Training Job 생성

이제 대시보드의 Training Jobs에서 Create를 눌러 학습 작업을 만든다. 앞에서 만든 파이프라인과 Feature Group을 여기서 묶어주는 단계다.

Create Training Job 폼
[Fig. 1] Training Job 생성 폼

주요 입력값은 이렇다.

항목값 (예시)
Training Function올린 파이프라인 (Traffic_Forecasting_pipeline)
FeatureGroup Name만들어둔 Feature Group (viavi)
Datalake SourceInflux DB
Feature Filter학습에 쓸 데이터 필터 (Viavi.Cell.Name == "S10/B13/C3")
Hyper Parameters학습 매개변수 (epochs:100)

학습 실행

Training Job을 만들었으면 Train 버튼으로 학습을 돌린다. 학습은 Kubeflow 파이프라인이 파드로 떠서 진행되는데, 대시보드의 Detailed Status에서 Data Collection, Training 같은 단계가 차례로 체크되는 걸 볼 수 있다. 실제 파드 상황은 kubectl get pods -A로도 확인할 수 있다.

파이프라인을 돌리다 보면 완료되거나 실패한 파드가 잔뜩 쌓인다. 보기 거슬리면 한 번에 정리하자.

‘Completed’ 상태 파드 일괄 삭제하기

kubectl delete pod --field-selector=status.phase==Succeeded --all-namespaces

‘Error’ 상태 파드 일괄 삭제하기

kubectl delete pod --field-selector=status.phase==Failed --all-namespaces