평가 suite 와 report¶
eval_suite/<name>.yaml¶
schema_version: 1
seeds: [0, 1, 2, 3, 4]
episodes_per_scenario: 5
scenarios:
- {name: nominal, physics: {}}
- {name: long_pole, physics: {length: 0.8}}
- {name: weak_actuator, physics: {force_mag: 7.0}}
gate:
required:
env/success_rate: {min: 0.6}
env/ep_return: {min: 300.0}
p_value: 0.05
effect_size_threshold: 0.8 # Cohen's d
min_relative_drop: 0.02 # 이 비율 미만의 평균 하락은 회귀로 보지 않음
higher_is_better:
env/ep_return: true
custom/fail_rate: false
report.json¶
{
"schema_version": 1,
"policy_ref": {"git": "...", "config_hash": "...", "asset_hash": "...", "image": "..."},
"suite": "eval_suite/default.yaml",
"seeds": [0,1,2,3,4],
"metrics": {"env/success_rate": {"mean": 1.0, "std": 0.0, "per_scenario": {"nominal": 1.0}}},
"per_seed": {"env/success_rate": [1,1,1,1,1]},
"gate": {"required": {...}, "regression_vs": "bare-gym/v2"},
"scenario_defs_hash": "<suite 파일 SHA-256>",
"failure_counts": {"pole_fell": 3}
}
게이트¶
gate.required의min/max를 평균이 만족해야 한다.- 현재
validated정책이 있으면 지표마다per_seed로 Welch t-test. 나쁜 방향이고p < p_value,|d| ≥ effect_size_threshold, 평균 하락폭≥ min_relative_drop이면 실패. - 결과는 런 태그
gate_passedgate_reasonsgate_regression_vs, Pushgatewaylab_gate_passed.
failure_counts 의 키는 eval_suite/failure_types.yaml 의 어휘만 쓴다. 실기 텔레메트리의 result 도 같은 어휘를 써야 real2sim 비교가 된다.
export-check¶
export.py 결과를 ONNX Runtime(CPU) 으로 1000 스텝 추론해 평균 지연이 1000 / io_spec.control_hz ms 미만이어야 한다. 결과는 export/check.json.