콘텐츠로 이동

실험6 설계: FeDPM Codebook MVP — 연합학습 가능성 + 피크 성능 확인

날짜: 2026-04-15 담당: lab-leader Status: Planned 참고: todos/track-d_codebook_mvp.md, FeDPM 논문(arXiv 2604.04475v1)


목표

두 가지 핵심 질문에 최단 경로로 답한다.

  1. 연합학습이 동일 도메인(에너지 가구)에서 동작하는가? — FeDPM codebook 교환이 개별 학습(B0) 및 기본 FL(B1) 대비 MSE 이점을 보이는가
  2. apt별 Peak 예측 성능(PAPE)이 향상되는가? — Peak-Weighted Loss(P1)와 Residual Path(R1)의 순차적 효과

가설

ID 가설 검증 기준
H6-1 Vanilla FeDPM(V1)은 FedAvg+DLinear(B1)과 동등하거나 낮은 MSE를 달성한다 V1 mean MSE ≤ B1 mean MSE
H6-2 Peak-Weighted Loss(P1)는 V1 대비 mean PAPE를 낮춘다 P1 mean PAPE < V1 mean PAPE
H6-3 로컬 Residual Path(R1) 추가 시 Phase 2 최선 대비 PAPE가 추가로 낮아진다 R1 mean PAPE < P2_best mean PAPE

데이터 설정

항목 근거
데이터 EC50 중 5가구 (Apt6, Apt15, Apt30, Apt51, Apt88) Phase 2 A1 baseline과 동일 → 직접 비교 가능
각 가구 = 1 client 5 clients MVP 규모로 충분
seq_len 96 FeDPM 기본값, 기존 실험 통일
pred_len 24 기존 실험 통일
Frequency 1 hour EC50
Channel 1 (단변량) FeDPM channel-independent 전략 그대로 적용
Train/val/test split Phase 2 A1과 동일 기준 직접 비교를 위한 선결 조건

FeDPM 하이퍼파라미터

항목 논문 값 MVP 값 근거
Memory size M 256 64 MVP 축소. 5가구로 codebook이 작아도 됨
Prototype dim D 64 64 유지
Patch length S_n 4 4 seq_len=96 → 24 patches
Patch stride 4 4 논문 기본
Shared ratio γ 0.95 0.8 동일 도메인이므로 shared 비율 약간 낮춰 개인화 여지 확보
Similarity threshold δ 0.7 0.7 유지 (실험 전 확인 요망)
Commitment β 0.25 0.25 유지
Optimizer Adam Adam
Learning rate 1e-5 1e-4 경량 모델 상향 (이상 시 1e-5로 하향)
Local epochs E 5 5 유지
FL rounds T 100 30 MVP 축소. early stopping patience=5
Batch size 24 32 기존 실험 통일

Encoder 선택 근거

FeDPM Table 5 encoder ablation (Electricity 데이터셋):

Encoder MSE 선택
Transformer 0.209
CNN 0.220 MVP 선택
RNN 0.221
FC 0.842 부적합

CNN encoder: Transformer 대비 소폭 성능 하락이나 경량. FC는 에너지 도메인에서 +303%로 부적합.

추정 파라미터: - Patch projection: ~320 - CNN Encoder 2-layer Conv1d: ~25K - VQ Codebook (64×64): 4,096 - CNN Decoder 2-layer Conv1d: ~25K - Linear head: ~1.5K - Total: ~56K (코드 확인 후 실제 값으로 업데이트)


실험 조건 매트릭스

Phase 1: FL 동작 확인 (B0, B1, V1)

Run ID 설정 목적 B0 MSE B0 PAPE
B0 Individual DLinear per apt Phase 2 A1 baseline (이미 확보) 0.5223 (mean) 42.55% (mean)
B1 FedAvg + DLinear (5 clients) 기본 FL 비교 대상
V1 Vanilla FeDPM (CNN+VQ+alignment) 핵심: FL codebook 동작 여부

Loss (V1): L = SmoothL1(ŷ, y) + β·||Z - sg(Ẑ)||² + ||sg(Z) - Ẑ||²

Phase 2: Peak-Weighted Loss 효과 (P1)

Run ID Loss 비고
V1 SmoothL1 원본 Phase 1 결과 재사용
P1 Peak-Weighted SmoothL1 w_t = 1 + α·(x_t / max(x)), α=2.0

Phase 3: Residual Path 추가 (R1)

Run ID 구성 Residual 공유
R1 Phase 2 최선 + Residual MLP 로컬 (공유 안 함)

Residual MLP: MLP(96→48→24), ~5K params. 로컬 유지 → 개인화 + privacy 보호.


전체 흐름 및 분기

