Skip to content

2 단계. 코드 준비

이 단계에서는 DAG 파일과 데이터 파일을 준비하고, 인증 정보를 설정한 뒤 Gitea에 push합니다.

이 단계를 마치면 아래 준비가 완료됩니다.

  • DAG 파일과 학습 데이터가 airflow-dag 레포지토리에 추가됨
  • 인증 정보 및 서비스 엔드포인트 설정 완료
  • Gitea에 push → Airflow가 DAG를 인식할 준비 완료

2-1. DAG 파일 구조 이해

이 튜토리얼에서 사용하는 DAG는 아래 5개 Task로 구성됩니다.

load_data → load_model → train_model → evaluate_model → log_to_mlflow
Task 역할
load_data CSV 데이터를 로드하고 /tmp에 저장
load_model XGBoost 모델을 하이퍼파라미터로 초기화
train_model 데이터 전처리(불필요 컬럼 제거, train/test 분리) 후 모델 학습
evaluate_model RMSE, MAE, R² 메트릭 계산
log_to_mlflow 파라미터, 메트릭, 모델 아티팩트를 MLflow에 등록

Task 내부에서 import하는 이유

각 Task 함수 안에서 import pandas as pd처럼 패키지를 import합니다. Airflow는 DAG를 읽는 시점(파싱)과 실제로 Task를 실행하는 시점이 다르기 때문입니다. 함수 안에서 import하면 DAG 파싱 시 패키지가 없어도 오류가 발생하지 않습니다.


2-2. 샘플 파일 준비

DAG 파일(wind_power_prediction.py), 학습 데이터(turbine_data.csv), 모델 다운로드 스크립트(download_model.py)를 airflow-dag 디렉토리에 추가합니다.

Code-server 터미널에서 아래 명령을 실행합니다.

cd ~/airflow-dag

샘플 파일을 다운로드합니다.

wget -O wind_power_prediction.py {샘플-파일-URL}/wind_power_prediction.py
wget -O turbine_data.csv {샘플-파일-URL}/turbine_data.csv
wget -O download_model.py {샘플-파일-URL}/download_model.py

파일이 정상적으로 추가되었는지 확인합니다.

ls

아래와 같이 3개 파일이 보이면 됩니다.

download_model.py  turbine_data.csv  wind_power_prediction.py

2-3. 설정값 입력

두 파일(wind_power_prediction.py, download_model.py)의 상단 설정 섹션을 실제 값으로 교체합니다.

wind_power_prediction.py

Code-server에서 파일을 열고 아래 항목을 수정합니다.

인증 정보

변수 확인 위치
RUNWAY_API_KEY 계정 설정 > 액세스 키 > API 키
AWS_ACCESS_KEY_ID 계정 설정 > 액세스 키 > S3 키
AWS_SECRET_ACCESS_KEY 계정 설정 > 액세스 키 > S3 키

서비스 엔드포인트

변수 확인 위치
MLFLOW_TRACKING_URI 워크스페이스 > 플랫폼 앱 > MLflow 접속 URL
MLFLOW_S3_ENDPOINT_URL 워크스페이스 > 플랫폼 앱 > S3 접속 URL

실험 및 모델 이름

Runway에서 MLflow 실험과 모델 이름은 {프로젝트ID}.{이름} 형식을 따릅니다.

변수 형식 예시
EXPERIMENT_NAME {프로젝트ID}.{실험명} exam2011-ef-02.wind-power-prediction
MODEL_NAME {프로젝트ID}.{모델명} exam2011-ef-02.wind-power-xgboost

프로젝트 ID 확인

프로젝트 ID는 시작 전 준비사항에서 확인한 값을 사용합니다.

인증 정보 보안

이 튜토리얼에서는 학습 목적으로 코드에 직접 입력합니다. 실제 운영 환경에서는 Airflow Variables 또는 Connections를 사용하여 코드에 직접 노출되지 않도록 관리하세요.


download_model.py

이 스크립트는 파이프라인 실행 후 S3에 저장된 모델 파일을 PVC로 다운로드합니다. 아래 항목을 수정합니다.

변수 확인 위치
MLFLOW_S3_ENDPOINT_URL S3 접속 URL 워크스페이스 > 플랫폼 앱 > S3 접속 URL
AWS_ACCESS_KEY_ID S3 액세스 키 ID 계정 설정 > 액세스 키 > S3 키
AWS_SECRET_ACCESS_KEY S3 시크릿 키 계정 설정 > 액세스 키 > S3 키
S3_BUCKET 프로젝트 ID 예: exam2011-ef-02
S3_ARTIFACT_PREFIX mlflow/experiments/{실험명}/models/ EXPERIMENT_NAME. 뒤 부분 사용

S3_ARTIFACT_PREFIX 입력 방법

EXPERIMENT_NAMEexam2011-ef-02.wind-power-prediction이라면, S3_ARTIFACT_PREFIXmlflow/experiments/wind-power-prediction/models/로 입력합니다.


2-4. Gitea에 push

설정이 완료되면 변경 사항을 Gitea에 push합니다.

Code-server 터미널에서 아래 명령을 실행합니다.

cd ~/airflow-dag
git add wind_power_prediction.py turbine_data.csv download_model.py
git commit -m "add wind power prediction DAG"
git push

push가 완료되면 Airflow가 자동으로 DAG를 인식합니다.

반영까지 시간이 걸립니다

Gitea에서 Airflow로 동기화되는 데 약 30초~1분이 소요될 수 있습니다.


다음 단계에서는 Airflow에서 DAG를 확인하고 실행합니다.

3 단계. 파이프라인 실행