콘텐츠로 이동

Source: report/version10/lab-leader/v10-03_interim_report.md

v10 Interim Report

0. Executive Summary

v10 phase 본 실험 진행 중 train/val/test split 비율 비일관성 발견. 9개 모델이 80/10/10, 3개 모델이 70/10/20으로 학습되어 v10 내부 비교 + v9 baseline 인용 모두 신뢰성 훼손. 7:1:2로 통일 결정 (v6/v9 계승).

기존 80/10/10 결과는 v10 내부 상대 비교 한정 valid — split 통일 후 전체 재학습 예정. 본 보고서는 split 수정 결정 + 잠정 결과 + baseline 구성 정리.

1. 핵심 발견

1.1 Split 비율 비일관성

모델 그룹 TRAIN/VAL/TEST 일치
E1 NBEATSx+DecompCB, E2 NHITS+FreqBand 0.8 / 0.1 / 0.1 v10-02 §3.3 숫자 따름
E3 SCINet+RQ, E4 Crossformer+PQ 0.7 / 0.1 / 0.2 v6/v9 (§3.3 "v6 계승") 따름
B0 Local DLinear, B1 FedAvg DLinear 0.8 / 0.1 / 0.1 80/10/10
B2 NBEATSx noVQ, B3 NHITS noVQ 0.8 / 0.1 / 0.1 80/10/10
B4 Crossformer noVQ 0.7 / 0.1 / 0.2 70/10/20
Phase1 NF 6 Local 0.8 / 0.1 / 0.1 80/10/10

원인: v10-02 설계서 §3.3이 "v6 계승" 명시 + "80/10/10" 숫자 적음 → v6 실제 70/10/20인데 설계자 오기. engineer 일부는 docstring "v6 계승" 보고 70/10/20, 일부는 숫자 80/10/10 따름.

1.2 Split 통일 결정: 7:1:2

선정 근거: 1. v6/v9 baseline 직접 비교 가능 — v9-01 14모델 인용 무효화 회피 2. Phase 연속성 — v9-05/06과 동일 3. Test sample 신뢰성 — 가구당 600-1000 test windows로 PAPE/HR std 안정 4. v6 계승 명시 의도 — 설계서가 표명한 본래 의도

1.3 가구 사용 검증

카테고리 Train 50 가구 사용 Cold 50 가구 사용
VQ FL (E1-E4) ✅ 학습 + VQ 업데이트 ❌ 미실행
FedAvg baseline (B1-B4) ✅ 학습 ❌ 미실행
Local baseline (B0, Phase1 6) ✅ 가구별 독립 학습 ❌ 미실행

Cold 50 가구는 모든 모델에서 평가 누락 — 사용자 의도 "VQ 업데이트 없이 학습-평가" 미실행. Task #19 cold-start phase로 후속 처리 예정.

1.4 Baseline 구성 (현 시점)

3 카테고리 정리: - Local-only (가구별 독립 학습-평가): B0 DLinear, Phase1 NHITS/NBEATSx/PatchTST/iTransformer/TFT/TimesNet — 사용자가 말한 "각 가구에 대해 학습-평가" 정확히 부합 - FedAvg no-VQ (FL, VQ 없음): B1 DLinear, B2 NBEATSx, B3 NHITS, B4 Crossformer — VQ ablation - VQ FL (FL + VQ codebook 업데이트): E1 NBEATSx+DecompCB, E2 NHITS+FreqBand, E3 SCINet+RQ, E4 Crossformer+PQ

2. 부분 결과 (80/10/10, v10 내부 상대 비교 한정 valid)

Rank 모델 카테고리 PAPE HR@1 HR@2 MSE
1 B0 Local DLinear Local 35.43 21.79 0.516
2 B1 FedAvg DLinear FedAvg 39.45 20.00 37.14 0.565
3 E1 NBEATSx+DecompCB VQ FL 47.30 14.29 14.29* 0.647
4 E4 Crossformer+PQ VQ FL 62.61 12.76 20.49 0.664
5 E2 NHITS+FreqBand VQ FL 65.86 8.32 12.48 0.362