Phase 1: B0 (기확보) / B1 + V1 실행
  ├─ FAIL: V1 mean MSE > B1 mean MSE
  │   → FeDPM 동일 도메인 부적합 판정
  │   → track-d 종료. 패러다임 A+E 전환 (lab-leader 결정)
  ├─ SUB-FAIL: Codebook utilization < 30%
  │   → M=64 → M=32 축소 재실험 (V1 재실행)
  └─ PASS: V1 mean MSE ≤ B1 mean MSE
       Phase 2: V1 vs P1 (Peak-Weighted Loss)
         ├─ FAIL: P1 mean PAPE ≥ V1 mean PAPE
         │   → Peak weighting 무효. V1이 최종
         │   → Phase 3 생략하고 보고서 단계로
         └─ PASS: P1 mean PAPE < V1 mean PAPE
              Phase 3: P1 + Residual Path → R1
                ├─ FAIL: R1 mean PAPE ≥ P1 mean PAPE
                │   → Residual 무효. P1이 최종
                └─ PASS: R1이 최종
                     exp-critic 리뷰

태스크 분해 및 담당

T6-0. 실험 착수 전 확인 (exp-expert) — 선결 조건

  • FeDPM 코드 접근 확인: anonymous.4open.science/r/FedUnit-64D1
  • 코드에서 CNN encoder 정확한 구조 및 파라미터 수 확인 (추정값 업데이트)
  • EC50 데이터 5가구 train/val/test split 방식 확인 (Phase 2 A1과 동일 기준인지)
  • δ=0.7 threshold 동일 도메인 적절성 확인 (대부분 연결될 경우 γ=0.8 조정 여부)

T6-1. FeDPM 코드 포팅 및 데이터 연동 (engineer)

  • 파일명: experiments/distillation/v6_0415_fedpm_mvp.py
  • 내용:
  • FeDPM 원본 코드(CNN encoder + VQ codebook + Memory Alignment) 포팅
  • EC50 5가구 데이터 로더 연동 (기존 DataLoader 재사용 우선)
  • FedAvg+DLinear baseline (B1) 구현
  • MLflow 로깅: run_id, apt, MSE, MAE, PAPE, codebook_utilization 기록
  • config.py에 하이퍼파라미터 상수 정의
  • 출력: outputs/fedpm_mvp/
  • 선결 조건: T6-0 완료

T6-2. Peak-Weighted Loss + Residual Path 구현 (engineer)

  • 파일명: experiments/distillation/v6_0415_fedpm_peak.py (또는 T6-1 스크립트 내 추가 옵션)
  • 내용:
  • peak_weighted_smooth_l1(pred, target, alpha=2.0) 구현
  • Residual MLP(96→48→24) 모듈 구현 (로컬, FL 비공유)
  • Phase 2(P1), Phase 3(R1) CLI 옵션으로 제어 가능하게
  • 선결 조건: T6-1 완료 (VQ 파이프라인 동작 확인 후)

T6-3. pytest 테스트 작성 (engineer)

  • 파일명: tests/test_fedpm_mvp.py
  • 커버리지:
  • CNN encoder forward pass 형상 검증 (B, 24, D) 출력
  • VQ codebook lookup 정상 작동 (commitment loss ≥ 0)
  • peak_weighted_smooth_l1: 피크 시점 가중치 > 비피크 시점 가중치 검증
  • Residual Path: |Y_r| 비어있지 않음, Y_q + Y_r 형상 일치
  • 선결 조건: T6-1 + T6-2 완료

T6-4. Phase 1 실험 실행 — B1 + V1 (exp-expert)

  • 실행: uv run python experiments/distillation/v6_0415_fedpm_mvp.py --phase 1
  • 기록 항목: apt별 MSE, MAE, PAPE, codebook_utilization (V1만)
  • 이상 시: PAPE > 80% 또는 NaN → 해당 apt 단독 재실행 후 원인 분석
  • 선결 조건: T6-1 + T6-3 완료 (pytest 통과)

T6-5. Phase 1 자기 평가 및 Gate 판정 (exp-expert)

  • H6-1 판정: V1 mean MSE vs B1 mean MSE
  • Codebook utilization 확인 (< 30%이면 M=32 재실험)
  • 선결 조건: T6-4 완료

T6-6. Phase 2 실험 실행 — P1 (exp-expert)

  • 실행: uv run python experiments/distillation/v6_0415_fedpm_peak.py --phase 2
  • 선결 조건: T6-5 PASS + T6-2 완료

T6-7. Phase 3 실험 실행 — R1 (exp-expert)

  • 실행: uv run python experiments/distillation/v6_0415_fedpm_peak.py --phase 3
  • 분석: |Y_r| 피크 시점 vs 비피크 시점 크기 비교
  • 선결 조건: T6-6 완료

T6-8. 전체 결과 자기 평가 (exp-expert)

  • H6-1/H6-2/H6-3 최종 판정
  • 보고 테이블 완성:
