Replies: 4 comments
|
Great direction — I did the same kind of measurement over demos and cross-episode stats are genuinely the missing piece; the per-episode measurements floor is well-built but nothing aggregates. On your question 1 (check in checks.py vs catalog-level aggregate): a per-episode check fundamentally cannot compute a coherent cohort statistic, because each check runs against one episode with no view of the cohort. Two clean options:
I'd lean toward option 1 as the primitive (raw measurement in the check) + option 2 as the reusable cohort view in the curation layer — it composes across every existing check (peak_velocity, mean_jerk, duration_s, ...) for free, rather than being action-rate-specific. On naming/units: hflow keys use One edge worth documenting in the design: cohort stats are computed over whatever catalog rows are currently open (the view re-binds per open, per the Happy to help flesh this into a design doc or take a first pass at the cohort view + tests if useful. |
|
Thanks @Sagar-024 for the measured writeup (the live demo is a nice touch), and @ayam04 for the layering analysis, which I agree with. Maintainer take: On question 1 (check vs catalog-level aggregate): the split @ayam04 described is the right one, and it falls straight out of the design tenets:
On question 2 (naming and units): @ayam04 has it right. Use One thing to state explicitly in the docs: cohort statistics are corpus-relative. The z-score depends on which rows the query runs over, including any A PR along those lines would be very welcome: (1) the |
|
Thanks @ayam04 and @kstonekuan for the detailed breakdown. The split makes sense to me now: the check only records the raw per-episode number (action_rate_hz), and the cohort math (z-score, percentile) stays in SQL on the curation side. A check only sees one episode at a time, so it cannot compute cohort stats anyway. I'll take this on. The PR will cover:
Will post the PR link here when it's ready. |
|
Shipped in #40: the |
Uh oh!
There was an error while loading. Please reload this page.
Context
I measured action rate across all 206 demos of a single task in lerobot/pusht (25,650 frames, no model in the loop):
Live demo: https://action-rate-variance.vercel.app
Pareto's shipped per-episode reductions (peak_velocity, mean_jerk, ...) never aggregate across demos, but velocity debiasing needs exactly that cross-episode number. The hflow curation layer (per-episode measurements, cohort statistics, SQL cuts) looks like the natural home for it.
Proposal
A cross-episode variance check that emits, per episode: action rate, cohort mean and std, z-score, percentile. Outlier pruning then becomes one query:
This follows the evidence-not-verdicts rule in checks.py: the check records measurements, the user writes the policy in SQL.
Questions
Happy to write a design doc or open a PR with the metric plus tests.
All reactions