22.1 실험 추적과 결과 관리

실습 · 연습문제 1개

run 기록에서 결과 표 만들기 results-table

여러 run의 기록을 받아, 논문 표의 한 칸에 해당하는 요약을 만든다. 각 run은 다음과 같은 dict다.

{"run_id": "20261107-1500-4de51384",
 "config": {"lr": 0.1, "seed": 1, "epochs": 5},
 "status": "finished",                 # "finished" · "failed" · "running"
 "metrics": {"val_loss": 0.3073}}

함수 summarize(runs, group_by, metric)를 완성한다.

  • group_by는 설정 키의 리스트다(예: ["lr"]). 그룹의 키는 그 값들의 tuple이다(예: (0.1,)). seed는 보통 group_by에 넣지 않는다.
  • 반환값은 {그룹 키: 요약 dict}이고, 요약 dict는 다섯 항목을 가진다.
키 값
mean status == "finished"인 run들의 metric 평균. 끝난 run이 없으면 nan
std 같은 run들의 표본 표준편차(ddof=1). 끝난 run이 2개 미만이면 nan
n 끝난 run의 수
missing 그 그룹에서 끝나지 않은 run(실패·중단)의 수
run_ids 평균에 쓰인 run ID의 정렬된 리스트
  • 모든 그룹이 결과에 나와야 한다. 모든 run이 실패한 그룹도 빠뜨리지 않는다(n = 0).

끝나지 않은 run의 마지막 metric을 평균에 섞으면 표가 틀리고, 조용히 빼면 실패가 숨는다. 이 함수는 둘 다 막는다.