| Apt   | B0 MSE | B0 PAPE | B1 MSE | B1 PAPE | V1 MSE | V1 PAPE | P1 PAPE | R1 PAPE |
|-------|--------|---------|--------|---------|--------|---------|---------|---------|
| Apt6  | 0.776  | 40.96   |        |         |        |         |         |         |
| Apt15 | 0.154  | 38.25   |        |         |        |         |         |         |
| Apt30 | 0.089  | 41.86   |        |         |        |         |         |         |
| Apt51 | 0.683  | 46.89   |        |         |        |         |         |         |
| Apt88 | 0.911  | 44.80   |        |         |        |         |         |         |
| Mean  | 0.522  | 42.55   |        |         |        |         |         |         |
  • 체크리스트:
  • PAPE 해석 방향 확인 (낮을수록 좋음)
  • V1 codebook utilization 수치 기록
  • Phase 분기 결과 및 최종 채택 모델 명시
  • Residual 분석: |Y_r| 피크 보정 여부
  • 선결 조건: T6-7 (또는 최종 통과 Phase) 완료

T6-9. exp-critic 리뷰

  • 검토 항목:
  • B0와 B1 비교 공정성 (동일 split 여부)
  • V1 codebook utilization 해석 타당성
  • Peak-Weighted Loss α=2.0 선택 근거 (임의값 여부)
  • Residual Path 로컬 유지 결정의 privacy 주장 타당성
  • n=5 가구로 결론 일반화 한계 명시 여부
  • 선결 조건: T6-8 완료

T6-10. 실험 보고서 작성 (reporter)

  • 파일명: report/exp-expert/v6_0415_exp6_fedpm_mvp_report.md
  • 선결 조건: T6-9 통과

의존성 그래프

T6-0 (exp-expert: 착수 전 확인)
    ├─→ T6-1 (engineer: FeDPM 포팅) ──────────────────────┐
    │                                                       │
    └─→ (T6-2는 T6-1 완료 후) T6-2 (engineer: Peak+Residual) ─┐
         T6-1 + T6-2 완료 → T6-3 (engineer: pytest)          │
                                    │                          │
                                    ↓                          │
                              T6-4 (exp-expert: Phase 1 실행) ◄┘
                              T6-5 (exp-expert: Gate 판정)
                                    │ PASS
                              T6-6 (exp-expert: Phase 2)
                                    │ PASS
                              T6-7 (exp-expert: Phase 3)
                              T6-8 (exp-expert: 자기 평가)
                              T6-9 (exp-critic: 리뷰)
                                    │ 통과
                              T6-10 (reporter: 보고서)

병렬 가능: T6-1과 T6-0 확인 작업 동시 진행 가능.


타임라인

일자 태스크 예상 소요
2026-04-15 AM T6-0: 코드/데이터 확인 1~2시간
2026-04-15 PM T6-1 + T6-2 병렬 구현 3~4시간
2026-04-15 PM T6-3: pytest 1시간
2026-04-15 ~ 16 T6-4~T6-7: 실험 실행 8~16시간 (GPU 30 rounds × 5 clients × 5 epochs)
2026-04-16 T6-8~T6-10: 평가 + 리뷰 + 보고서 2~3시간
총 예상 1~2일

리스크 관리

리스크 영향 태스크 대응
FeDPM 코드 접근 불가 (익명 링크 만료) T6-0, T6-1 논문 Algorithm 섹션 기반 직접 구현. CNN encoder는 이미 추정 구조 있음
Codebook utilization < 30% (동일 도메인 과도한 공유) T6-5 M=64 → M=32 축소 재실험. δ=0.7 → 0.5 낮춰 diversity 확보
V1 MSE > B1 MSE (FeDPM 동일 도메인 부적합) T6-5 track-d 종료 판정. 패러다임 A(Chronos KD) + E(개인화 FL) 전환
α=2.0 Peak-Weighted Loss 과도한 피크 집중으로 MSE 악화 T6-6 α=1.0 보조 실험 추가 후 선택
Residual Path가 VQ path를 무시하고 전체 예측 담당 T6-7 |Y_q| vs |Y_r| 크기 비교 로그 추가 의무화
n=5 가구로 통계적 일반화 불가 T6-9 exp-critic에서 한계 명시 강제. 논문 contribution은 FL 메커니즘 검증에 한정

Phase 4 (별도, MVP 범위 외)

Phase 1~3 결과가 긍정적이면 다음 세션에서 설계: - Chronos-Bolt frozen inference로 soft target 사전 생성 (인프라 기확보) - FeDPM loss에 + λ_kd · MSE(ŷ, y_chronos) 추가 - FeDPM 메커니즘과 독립 평가


다음 세션 착수 순서

  1. T6-0 (exp-expert): FeDPM 코드 접근 및 CNN encoder 구조 확인
  2. T6-1 + T6-0 병렬: engineer FeDPM 포팅 착수 (T6-0 확인 결과 반영)
  3. T6-1 완료 → T6-2 engineer Peak+Residual 구현
  4. T6-1 + T6-2 완료 → T6-3 pytest 실행 (모두 통과해야 T6-4 진행)
  5. T6-4 exp-expert Phase 1 실행 → T6-5 Gate 판정