Work log · Distillation · Student
Work log for Shadow clones: four Muay Thai techniques learnt in parallel
Distillation: six runs to the student distill4
Training cost about $16.276 distillation runs on vast.ai RTX 5090s, plus gates, snapshot evals and videos (vast.ai and RunPod), 24–25 October 2026 · 6 training runs, 24 machines, about 22.9 machine-hours
The student starts as guard18-124.5M, grown from its own inputs to opponent_knee’s 448 (the new inputs zero-weighted, so it starts as guard18 exactly). Teachers: guard18 everywhere except while a new technique runs, and that technique’s teacher while it does (--skill-teacher, --teacher-free none). Each run trains on a mix of all the episodes: about 26 % punch-environment episodes (34 % from distill4), shoves, blocks, walking and the opponent. The presses are spread over eight techniques: jab, cross, both hooks, uppercut, body straight, rear knee and switch knee. The method is in the post.
The runs
| run | from | teachers and change | outcome | machine-hours, cost |
|---|---|---|---|---|
| distill1 | guard18 | bodycross3, kneeR3, kneeL3; teacher weight 2 | 282.5 M at its 3 h cap. Knees in (rear 6/8, switch 5/8). Body straight 2/16: its teacher was on the fast elbows. Two gate bugs found and fixed (below) | 3.44 h (2 boxes), $2.61 |
| distill2 | distill1 282.5 M | bodycross4 replaces bodycross3 | stopped at 53.1 M when the host shut down. 52.4 M: body straight 21/24, knees 10/12 and 12/12, blocks 29/32, but the cross in the air 0/12 | about 1.35 h (2 boxes), about $1.03 |
| distill3 | distill2 52.4 M | the same, 190 M more | no snapshot beats distill2. The training averages are flat while the gate swings (blocks 21–29) | 2.40 h, $2.08 |
| distill4 | distill2 52.4 M | teacher weight 4, more punch episodes, more cross presses | kept 131.1 M: punches 60/120, cross in the air back to 3/12, walk 39/40, opponent 117/160, body straight 20/24, knees 11/12 and 9/12, no falls; blocks 24/32 | 2.27 h, $1.50 |
| distill5 | distill4 | the block share back to 0.35 | blocks stay at 24–25 in every snapshot; the opponent drops | 2.19 h, $1.35 |
| distill6 | distill4 | + pull1, the pull counter | the pull counter 6/6 at the bag but 1–2/6 in the air; nothing beats distill4 overall | 2.40 h, $1.44 |
distill5 and distill6 ran side by side on two machines.
The gate and its bugs
Each candidate is gated on every old skill (punches, walking, blocks, blocks under shoves, the opponent, distances) and every new one (body_cross_eval.py, knee_eval.py), on several snapshots. Before distill1’s gate could be trusted, two bugs had to go:
- The punch tests switched the opponent off only for the env names walk, block and opponent. In
opponent_kneethe opponent kept attacking during the punch tests. - Growing a checkpoint’s inputs rescaled the action outputs of any env that wasn’t in the punch list. That made an untrained guard18 with the three new inputs walk 6/40, and it also rescaled every warm start from a teacher (bodycross2–4 and the knee fixes relearnt it; bodycross4 fell 30 % in its first 3 M steps).
The evaluation boxes
| job | what | machine-hours, cost |
|---|---|---|
| eval-distill2, punch-distill2, gate-distill2 | distill2’s gate and punches (two boxes never loaded; one RunPod pod failed on EGL) | 1.03 h, $0.89 |
| eval-distill3, video-distill2 | four distill3 snapshots, distill2’s slow-motion videos | 1.79 h, $1.11 |
| eval-distill4, video-distill4 (vast.ai and RunPod) | distill4’s snapshots and videos | 0.96 h, $0.76 |
| eval-distill56, eval-distill56b | distill5 and distill6’s snapshots. The first timed out at 2 h and came back empty, so the launcher now pulls what a timed-out job finished | 5.07 h, $3.49 |
distill2’s main box (Estonia, about 1.2 h, about $0.90) is missing from the vast.ai ledger; its figure is from the run log and included above.
Every run
From the run records in kakuto-ml: each run's machines, their billed hours and cost (EC2 runs are estimates from the run logs).
| Run | Outcome | Machines | Hours | Cost |
|---|---|---|---|---|
distill1-2026102424 October · jab, cross, lead hook, rear hook, lead uppercut, body straight, rear knee, switch knee, blocks · kept distill1-282.5M | Kept | 2 | 3.4 | $2.61 |
distill2-2026102424 October · jab, cross, lead hook, rear hook, lead uppercut, body straight, rear knee, switch knee, blocks · kept distill2-52.4M | Kept | 11 | 3 | $2.30 |
distill3-2026102524 October · jab, cross, lead hook, rear hook, lead uppercut, body straight, rear knee, switch knee, blocks | Not kept | 2 | 3.6 | $2.81 |
distill4-2026102524 October · jab, cross, lead hook, rear hook, lead uppercut, body straight, rear knee, switch knee, blocks · kept distill4-131.1M | Kept | 5 | 3.2 | $2.27 |
distill5-2026102524 October · jab, cross, lead hook, rear hook, lead uppercut, body straight, rear knee, switch knee, blocks | Not kept | 2 | 4.2 | $2.80 |
distill6-2026102524 October · jab, cross, lead hook, rear hook, lead uppercut, body straight, rear knee, switch knee, pull counter, blocks | Not kept | 2 | 5.4 | $3.48 |
| 6 training runs | 24 | 22.9 | $16.27 |
← All the work logs for “Shadow clones: four Muay Thai techniques learnt in parallel”