train
Skill3.1k starsChanged 34 days agoApache-2.0View on GitHub
Train a policy in this repository and report what was measured -- pick the backend and the environment count from the machine in front of you, run `scripts/train.py`, read the numbers that say whether it is learning, replay the checkpoint with `scripts/play.py --measure`, and hand over a checkpoint path with measured tracking rather than an assumed success. Use this whenever someone asks for training or for a result from it: "训练一个三足步态", "train tripod", "把 jumper.jump 跑到收敛", "how is the run doing", "is this checkpoint any good", "continue the run from last night", or the README's one-sentence prompt. Reach for it before typing a `--num_envs` copied from a tutorial, because the failures are quiet -- a GPU number on a CPU machine exhausts memory an hour in, a run that "finished" with a flat tracking reward looks like one that learnt, a replay with observation noise off flatters every policy, and a policy from the native backend is reported as if it were the warp one.
8 other projects use a version of this.
Trending
More talk lately.thin dataabout the whole repository
Most recently taken up by
- Lightricks/LTX-2their own version, first seen Nov 8, 2026
- NVIDIA/sports-intelligence-playbookstheir own version, first seen Nov 8, 2026
- vidit19sharma/neogentstheir own version, first seen Nov 1, 2026
- phaddad90/train-conductortheir own version, first seen Oct 14, 2026
- rohanpsingh/LearningHumanoidWalkingtheir own version, first seen Oct 8, 2026
- LockeZeRo/site-buildertheir own version, first seen Aug 28, 2026
Who's talking about KingKongRobotics/jumper
- @pythonhub.dev“Jumper Jumper is an open-source Python toolkit for a 22-DoF crab robot that lets AI coding agents design …”Bluesky · Oct 23, 2026 · 2 likes
- @taea.kani.show“結構デカイのでちくわがびびりそう github.com/KingKongRobo...”Bluesky · Oct 7, 2026 · 2 likes
- A Hacker News story“Jumper – a 22-DoF crab robot”Hacker News · Oct 7, 2026 · 2 points
- A Hacker News story“Jumper – Cute Crab Robot”Hacker News · Oct 4, 2026 · 1 points
The biggest 4 of 4 mentions linking to the repository that our crawl found. Each line is their own headline.
Other versions8 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 8
- Lightricks/LTX-2★ 10ksame name
- rohanpsingh/LearningHumanoidWalking★ 1.2ksame name
- qtzx06/yolodex★ 96same name
- NVIDIA/sports-intelligence-playbooks★ 86same name
- vidit19sharma/neogents★ 1same name
- LockeZeRo/site-builder★ 0same name
- orchimada/judgment-gym★ 0same name
- phaddad90/train-conductor★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
The file
We split this skill into the rules it gives an agent
2 rules. 0 are common, 2 are distinctive, and 0 are very specific to this project.
0
Common
Most of the 8 edited versions we read keep these.
2
Distinctive
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 67
Every iteration prints a block.
- Distinctive: line 134
Do not change a reward weight or a command range to make a run look better.
“Common” is measured: kept by at least 6 in 10 of the 8 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Training a policy
docs/USAGE.md is the manual for the entry points, docs/TUTORIAL.md walks one policy from
training to a bundle, and docs/DESIGN.md §9.2 says why CPU and GPU are not the same run.
This skill does not restate them. It gives the order, the numbers that were measured
here, and the two places where a run goes wrong without saying so.
The one thing to understand first
A finished run is not a result; a measured replay is. train.py stops when its
iteration count is up whether or not the policy learnt anything, and nothing in its last
screen says which. The result of this skill is three things stated together: the checkpoint
path, the backend and environment count it was trained with, and what play --measure read
off it. Leave one out and the next person has a file and a guess.
Procedure
1. Measure the machine before choosing anything
python3 .claude/skills/setup-env/scripts/detect.pyIt says which backend this machine has. warp:cuda on an NVIDIA machine, native:cpu
everywhere else, including all of macOS -- there is no third answer, and --backend auto
(the default) picks the same one. If the environment has never passed gates.py, that is
the setup-env skill, first.
2. Size the run for the backend, not from a page
On the native backend every environment holds its own MjModel and MjData, memory grows
with --num_envs, and the thread pool is capped at 8 (--cpu_threads). Measured on
jumper.tripod, 3 iterations, M3 Max (16 cores, 64 GB), 2026-10-08:
--num_envs | env-steps / s | iteration | note |
| 16 | 454 | 0.84 s | enough to see it run, not to learn |
| 64 | 1777 | 0.86 s | the knee: four times the batch for the same wall time |
| 256 | 1850 | 3.3 s | the pool is saturated; more environments only lengthen each iteration |
So on a CPU machine start at 64, and raise it only when memory says there is room and the
step rate has not flattened. On a GPU, 4096 is the tutorial's number and memory is the only
ceiling. A policy trained at 64 environments is not the policy the GPU recipe produces:
the effective batch is two orders of magnitude smaller, and rl_cfg.py's
num_steps_per_env / learning rate were chosen for the large batch (DESIGN §9.2). Say which
backend the checkpoint came from every time it is mentioned.
Resolve first, then run:
python scripts/train.py --task jumper.tripod --dry-run # the arguments, no build
python scripts/train.py --task jumper.tripod --backend native --device cpu --num_envs 64 --headless--headless when nobody is watching; on macOS the live viewer needs .venv/bin/mjpython
and without it the run goes headless on its own and says so. TensorBoard starts with the
run unless --no-tensorboard; the log directory is printed as [mjrl] log directory ...
and is logs/<model>/<task>/<timestamp>/.
3. Read the run, not the clock
Every iteration prints a block. The lines that say whether it is learning:
Mean rewardrising, and for the locomotion tasks the tracking terms inEpisode_Reward/--track_lin_vel_xy_expandtrack_ang_vel_z_exp-- climbing toward their weights. Flat tracking with a rising mean reward is a policy that found the stand-still or the regularisers and not the command.Mean action stdfalling from 1.0. A std that never moves is a learning rate or a batch that is too small for the signal.Metrics/-- the task's own:slip_velocity_meandown,peak_height_meanup for the gaits.- the curriculum level, where the task has one (
Curriculum/): a ladder that never climbs past level 0 in thousands of iterations is a command range the policy cannot reach.
--resume continues the newest run, --checkpoint <path> a particular one, and
--max-iterations N under either is N more, not N in total (USAGE "Resuming training").
4. Replay with the measurement on
python scripts/play.py --task jumper.tripod --headless --measure --speed 0With no --checkpoint it takes the newest. --measure writes measure.csv and
measure.png into measure/ beside the checkpoint: joint positions, velocities and
actuator torques per control step, which is the evidence a report quotes. Observation
noise stays on by default, as in training -- --no-obs-noise is the clean signal and
flatters the policy, so compare the two rather than reporting only the second. On a
macOS desktop the same command without --headless under .venv/bin/mjpython shows it.
A replay in a Design map (--scene <file>.map) is replay-only; train.py refuses maps,
and that is the documented boundary, not a bug to work around.
5. Report what was measured
The handover is one block, and every number in it came from a run:
checkpoint logs/jumper/jumper.tripod/<timestamp>/model_<N>.pt
backend native:cpu, 64 envs, <N> iterations, <wall time> (or warp:cuda, 4096 envs)
training mean reward <a> -> <b>; tracking lin <x>, ang <y> of weights <wx>, <wy>; level <L>
replay <seconds> s, obs noise on: <what the robot did>; measure/ at <path>"Training took time and compute; here is the checkpoint" is not a report. Neither is a reward number with no backend beside it. When the replay was not run, say so.
6. From here
Exporting the policy and packaging it is the deploy skill, and it begins with
scripts/export.py on the checkpoint this skill ends with. A new task is the new-task
skill, before any of the above.
Failures worth recognising
| symptom | likely cause |
MemoryError, or the machine swaps, an hour in | a GPU --num_envs on the native backend; each environment is a model copy |
warp reports ['cpu'] alone on an NVIDIA machine | the environment, not the run: setup-env, gate A |
| the reward rises and the tracking terms do not | the policy found the regularisers; read the Episode_Reward/ lines, not the total |
Mean action std sits at 1.00 for hundreds of iterations | the batch is too small for the signal: more environments, or the GPU recipe |
| the replay looks better than the training curve | observation noise off (--no-obs-noise); compare with it on |
--max-iterations 100 on a resume stops almost at once | it is 100 more; the run was already past it |
train.py refuses a --scene | an imported .map; maps are replay-only by design |
| the run goes headless on macOS without being asked | python instead of .venv/bin/mjpython; the run is fine, only the window is missing |
When something does not match
Do not change a reward weight or a command range to make a run look better. Those are the
task's decisions (CLAUDE.md, "Where a parameter lives"), and a number moved to fix one
run is a comparison broken for every run after it. Report the run as it was; a tuning
change is a separate, named change with a measurement beside it.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

