CDP 규칙 가이드
YAML 설정 파일 규칙
프레임워크가 읽는 3개 파일 — 무엇을, 어디에, 어떻게 작성하는가
YAML 설정 규칙
3개 파일의 역할 분리와 작성 방법
project/
├── project.yaml ← 팀 공통 (프로젝트 전체)
└── {experiment_topic}_{algorithm}/ ← 내 실험 디렉토리
└── config/
├── model.yaml ← 실험 정의 (필수)
└── user.yaml ← 실험 메모 (선택)
ℹ️ 3개 외에 yaml 파일을 추가하면 안 됩니다. 프레임워크는 이 3개만 인식합니다.
project.yaml — 팀 공통 설정
팀 내 모든 DS가 동일한 project.yaml을 공유합니다. 프로젝트 시작 시 팀 리드가 작성하고, DS 추가 시 workers_id만 업데이트합니다.
📋 복사해서 붙여넣기
# project/project.yaml
project_nm: ml_lab_test # 프로젝트 식별자 (S3 경로, MLflow에 사용)
region: ap-northeast-2 # AWS 리전
workers_id: # 이 프로젝트에 참여하는 DS 목록
- hjsong
- jylee
- mskim
environments:
dev:
bucket: gs-cdp-mllab-dev # S3 버킷 (개발용)
mlflow_url: https://dpa-mlflow.dp.gslook.com/
prd:
bucket: gs-cdp-mllab-prd # S3 버킷 (운영용)
mlflow_url: https://dpa-mlflow.dp.gslook.com/
| 규칙 | 내용 |
|---|---|
workers_id 사전 등록 필수 | 목록에 없는 worker_id로 실행 시 ValueError 즉시 발생 |
environments 키 선택 | dev 또는 prd 중 하나 (model.yaml의 env_nm이 결정) |
project_nm 변경 금지 | S3 경로와 MLflow experiment_name에 사용되므로 중간 변경 금지 |
⚠️ 새 DS가 합류하면 첫 실험 실행 전에
workers_id에 추가해야 합니다. 먼저 추가하지 않으면 실행 즉시 에러가 납니다.model.yaml — 실험 정의
내 실험 하나를 정의하는 파일입니다. 실험마다 DS가 직접 작성합니다.
📋 복사해서 붙여넣기
# project/{model_dir}/config/model.yaml
worker_id: hjsong # 본인 ID (project.yaml workers_id에 있어야 함)
experiment_topic: titanic_survival # 실험 주제 (영문, 언더스코어)
algorithm: lightgbm # 사용 알고리즘
env_nm: dev # environments 키 선택: dev 또는 prd
data_sources:
- name: train
path: s3://gs-cdp-mllab-dev/titanic/data/train.csv
- name: test
path: s3://gs-cdp-mllab-dev/titanic/data/test.csv
algorithm_params: # 하이퍼파라미터 (자유롭게 추가 가능)
n_estimators: 300
learning_rate: 0.05
max_depth: 6
num_leaves: 31
task_type: classification # classification / regression / ranking / clustering
target_col: Survived
디렉토리명 = experiment_topic + "_" + algorithm
model.yaml 내용:
experiment_topic: titanic_survival
algorithm: lightgbm
→ 디렉토리명 반드시: titanic_survival_lightgbm/
⚠️ 이 이름이 불일치하면
ValueError 발생합니다.env_nm으로 환경 선택
env_nm: dev # → project.yaml의 environments.dev.bucket 사용
env_nm: prd # → project.yaml의 environments.prd.bucket 사용
user.yaml — 실험 메모 (선택)
📋 복사해서 붙여넣기
# project/{model_dir}/config/user.yaml
# 자유 형식 — 아무 필드나 추가 가능
experiment_note: "encoding v2 적용 버전. 이전 버전 대비 AUC +0.03"
reference_run: "20260520_143012_a3f9bc"
data_version: "2026-05-01 기준 스냅샷"
ℹ️ 인증 정보(
AWS_PROFILE, EXECUTOR_ID)는 user.yaml이 아니라 project/.env에서 관리합니다.ctx API로 YAML 필드 접근하기
📋 복사해서 붙여넣기
# project.yaml 필드 접근
project_nm = ctx.project['project_nm']
bucket = ctx.project['environments'][ctx.project['env_nm']]['bucket']
# model.yaml 필드 접근
worker_id = ctx.model['worker_id']
n_est = ctx.model['algorithm_params']['n_estimators']
task_type = ctx.model['task_type']
# user.yaml 필드 접근 (없으면 None)
note = ctx.user.get('experiment_note') if ctx.user else None
커스텀 필드 추가
# model.yaml에 추가
threshold: 0.45
feature_version: v3
# 노트북에서 사용
threshold = ctx.model['threshold']
⚠️ 예약어는 커스텀 키로 사용할 수 없습니다. 아래 목록 참조.
예약어 목록
# 실행 메타
run_id test_dt current_dt dry_run
stage run_name run_name_base
# 경로
project_root model_dir_name runs_root run_dir
input_dir output_dir artifacts_dir
# 시스템
logger
# MLflow
mlflow_experiment_name
# Git
commit_hash commit_msg branch_name
# 실행 정보
config_hashes duration_seconds keep_local_runs
DO / DON'T 요약
| 상황 | ✅ DO | ❌ DON'T |
|---|---|---|
| 새 실험 시작 | model.yaml 작성 후 디렉토리명 일치 확인 | 디렉토리명과 yaml 따로 관리 |
| 새 DS 합류 | workers_id에 먼저 추가 후 실험 | 추가 없이 실험 실행 → 에러 |
| 설정값 관리 | model.yaml에 필드 추가 | 노트북 코드에 하드코딩 |
| 실험 메모 | user.yaml에 자유 기록 | 새 yaml 파일 추가 |
| 인증 정보 | project/.env 관리 | user.yaml 또는 model.yaml에 기재 |
| 예약어 키 | 다른 이름 사용 | run_id, test_dt 등 예약어 사용 |