*E1 hr_tol2 = hr_tol1 단일-apt 데이터 특성 (단일 가구 35 test windows, tol=2 추가 hit 없음). 50 가구 평균에서는 분리됨 예상.

관찰 (잠정): - VQ 모델 3종 모두 simple DLinear baseline에 미달 — collapse + commitment loss overhead로 학습 어려움 - E2 NHITS+FreqBand 가장 약함 (val 발산 + collapse 강함) - E1 NBEATSx+DecompCB가 VQ 그룹 최선이나 B0 대비 −12%p 미달 - v6/v9 baseline (B0=42.51, B1=43.64, NHITS=39.26, R1b=37.36) 인용 비교는 split 다름으로 무효

경고: 위 결과는 80/10/10 split. 7:1:2 재학습 후 전체 재산출 필수.

3. Phase1 Smoke 결과 (1 apt × seed=42, 참고용)

50 apt 본 실행은 split 통일 후 재시작 예정. Smoke 잠정 ranking:

모델 smoke PAPE smoke HR@1
iTransformer 25.55 20.00
PatchTST 34.07 22.86
NHITS 42.41 17.14
NBEATSx 44.84 14.29
TimesNet 42.65 5.71
TFT 51.96 0.00

단일 가구이므로 신뢰도 낮음. 본 실행 결과 대기.

4. 다음 단계

4.1 즉시 (split 통일)

  1. ✅ 진행 중 13개 process 모두 중단 (완료)
  2. engineer 일괄 패치: 모든 v10 스크립트 TRAIN_RATIO 0.8→0.7, TEST 0.1→0.2 변경
  3. 재학습 launch: 10+ 모델 병렬 launch (E3/E4/B4 그대로 재학습 권장 — 통일 일관성 위해)
  4. VQ FL: E1, E2, E3, E4 (4)
  5. FedAvg no-VQ: B1, B2, B3, B4 (4)
  6. Local: B0, Phase1 NF 6 (7)
  7. 합계 15 모델 재학습

4.2 후속 (Cold 50 평가)

설계서 §7 / Task #19 cold-start CS0-CS3 프로토콜 활성화: - CS0 Scratch (가구별 자체 학습) - CS1 Zero-shot (FL global model + codebook 그대로 적용) - CS2 Few-shot frac=0.1 (head fine-tune, codebook frozen ← 사용자 의도 정확히 매칭) - CS3 Few-shot frac=0.3

각 모델(VQ + Local + FedAvg) × 4 cold protocol → cold 50 가구 평가.

4.3 분석/보고

  • exp-expert × N 병렬 분석 (모델별 또는 카테고리별)
  • exp-critic 적대 리뷰 (split 수정 보강 effect, 통계 신뢰성)
  • reporter 종합

5. 한계 및 자기-인정

  1. Split 비일관 발견 늦음 — engineer 5명에게 분산 배포 시 split 정합성 검증 단위 테스트 부재. 향후 phase에서 강제화 필요
  2. 80/10/10 결과 폐기 — wall-clock 누적 약 4시간 손실
  3. Cold 50 가구 평가 설계 단계에서 본 실험 누락 — Task #19로 분리됐으나 가시성 약함
  4. E1 hr_tol2 == hr_tol1: 데이터 특성 확인됨 (버그 아님), 50 apt 평균 시 정상 분리 기대

6. 산출물 경로

  • 본 보고서: report/version10/lab-leader/v10-03_interim_report.md
  • 설계서: report/version10/lab-leader/v10-02_vq_multi_model_design.md
  • ADR: docs/decisions/ADR-010_v9_baseline_to_v10_vq_multi_model.md
  • MLflow experiment: v10-multi-model-vq (이전 80/10/10 run은 KILLED 처리, 7/1/2 재학습 예정)
  • 데이터 split: configs/v10_households.yaml (50 train + 50 cold, seed=43, KL=0.16)

