Where you are. You know why systems split fast from slow and what can cross the boundary. This lesson opens the frontier-class design whose weights you can actually download, and it is the one architecture in this module worth learning line by line.
The model that forgot what a mug was
You have done the software version of this. Take a capable general model, fine-tune it hard on ten thousand of your own support tickets, and it gets sharper at tickets and duller at everything else. Nothing crashes. Ask it a question it used to answer well and the answer comes back flatter, more generic, slightly wrong in a way you cannot point at. The weights moved and they took something with them.
Now do the robot version, and notice that it is worse.
Take a vision-language model that has read most of the web and genuinely knows what a mug is, what “the extinct animal” means, what a fridge looks like from the inside. Bolt a fresh motor head onto it and start training on robot trajectories. On the first training step that head is randomly initialised. Its outputs are noise. Its gradients are therefore also noise, and those gradients flow straight back into the part of the network that knew what a mug was.
You are not fine-tuning the model. For the first several thousand steps you are sandblasting it.
Wider than the screen; scroll it sideways.
The idea in one paragraph
π₀ is a vision-language model with a second, smaller transformer alongside it. The vision-language half reads camera frames and the instruction. The other half, called the action expert, reads the robot’s joint angles and a chunk of noisy candidate actions and turns them into fifty real-valued future actions. The two share one self-attention stack, so this is a single forward pass rather than two models talking over a wire. π₀.₅ then splits the training in two: a pretraining stage that supervises the backbone with discrete action tokens, where the learning signal is clean and familiar, and a post-training stage that adds the flow-matching action expert, where inference is fast. A follow-up paper collapses that into one stage and adds the idea that makes the whole thing hold together, and it is the most teachable architectural idea in this module: run both objectives together and block the action expert’s gradients from ever reaching the backbone. That paper calls it knowledge insulation, and its slogan is train fast, run fast, generalize better.
Wider than the screen; scroll it sideways.
Two experts, one attention stack
The diagram has four input streams and they split cleanly into two pairs.
Images and words go to the vision-language expert, which for π₀ is a backbone of the PaliGemma family. This half is where all the pretraining lives. It has seen far more of the world than any robot dataset contains, and everything the model knows that is not about motors is stored here.
Joint angles and a chunk of noisy candidate actions go to the action expert, roughly 300 million parameters in π₀. This half has seen nothing but robots. Its job is narrow: given the scene as the other half understands it, and given where the arm currently is, refine that noisy chunk into a real one.
The output is a chunk of fifty continuous actions, produced by flow matching, supporting control at up to 50 Hz. Action representations covered flow matching properly; the one line to carry into this lesson is that training draws a straight line from a noise sample to a real action chunk , picks a random point on that line, and asks the network for the direction to travel:
Because the target path is straight, the direction is the same everywhere along it, so integrating it back at inference takes a handful of steps rather than dozens. That is the whole reason this design can hold a 50 Hz loop.
Knowledge insulation
Now the problem from the hook, stated precisely. The action expert starts random. Backpropagating its loss through the shared attention would deliver noise to the pretrained backbone at exactly the moment the backbone is most fragile and the expert is least useful.
Wider than the screen; scroll it sideways.
The recipe runs two objectives against one model.
The backbone is supervised on discrete action tokens produced by FAST, the compression scheme from the action-representations lesson. This is next-token prediction with a cross-entropy loss, which is precisely the objective the backbone was pretrained with. It is the model’s native language, so the gradients are well-behaved and the semantic representations survive contact with robot data.
The action expert is trained with the flow-matching loss on continuous chunks, because that is what you want at inference time.
Between them sits a stop-gradient. The expert’s gradients update the expert and stop.
The obvious alternative is to freeze the backbone entirely, and it is worse. A frozen backbone cannot learn anything robot-specific: not what your camera angle looks like, not that gripper fingers occlude the object, not what “the third one from the left” means when the objects are on a bench rather than in a photograph.
So insulation is not “protect the backbone from robot data.” It is “let the backbone learn from robot data through a clean channel, and only that channel.”
What you can actually download
This is where a lot of writing about π₀ stops being useful, because the family has five members and only some of them exist as files.
Those two lines are the sort of detail that costs you a week if you find it late. If your whole toolchain is PyTorch, one checkpoint quietly leaves your list of options - and so, as the repository currently stands, does the entire low-rank fine-tuning path that the next section is about to tell you fits on a 24 GB card. The 22.5 GB LoRA row is a JAX row. Check whether that is still true on the release you clone before you plan around it.
What it costs to run
From the repository’s own table:
| What you want to do | Memory | Example card |
|---|---|---|
| Inference | more than 8 GB | RTX 4090 |
| LoRA fine-tune | more than 22.5 GB | RTX 4090 |
| Full fine-tune | more than 70 GB | A100 or H100 80GB |
Read the middle row carefully, because it draws the practical boundary of this whole module. A 24 GB consumer card can LoRA-fine-tune a π₀-class model with essentially no headroom, and cannot full-fine-tune one at all. Above 40 GB, on rented hardware, everything opens up. Below 24 GB you are running inference and fine-tuning smaller models, which is exactly what SmolVLA is for.
The two you cannot have
Physical Intelligence has published two models past π₀.₅ that exist as papers and not as files.
π*₀.₆ (17 November 2025) adds a training recipe called RECAP: demonstrations first, then real-time expert corrections when the robot goes wrong, then reinforcement learning from its own autonomous attempts. The reported results are about twice the throughput and more than half the failures removed, with continuous espresso making, laundry folding in an unfamiliar home, and factory box assembly. A parameter count of roughly 5 billion appears in secondary coverage rather than in Physical Intelligence’s own material, so treat it as approximate; the same goes for the specific run lengths (18 hours, 50 items, 59 boxes) that circulate in coverage, which I did not confirm against the primary source. All results are self-reported and nobody outside the company has replicated any of them.
π₀.₇ (16 April 2026) is framed as a steerable generalist: conditioned not only on an instruction but on metadata, control modalities and visual subgoals, and trained on a mixture that includes human video and the robot’s own autonomous data. The headline claim is that a single π₀.₇ matches or beats task-specific specialists trained with reinforcement learning on their own single task. No parameter count is published and no weights are released.
Check yourself
1. Why is bolting a randomly initialised action head onto a pretrained VLM worse than ordinary fine-tuning?
Ordinary fine-tuning moves the weights toward a new distribution using a loss that means something from step one. A fresh action head produces noise, so its gradients carry no signal, and those meaningless gradients still flow back into the pretrained backbone and degrade representations that took enormous compute to build. The damage is worst in exactly the early phase when the head is least useful.
2. State knowledge insulation in one sentence, say what it costs, and name which paper it comes from.
Train the backbone on discrete FAST action tokens with cross-entropy, train the action expert with flow matching in the same step, and block the expert’s gradients from reaching the backbone. The cost is complexity: two action representations, two losses and an extra tokenizer in the training pipeline, all to protect one set of weights. It comes from arXiv:2505.23705 (May 2025), not from the π₀.₅ paper (arXiv:2504.16054, April 2025), which splits the same two representations across two training stages and separates them with an attention mask rather than a stop-gradient.
3. Why not simply freeze the backbone instead?
Because a frozen backbone cannot learn anything about your robot: not your camera placement, not gripper occlusion, not what a spatial instruction means in your workspace. Insulation keeps a learning channel open while making sure the signal arriving through it is clean. Freezing closes the channel entirely.
4. Your toolchain is PyTorch and you want the fastest-training π₀ variant. What stops you, and what do you do?
π₀-FAST trains fastest but is JAX only in openpi, so it is not available to you without changing toolchain. The practical answer is π₀.₅ in PyTorch, which is supported and validated on LIBERO, and which also carries the better independent evidence on SO-101 hardware - but check the supported-features list before you commit, because the PyTorch path did not support LoRA when this was written, which pushes a memory-constrained fine-tune back to JAX.
5. Why does “more than 22.5 GB for a LoRA fine-tune” surprise people who know that LoRA adapters are tiny?
Because the adapters are not what fills the card. Backpropagation still runs through the whole network to reach them, so activations for the full forward pass have to be kept, and a VLA’s forward pass includes long sequences of visual tokens. Optimiser state for a handful of adapter matrices is negligible; activation memory is not.
6. A release claims its model matched human teleoperators. What do you ask before believing anything?
First, quote the sentence rather than paraphrasing it, because the reference class is the whole content of the claim and paraphrase destroys it - “expert operators driving an unfamiliar arm zero-shot” and “novices” are very different references and both get flattened to “humans”. Then: how much practice did they have, on which trials, how many trials per cell, who ran the evaluation, and what would the same operators have scored with practice. A comparison to an unstated reference is a way of reporting a number without reporting a result.
Do this
About thirty minutes, no GPU needed.
1. Do the memory arithmetic yourself. Run this, then reconcile it against the published table above.
params_b = 3.3 # billions of parameters, pi-zero class
weights = params_b * 2 # bf16, 2 bytes per parameter
grads = params_b * 2 # bf16 gradients, full fine-tune only
adam = params_b * 12 # fp32 master copy plus two Adam moments
print(f"weights alone {weights:5.1f} GB")
print(f"full fine-tune, no activations {weights + grads + adam:5.1f} GB")
print("published: inference >8 GB, LoRA >22.5 GB, full >70 GB")
Write two sentences. Where does the gap between your full-fine-tune number and the published 70 GB come from? And why is the LoRA figure so much larger than the weights alone, when the adapters themselves are a few tens of megabytes?
2. Go and read the shelf. Open the openpi repository. Find the list of checkpoints, the LICENSE file, and any licence text attached to the weights themselves. Write down, in your own notes: which checkpoints exist today, which are usable from PyTorch, and what licence you believe covers the weights, with the URL you got that from and the date you checked. If you cannot find an explicit weights licence, write that down too, because that is the finding.
3. Draw it from a blank page. Close everything. Draw the π₀ architecture: four input streams, two experts, one shared attention stack, one output chunk. Then add the two training losses and the stop-gradient. Compare against the two figures above. The exit test for this module asks you to do this for three architectures from memory, and this is the one to get solid first.
What you can now do
You can draw π₀ from memory and say what each half sees. You can explain knowledge insulation, why a fresh action head is dangerous to a pretrained backbone, and why freezing is not the fix. You can state which π-family checkpoints exist as files rather than as announcements, which runtime each one needs, and what card you need for inference against LoRA against a full fine-tune. And you have a habit worth more than any of that: when a release quotes a comparison, you now ask what it was compared against.