로깅과 지표¶
프로젝트는 lab_logging.LabRun 하나만 쓴다.
from lab_logging import LabRun
with LabRun(cfg, run_id=args.run_id, template="bare-gym", robot="sim:gymnasium:cartpole") as run:
run.log(global_step, {"reward/alive": 1.0, "train/kl": 0.01, "env/ep_return": r, "sys/steps_per_s": s, ...})
run.log_checkpoint(path, global_step) # SeaweedFS 업로드 + sys/ckpt_step
run.mark_final_checkpoint(path) # 종료 시 checkpoints/ 에 업로드, 태그 final_checkpoint
자동으로 기록되는 것: 계보 태그, 노드·GPU, 해석된 config(config/resolved.yaml), 5초 집계, NaN 감지(sys/nan_flag), Pushgateway 전송.
지표 이름¶
<group>/<name>, 소문자·숫자·밑줄. group 은 다섯 개뿐이다.
| group | 예 |
|---|---|
reward/ |
reward/<term> — config.reward.terms 의 키와 정확히 일치 |
train/ |
train/loss_value train/loss_policy train/kl train/entropy train/lr train/grad_norm |
env/ |
env/ep_len env/ep_return env/success_rate env/curriculum_level |
sys/ |
sys/steps_per_s sys/gpu_mem_gb sys/nan_flag sys/ckpt_step |
custom/ |
프로젝트 고유 |
필수 지표 (없으면 런 실패): reward/<모든 term> train/loss_value train/loss_policy train/kl env/ep_len env/ep_return sys/steps_per_s sys/nan_flag sys/ckpt_step.
x축은 global_step(환경 스텝 누적). 단위는 SI (m, rad, s, N, N·m). 비율은 0~1 에 _rate 접미사.
MLflow 태그¶
schema_version project template git_hash git_dirty config_hash asset_hash image_digest robot algo priority, 평가 시 suite, 스윕 시 parent_run sweep_id.
아티팩트 경로¶
config/resolved.yaml config/schema_version
checkpoints/step_<n>.pt
eval/<suite>/report.json
export/policy.onnx export/io_spec.json export/check.json
sweep/sweep.json