7. 다음 세션 행동 지침 (Resume Point)

7.1 진입 시 즉시 확인

1. engineer Task #30 (split 7:1:2 일괄 통일 + 15 모델 재학습 launch) 완료 여부

# Task #30 결과 확인 — agent 완료 알림 또는 결과 파일
cat C:\Users\HOME\AppData\Local\Temp\claude\...\tasks\adc274f0e27ecd9da.output

확인 항목: - 7개 스크립트 split 0.7로 패치 완료 (E1/E2/B0/B1/B2/B3/Phase1) - 단위 테스트 전부 pass - 15개 모델 launch 완료 (PID/bash ID list)

2. 진행 상태 측정

# GPU + log + MLflow 일괄 확인
nvidia-smi --query-gpu=memory.used,memory.free,utilization.gpu --format=csv
ls outputs/v10_main_run/logs/ | grep -v smoke
python -c "
import mlflow; mlflow.set_tracking_uri('file:./mlruns')
c = mlflow.tracking.MlflowClient()
for e in c.search_experiments():
    if e.name == 'v10-multi-model-vq':
        for r in c.search_runs([e.experiment_id], max_results=300):
            if r.info.status == 'RUNNING':
                h = c.get_metric_history(r.info.run_id, 'round_val_pape')
                print(f'  {r.info.run_name:45s} rounds={len(h)}')
"

7.2 15 모델 재학습 완료까지 (예상 wall-clock)

  • VQ FL 4 (E1-E4): 30 round × ~2분 (bf16+batch128 가속) = 60분
  • FedAvg 4 (B1-B4): 동일 ~60분
  • Local 7 (B0 + Phase1 6): 가구별 학습, 가구당 30초-1분 × 50 = 25-50분
  • 15 모델 병렬 시 wall-clock: 60-90분 (GPU compute SM 시분할로 배수 효과 약함)
  • E3 SCINet은 단독 시 가장 무거움 — 다른 모델 종료 후 가속 가능

7.3 재학습 완료 후 순서

Step 1: 결과 집계 (orchestrator)

# 모든 FINISHED v10 모델 집계 — 7:1:2 split run만 (split_version 필터)
# 표 작성: 15 모델 PAPE/HR@1/HR@2/MSE

