Airflow를 활용한 Batch Serving

권지수·2024년 12월 19일

Generation for NLP

목록 보기
3/3

1. Batch Processing, Batch Serving

1. Batch Processing: 소프트웨어 프로그램을 자동으로 실행하는 방법, 일정 기간 동안 일괄적으로 '작업을 수행'

2. Batch Serving: 일정 기간 데이터를 수집한 후 일괄적으로 학습 및 예측 결과를 제공하는 방식, 일정 기간 동안 일괄적으로 '머신러닝 예측 작업'을 진행

Batch Processing이 조금 더 큰 개념이며, Batch으로 진행하는 작업에 Airflow을 사용할 수 있다.

Batch Serving은 대량의 데이터를 효율적으로 처리할 수 있으며, 주로 다음과 같은 상황에서 활용됩니다:

  • 모델의 주기적인 학습 (e.g., 1주일 단위 Continuous Training).
  • 일정 주기로 데이터 묶음을 예측 (e.g., 30분, 1시간 단위).
  • 데이터 규모와 목적에 따라 실행 주기가 달라질 수 있음 (일, 주 단위 등).

Batch Serving의 사례

  • 음악 추천 시스템: Spotify의 Discover Weekly와 같은 서비스.
  • 수요 예측: 매장별 제품 수요를 예측하여 재고 및 입고 최적화.
  • 이미지 처리: AWS S3와 같은 저장소의 이미지를 예측.
  • 자연어 처리: 새롭게 추가된 텍스트 데이터를 예측.

2. Apache Airflow

Airflow와 Crontab 비교

Crontab: 리눅스에서 제공하는 시간 기반 작업 스케쥴링 도구이다. 단순한 도구로 간편하지만, 오류 처리, 로그 관리 등의 기능이 제한적이다.
Airflow: 에어비앤비에서 개발한 워크플로우 관리 및 스케쥴링 도구이다. 복잡한 데이터 파이프라인과 작업 간 의존성을 처리하는 데 적합하고 확장성이 뛰어납니다.
DAG(Directed Acyclic Graph) 구조를 통해 작업 간의 의존성을 정의.

Airflow의 핵심 개념

  1. DAGs: Airflow에서 작업을 정의하는 방법, 작업의 흐름과 순서를 정의한다.
  2. Operator: Airflow의 작업 유형을 나타내는 클래스. BashOperator, PythonOperator, SQLOperator 등 다양한 Operator가 있다.
  3. Scheduler: DAGs의 실행을 관리하고 스케쥴링한다. DAGs을 보며 현재 실행해야 하는지 스케줄을 확인한다.
  4. Excutor: 작업이 실행되는 환경.

Airflow의 특징

  1. 확장성
    다양한 Operator(BashOperator, PythonOperator 등)를 활용하여 복잡한 워크플로우를 구현 가능. 또한 외부 서비스와의 통합(AWS, GCP, MySQL 등)을 지원한다.
  2. DAG 기반 워크플로우
    DAG(Directed Acyclic Graph) 구조를 통해 작업 간 의존성을 명확하게 정의할 수 있다. 작업 간 분기(branch 기능 사용)와 병렬 실행, 실패 시 재시도(Slack, 이메일 등으로 알람 제공) 등의 기능을 지원한다.
  3. Web UI
    직관적인 인터페이스를 통해 작업 스케쥴링, 실행 이력 및 상태를 모니터링 할 수 있다. 실행 중인 DAG의 상태를 그래프 또는 캘린더뷰로 확인할 수 있다.
  4. 실시간 관리
    Task 중간 실패 시 특정 Task에서만 재실행이 가능하다. 또한 DAG의 실행 상태를 실시간으로 파악할 수 있다.
  5. 유연성
    코드(Python) 기반으로 작업을 정의할 수 있다. 또한 Jinja 템플릿 등을 통해 매개변수화된 DAG 작성 가능하다.

Airflow 작동원리

기본 아키텍쳐: DAG Directory


여기 안에 DAG 파일들을 저장한다. 계속해서 Scheduler에 의해 .py 파일이 모두 탐색되고 DAG이 파싱된다.

Operator

Operator은 Batch Scheduling을 위한 DAG을 생성한다.

0개의 댓글