Pipeline (파이프라인)

정의

**Pipeline (파이프라인)**은 여러 처리 단계가 순차적 또는 병렬로 연결되어 입력 데이터를 최종 출력으로 변환하는 자동화된 워크플로우입니다.

핵심: 한 단계의 출력 = 다음 단계의 입력

파이프라인의 기본 구조

입력 → [Stage 1] → [Stage 2] → [Stage 3] → 출력
        (변환)      (처리)      (출력)

각 단계:
  - 입력값 받음
  - 처리 수행
  - 출력값 전달
  - 다음 단계로 전달

파이프라인의 3가지 패턴

1. 순차형 (Sequential)

┌────────┐    ┌────────┐    ┌────────┐
│Stage 1 │ → │Stage 2 │ → │Stage 3 │
└────────┘    └────────┘    └────────┘
   1초          2초           1.5초
   총 4.5초 소요

특징:
  - 간단, 이해하기 쉬움
  - 한 번에 하나의 작업만 처리
  - 총 시간 = 모든 단계 합산

2. 병렬형 (Parallel)

     ┌────────┐
  → │Stage 2 │ →
 │  └────────┘   │
 │               │
 Stage 1    Stage 4
 │               │
 │  ┌────────┐  │
 →  │Stage 3 │ →
    └────────┘

특징:
  - 여러 작업 동시 처리
  - 총 시간 = 가장 오래 걸리는 단계
  - 빠름, 복잡함

3. 분기형 (Branching)

        ┌─ [Stage 2A] ─┐
       /               \
─[Stage 1] ─ 조건 분기  ─[Stage 4]
       \               /
        └─ [Stage 2B] ─┘

특징:
  - 조건에 따라 다른 경로 선택
  - 복잡한 로직 처리
  - 에러 처리, 조건부 실행

온톨로지 학습 파이프라인의 예시

데이터 입력
    ↓
[전처리]
  ├─ 텍스트 정제 (1분)
  ├─ 토크나이제이션 (2분)
  └─ 정규화 (1분)
    ↓
[정보 추출] (병렬)
  ├─ NER: Named Entity Recognition (3분)
  ├─ RE: Relation Extraction (5분)
  └─ Attribute Extraction (2분)
    ↓
[온톨로지 구성]
  ├─ 클래스 계층 구축 (2분)
  ├─ 관계 정의 (2분)
  └─ 속성 추가 (1분)
    ↓
[검증]
  ├─ 역량 질문 테스트 (3분)
  ├─ 정합성 확인 (2분)
  └─ 오류 검사 (2분)
    ↓
[정제]
  ├─ 중복 제거 (1분)
  ├─ 오류 수정 (2분)
  └─ 누락 보완 (2분)
    ↓
온톨로지 출력 (30분 총 소요)

좋은 파이프라인의 특징

1. 명확성 (Clarity)

각 단계의 목적이 명확
  ✓ "이 단계는 엔티티를 추출한다"
  ✗ "이 단계는 처리를 한다"

2. 독립성 (Independence)

각 단계가 독립적
  ✓ Stage 2를 Stage 3 없이 테스트 가능
  ✗ Stage 2가 Stage 3에 의존

3. 재사용성 (Reusability)

다른 파이프라인에서 재사용 가능
  ✓ "전처리 단계"를 여러 파이프라인에서 사용
  ✗ "온톨로지 1 전용 전처리"

4. 확장성 (Scalability)

입력 데이터 증가에 대응
  ✓ 병렬 처리로 시간 일정하게
  ✗ 입력 2배 → 시간 2배 증가

5. 안정성 (Robustness)

오류 처리와 복구
  ✓ Stage 2 실패 → Stage 3 건너뛰고 로그 기록
  ✗ Stage 2 실패 → 전체 중단

파이프라인의 최적화

성능 지표:

1. 처리량 (Throughput)
   - 단위 시간당 처리된 데이터
   - 목표: 최대화
   
2. 레이턴시 (Latency)
   - 입력부터 출력까지 시간
   - 목표: 최소화
   
3. 정확도 (Accuracy)
   - 출력의 품질
   - 목표: 최대화

트레이드오프:
  처리량 ↑ = 레이턴시 ↑ (병렬화)
  정확도 ↑ = 처리량 ↓ (검증 단계 추가)

파이프라인 모니터링

지속적 관찰:

1. 각 단계의 성공률
   - Stage 1: 99.5% 성공
   - Stage 2: 95% 성공 (병목!)
   - Stage 3: 98% 성공
   
2. 처리 시간
   - Stage 1: 1초
   - Stage 2: 10초 (병목!)
   - Stage 3: 0.5초
   
3. 오류 분석
   - Stage 2 오류: "관계 추출 실패"
   - 원인: LLM 비용 절감으로 품질 ↓
   - 해결: 더 나은 프롬프트 또는 모델 업그레이드

관련 개념


관련 영상: End to End Ontology Learning with Large Language Models (Video 5)