Step 2: exp-expert × N 병렬 분석 dispatch (Task #18)

각 모델 카테고리별 expert 4명 병렬: - Expert A: VQ FL 4종 (E1-E4) 분석 + H10-1~5 가설 검증 - Expert B: FedAvg no-VQ 4종 (B1-B4) 분석 + VQ ablation 효과 - Expert C: Local 7종 (B0 + Phase1 6) 분석 + v9 baseline 비교 가능 (split 일치) - Expert D: 통합 비교 표 (15 모델) + 통신 효율 (PAPE per KB)

critic hook 자동 트리거 — expert별 적대 리뷰 → revision cycle.

Step 3: Cold-start phase 활성화 (Task #19)

설계서 §7 CS0-CS3 프로토콜 실행: - CS0 Scratch: 50 cold 가구별 자체 학습 (각 모델 5분 정도) - CS1 Zero-shot: FL 글로벌 모델 + codebook 그대로 50 cold에 적용 (학습 없음) - CS2 Few-shot frac=0.1: 10% 데이터로 head 만 fine-tune, codebook frozen ← 사용자 의도 정확히 반영 - CS3 Few-shot frac=0.3: 30% 데이터 동일 프로토콜

engineer dispatch 필요experiments/federated/v10_cold_start_eval.py 신규 작성: - 4 cold protocol × 15 모델 = 60 evaluation runs - CS1은 inference only (가장 빠름) - CS2/CS3는 head fine-tune (가구별 ~1-2분)

Step 4: reporter 종합 (Task #21)

report/reporter/v10_summary.md 작성: - 15 모델 × 5 평가 모드 (test on train 50 + CS0/CS1/CS2/CS3 on cold 50) 통합 표 - v9-01 14 baseline 인용 (split 일치로 직접 비교) - VQ vs no-VQ ablation (E1 vs B2, E2 vs B3, E4 vs B4) - H10-1~H10-5 가설 판정 - 사용자 결정 필요 사항 정리

7.4 핵심 비교축 (재학습 완료 시 작성할 표)

Test on train 50 가구 (가구별 70/10/20 test split, 직접 비교)

Category Model PAPE HR@1 HR@2 MSE bytes/round
Local B0 DLinear ? ? ? ? 0
Local NHITS ? ? ? ? 0
Local NBEATSx ? ? ? ? 0
Local PatchTST ? ? ? ? 0
Local iTransformer ? ? ? ? 0
Local TFT ? ? ? ? 0
Local TimesNet ? ? ? ? 0
FedAvg no-VQ B1 DLinear ? ? ? ? ~19K
FedAvg no-VQ B2 NBEATSx ? ? ? ? ~263K
FedAvg no-VQ B3 NHITS ? ? ? ? ~91K
FedAvg no-VQ B4 Crossformer ? ? ? ? ~454K
VQ FL E1 NBEATSx+DecompCB ? ? ? ? 24.6K
VQ FL E2 NHITS+FreqBand ? ? ? ? 24.6K
VQ FL E3 SCINet+RQ ? ? ? ? 12.3K
VQ FL E4 Crossformer+PQ ? ? ? ? 4.1K
(참고) v9-01 인용 NHITS / R1b / Chronos / ... 39.26 / 37.36 / 44.98 / ...

Cold 50 가구 평가 (Step 3 완료 후)

Model CS0 Scratch CS1 Zero-shot CS2 Few-shot 10% CS3 Few-shot 30%
... ... ... ... ...

7.5 사용자 결정 필요 사항 (재학습 완료 후)

  1. Cold-start phase 착수 여부: CS0-CS3 4 프로토콜 × 15 모델 = 60 runs. 약 2-3시간.
  2. Watch 정의: v9-05 (OR) vs v9-06 (AND) 중 표준 채택 (v9-06 critic Major 1 미해결 사항)
  3. 추가 multi-seed 검증: seed=42 단일 → seed=7, 123 추가하여 std/CI 측정 (각 15 모델 × 추가 2 seed = 30 추가 run)
  4. VQ 후보 진출 여부: VQ FL 4종 중 어느 모델이 Watch 통과하면 추가 phase 진입

7.6 위험 요소

  • VQ 모델 collapse 재발: 80/10/10 run에서 4 모델 모두 collapse. 7:1:2 재학습에서도 재현될 가능성 높음 — γ=0.8 rollback 발동 가능
  • E2 NHITS+FreqBand val 발산: 7:1:2에서도 재현 시 학습 dynamics 자체 문제 — 코드 수정 필요할 수도
  • GPU 시간 누적: 재학습(~90분) + cold-start(~3h) + 분석/보고(~1-2h) = 5-6시간. 단일 세션 한계 가능

7.7 메모리 갱신

다음 세션 시작 시 MEMORY.md + project_v10_phase_resume_point.md 확인: - v10 phase 진행 단계 (split 통일 → 재학습 → 분석/cold-start → 종합) - 80/10/10 결과 폐기 사실 (잠정 결과만 v10-03에 보존) - 7:1:2 통일이 v6/v9 baseline 직접 비교 가능하게 한 점


변경 이력

  • 2026-04-25 (interim): split 비일관 발견 + 7:1:2 통일 결정 + 80/10/10 결과 폐기 + 재학습 launch (Task #30) + 다음 세션 행동 지침 추가