duckbatch ·

How small can Microduck's walker get?

Loading results…

Pollen's default walker is a 197,774-parameter network. duckbatch distils it into much smaller students on a single 4 GB laptop GPU. All the attempts share one simulator batch, and pre-registered rules kill or advance them. Decision models (Jev, GLiNER2.5-Decide) are measured against those rules as judges. Simulation only: nothing here has run on a real robot.

Size against walking quality

Each dot is a student that reached the final evaluation: held-out seeds, stumble pushes and domain randomization on, with the teacher in the same run. Walking is measured with the task's deliberate prone spawns and topple pushes off; getting up is measured with every episode spawned prone. The shaded band is the teacher's own spread across seeds; inside it, a student is indistinguishable from the teacher.

Student Teacher (Pollen velstand) Teacher spread across seeds

Planar velocity error, relative to the teacher

Falls per minute (walking)

Gets up from prone within 6 s

Table view

Drive them

Each finalist is a Hub repo in Pollen's policy format (policy.onnx + manifest.json, schema 2). Pollen's browser simulator loads it directly:

The batch: who was cut, and by whom

Successive halving. Every attempt trains in the same env batch, and after each rung the judge decides: the rules first, then a decision model on cases the rules cannot call, then a person. Closed attempts hand their envs to the survivors.

Decision models as judges

Every case is rendered to the same text (numbers, ratios to the teacher, lab conventions; never which rule line was crossed) and every decision model answers every case. On the cases the rules settle, their answers are graded against the rules.

On-device cost

onnxruntime, batch 1, one thread: the way the robot's duck-control runs a policy. Measured on the x86 laptop that trained them, not on the robot's RK3566, so read the ratios, not the microseconds. Int8 is dynamic quantization; drift is the largest action change on recorded observations.

Reproduce

git clone https://github.com/craigm26/duckbatch && cd duckbatch
uv sync --extra sim --extra decide      # Linux / WSL2, CUDA GPU (4 GB is enough)
./scripts/fetch_teachers.sh             # Pollen's policies, pinned + sha256-checked
uv run duckbatch probe                  # how many envs fit on your GPU
uv run duckbatch batch menus/b002-student-size-longer.yaml     # ~70 min on an RTX 3050
uv run duckbatch rejudge records/b002-student-size-longer      # decision-model agreement
# no GPU? run the same menu on Hugging Face Jobs (billed to you):
uv run duckbatch hf-job menus/b002-student-size-longer.yaml --dataset <you>/duckbatch-records