반응형
Pipeline (파이프라인)
✅ Kubeflow Pipeline의 핵심 개념
- ML 워크플로우 전체를 정의하는 흐름
- 모델 학습, 데이터 전처리, 평가, 배포 등의 작업을 연결된 Task로 구성
- Kubeflow Pipelines (KFP) 에서 사용됨
✅ Pipeline 예제
@dsl.pipeline(
name="Sample ML Pipeline",
description="A simple pipeline that trains and deploys a model"
)
def sample_pipeline():
preprocess_task = preprocess_op()
train_task = train_op().after(preprocess_task)
deploy_task = deploy_op().after(train_task)
📌 Pipeline은 전체 ML 워크플로우를 정의하는 역할!
Experiment (실험)
✅ Kubeflow Experiment의 개념
- 동일한 Pipeline을 여러 번 실행하면서 파라미터를 변경하여 실험을 진행하는 개념
- 예를 들어, 학습률(learning rate)을 다르게 설정하고 여러 실험을 수행할 수 있음
- 같은 Pipeline을 여러 번 실행하면서 비교할 수 있는 단위
✅ Experiment 예제
kfp.Client().create_experiment(name="my-experiment")
📌 Experiment는 여러 개의 Pipeline Runs를 포함하는 그룹!
Run (실행)
✅ Kubeflow Run의 개념
- Pipeline이 한 번 실행되는 단위
- 하나의 Experiment에서 여러 개의 Run을 생성할 수 있음
- Run마다 서로 다른 입력 데이터를 사용하여 실행 가능
✅ Run 예제
run = client.run_pipeline(
experiment_id=experiment.id,
job_name="sample_run",
pipeline_package_path="pipeline.yaml"
)
📌 Run은 하나의 Pipeline 실행을 의미!
Component (컴포넌트)
✅ Kubeflow Component의 개념
- Pipeline을 구성하는 개별 작업(Task)
- 예: 데이터 전처리, 모델 학습, 모델 평가 등 각각의 단계가 Component로 정의됨
- 각 Component는 Docker 컨테이너 기반으로 실행됨
✅ Component 예제
@dsl.component
def preprocess_op():
return dsl.ContainerOp(
name="Preprocessing",
image="my-preprocessing-image",
command=["python", "preprocess.py"]
)
📌 Component는 Pipeline 내부에서 실행되는 개별 단위(Task)!
개념 간의 관계 정리
Experiment (실험)
├── Run 1 (첫 번째 실행)
│ ├── Component 1: 데이터 전처리
│ ├── Component 2: 모델 학습
│ ├── Component 3: 모델 배포
│
├── Run 2 (두 번째 실행, 다른 파라미터)
│ ├── Component 1: 데이터 전처리
│ ├── Component 2: 모델 학습 (다른 학습률)
│ ├── Component 3: 모델 배포
✅ Pipeline → 전체 ML 워크플로우
✅ Experiment → Pipeline을 여러 번 실행하며 비교하는 단위
✅ Run → 한 번의 Pipeline 실행
✅ Component → Pipeline 내부에서 실행되는 개별 작업
실전 예제 (전체 개념 적용)
아래 예제는 데이터 전처리 → 모델 학습 → 모델 배포를 포함하는 Pipeline을 정의하고 실행하는 코드입니다.
import kfp
from kfp import dsl
# 1. 데이터 전처리 Component
@dsl.component
def preprocess_op():
return dsl.ContainerOp(
name="Preprocessing",
image="my-preprocessing-image",
command=["python", "preprocess.py"]
)
# 2. 모델 학습 Component
@dsl.component
def train_op():
return dsl.ContainerOp(
name="Model Training",
image="my-training-image",
command=["python", "train.py"]
)
# 3. 모델 배포 Component
@dsl.component
def deploy_op():
return dsl.ContainerOp(
name="Deploy Model",
image="my-serving-image",
command=["python", "deploy.py"]
)
# 4. Pipeline 정의
@dsl.pipeline(
name="ML Pipeline",
description="A sample machine learning pipeline"
)
def ml_pipeline():
preprocess_task = preprocess_op()
train_task = train_op().after(preprocess_task)
deploy_task = deploy_op().after(train_task)
# 5. Pipeline 실행
client = kfp.Client()
experiment = client.create_experiment(name="ml-experiment")
run = client.run_pipeline(
experiment_id=experiment.id,
job_name="ml_pipeline_run",
pipeline_package_path="pipeline.yaml"
)
결론
Pipeline | ML 워크플로우 전체를 정의 (데이터 → 학습 → 배포) |
Experiment | Pipeline을 여러 번 실행하며 실험할 때 사용 |
Run | 한 번의 Pipeline 실행 |
Component | Pipeline 내부에서 실행되는 개별 Task (데이터 전처리, 학습, 배포 등) |
반응형
'AI > Kubeflow' 카테고리의 다른 글
Kubeflow Pipeline, KServe SDK (0) | 2025.03.07 |
---|