
How NVIDIA Cosmos Reason works as a high-level planner above a low-level robot policy, why GR00T N1.7 using it as a backbone is a different thing, and where the split breaks.
Put a vision-language model in front of the robot policy, let it work out what to do next, and let a smaller network do the moving. That is the planner and actor split, and NVIDIA ships a model built for the planner half. Cosmos Reason is a VLM post-trained on physical common sense and embodied reasoning, which NVIDIA describes as a planning model that reasons about what steps an embodied agent might take next. It emits text. It never emits joint angles.
A second, quieter use of the same model causes most of the confusion here. GR00T N1.7 does not sit behind a Cosmos Reason planner; it has Cosmos-Reason2-2B fused in as its vision-language-action model backbone. Two architectures, two sets of failure modes. If you fine-tune GR00T N1.7 on an SO-100 today, you are already running Cosmos Reason without having built a planner. This article covers both, then where the split breaks on a small arm.
What you need to know
- •Cosmos Reason is a VLM, not a policy. Its output is a sentence, not a trajectory.
- •Cosmos Reason 2 ships as 2B, 8B and 32B, post-trained from Qwen3-VL-Instruct checkpoints. The 2B needs at least 24 GB of GPU memory, the 8B at least 32 GB.
- •GR00T N1.7 uses Cosmos-Reason2-2B as its VLM backbone, replacing the Eagle backbone used in N1.6. That is a backbone, not a planner.
- •A planner cannot live inside the control loop. NVIDIA recommends 4096 or more output tokens for the chain of thought; AY-Robots quotes 152 ms per action step for GR00T N1.7 and 20 ms for ACT.
- •A planner only helps if the actor reads language. ACT in LeRobot has no language input, so a planner in front of ACT changes nothing.
- •Your actor understands only the instruction strings that were in your dataset. Vary them while recording, or the planner is talking to a wall.
What Cosmos Reason actually is
The line starts with the Cosmos-Reason1 paper, submitted on 18 March 2025. It introduced Cosmos-Reason1-7B and Cosmos-Reason1-56B, and the two are not the same architecture: the 7B takes Qwen2.5-VL as its pretrained model and keeps a dense Transformer backbone, while the 56B pairs an InternViT-300M-V2.5 vision encoder with a Nemotron-H hybrid Mamba-MLP-Transformer backbone. Both were trained in two stages, Physical AI supervised fine-tuning then Physical AI reinforcement learning, against ontologies the paper defines for space, time and physics.
Read those numbers as a warning, not a sales pitch. The 56B reaches 60.2 average on the physical common sense benchmark and 63.7 on embodied reasoning, the latter a gain of 10.2 points over its own backbone. On the individual embodied splits it scores 80.0 on RoboVQA, 65.0 on BridgeData V2, 66.2 on RoboFail, 57.8 on HoloAssist and 47.6 on Agibot. A model that gets under half of Agibot right will occasionally hand your arm a nonsense subtask.
| Model | Built on | LLM backbone | Parameters | Minimum GPU memory | Gated on Hugging Face |
|---|---|---|---|---|---|
| Cosmos-Reason1-7B | Qwen2.5-VL | dense Transformer | 7B class, not itemized in the paper | not published | no |
| Cosmos-Reason1-56B | InternViT-300M-V2.5 plus Nemotron-H | hybrid Mamba-MLP-Transformer | 56B class, not itemized in the paper | not published | not published on Hugging Face |
| Cosmos-Reason2-2B | Qwen3-VL-2B-Instruct | same as Qwen3-VL | 2,438,696,960 | 24 GB | yes |
| Cosmos-Reason2-8B | Qwen3-VL-8B-Instruct | same as Qwen3-VL | 8,767,123,696 | 32 GB | yes |
| Cosmos-Reason2-32B | Qwen3-VL-32B-Instruct | same as Qwen3-VL | 33,357,390,064 | not published | no |
Those counts are the BF16 tensor totals Hugging Face reports per repository; NVIDIA's own 32B card rounds to 32,000,000,000, and the repository GPU table lists only the 2B and the 8B. Cosmos Reason 2 is the version you would deploy today, a straight post-train of Qwen3-VL-Instruct checkpoints, so it inherits the Qwen3-VL tooling including the vLLM reasoning parser. It takes up to 256K input tokens, wants video at 4 fps to match its training setup, and wants an output budget of 4096 tokens or more so the chain of thought is not cut off. Those last two numbers decide whether this can plan for your robot.
The Cosmos Reason 2 card scores all three sizes against the Qwen3-VL checkpoint each was post-trained from. The two ends of that range show where the physical post-training pays and where it does not.
| Robotics benchmark | Cosmos-Reason2-2B | Qwen3-VL-2B-Instruct | Cosmos-Reason2-32B | Qwen3-VL-32B-Instruct |
|---|---|---|---|---|
| Robotics overall | 45.52 | 42.07 | 60.60 | 55.06 |
| ERQA | 37.75 | 37.75 | 45.25 | 46.50 |
| CR Common | 54.30 | 49.67 | 65.89 | 63.41 |
| CR Embodied | 58.03 | 48.85 | 75.25 | 59.34 |
| Where2Place | 32.00 | 32.00 | 56.00 | 51.00 |
Read the 2B column carefully, because 2B is the size you can afford to run next to a hobby arm. Embodied reasoning jumps from 48.85 to 58.03, a real gain. ERQA is identical at 37.75, Where2Place identical at 32.00, and at 32B ERQA is worse than the base Qwen3-VL checkpoint. The post-training buys embodied narration, not spatial placement, and placement is what a manipulation planner keeps needing.
This article describes Cosmos Reason 2 as documented on 2026-08-23. The code was released on GitHub on 19 December 2025 with the 2B and 8B weights; the 32B card went up on 29 April 2026. On 1 June 2026 NVIDIA launched Cosmos 3 and moved the repositories under the main NVIDIA organization. The cosmos-reason2 repository now states it is no longer under active development. Everything below is the Cosmos Reason 2 path; check Cosmos 3 before you standardize on it.
Planner and actor: what the split actually is
A hierarchical stack has three layers, and the boundaries move depending on which paper you read. The version that matters for a desk robot looks like this.
| Layer | Input | Output | Rate | On this platform |
|---|---|---|---|---|
| Planner | overhead and wrist frames, the user prompt, what has happened so far | one short instruction string, sometimes with a point or box | seconds per decision | not hosted; you run it |
| Actor | camera frames, joint state, the instruction string | an action chunk of joint targets | 20 to 485 ms per action step depending on the model | one of the five trainable policies |
| Robot client | the action chunk | servo commands on the bus | as fast as the chunk is consumed | the desktop client next to the arm |
The reason to bother is not that the planner is smarter. It is that the actor's training data is expensive. A policy trained on 50 episodes of one long task learns that one long task. The same 50 episodes cut into three named subtasks give you a policy you can recombine, with the recombination logic in text you can log and fix without touching a GPU.
Where the idea comes from
| Work | Year | High level | Low level | What it added |
|---|---|---|---|---|
| SayCan | 2022 | an LLM proposes skills in language | pretrained skills with value functions | grounding: value functions attached to the skills score which proposal is feasible in this environment |
| RT-H | 2024 | language motions such as move arm forward | an action policy conditioned on those motions | an intermediate layer that shares data across tasks and accepts human corrections |
| ECoT | 2024 | chain of thought inside the same VLA | same model | 28 percentage points absolute over OpenVLA on generalization tasks, with no extra robot data |
| Hi Robot | 2025 | a VLM that uses exactly the same VLM backbone as Pi0 | Pi0 | open-ended prompts and mid-task corrections such as that is not trash |
| Pi0.5 | 2025 | semantic subtask prediction, co-trained | same model | one checkpoint that predicts the subtask and then the low-level actions |
| Gemini Robotics 1.5 | 2025 | Gemini Robotics-ER 1.5 plans and estimates progress | the Gemini Robotics 1.5 VLA | acting interleaved with multi-level internal reasoning in language |
Two camps fall out of that table. SayCan, Hi Robot and the Gemini Robotics-ER stack keep the planner separate. ECoT and Pi0.5 fold the reasoning into the actor. GR00T N1.7 is a third case that is easy to misfile: it swallows a reasoning VLM without keeping the reasoning. The Hi Robot project page has the clearest evidence for the separate-planner camp: 74 percent instruction accuracy on table bussing against 36 for a flat VLA and 35 for a GPT-4o high-level baseline, and 83 against 34 and 13 on sandwich making. Those are kitchen-scale tasks on dual-arm and mobile platforms, so read them as direction, not forecast.
The other Cosmos Reason: backbone, not planner
Train GR00T on AY-Robots and you are already shipping Cosmos Reason weights to the GPU. The Isaac-GR00T repository states the change plainly: the VLM backbone moved from the vendored Eagle model, nvidia/Eagle-Block2A-2B-v2, to nvidia/Cosmos-Reason2-2B via Qwen3-VL. This is not a planner. There is no prompt budget, no chain of thought at rollout time, and no place in the CLI to ask it a question: the VLM is an encoder feeding a diffusion transformer head that denoises continuous actions.
| Item | GR00T N1.6 | GR00T N1.7 |
|---|---|---|
| VLM backbone | nvidia/Eagle-Block2A-2B-v2 (vendored) | nvidia/Cosmos-Reason2-2B (Qwen3-VL architecture) |
| Model package | gr00t_n1d6 | gr00t_n1d7 |
| State and action dimensions | 29 | 132 |
| action_horizon | 16 | 40 |
| Action head | flow-matching DiT, 32 diffusion layers | flow-matching DiT, 16 diffusion layers |
| Rollout CLI flag | --action-horizon | --execution-horizon |
| transformers | 4.51.3 | 4.57.3 |
nvidia/Cosmos-Reason2-2B is a gated repository on Hugging Face, and every GR00T checkpoint loads it on first use, including the base nvidia/GR00T-N1.7-3B. The GR00T weights are not gated, so that download succeeds and the run dies afterwards with a GatedRepoError or a 401. Request access on the model page and authenticate with hf auth login or export HF_TOKEN=... before the GPU clock starts. Checked on 2026-08-23: the 2B and 8B are gated, the 32B is not. If a job dies in the first two minutes, check this before anything on the failure-mode pages.
One more naming trap. NVIDIA uses Cosmos for three things and only one of them is a planner. Cosmos Reason is the VLM. Cosmos Predict is the video world model. Cosmos Policy is a robot policy post-trained from Cosmos-Predict2 that reports 98.5 percent average success on LIBERO and 67.1 percent on RoboCasa; it is an actor, not a planner, and it has its own entry at /arena/cosmos-policy.

So GR00T N1.7 follows language the way a policy does, not the way a planner does: a short string plus pixels in, a chunk of joint targets out, and no account of why. For a readable plan you still need a second model. Compare Pi0.5, whose recipe co-trains semantic subtask prediction with low-level actions, or read our write-up of flow-matching policies with VLM initialization.
Building the planner loop yourself
Nothing below is exotic: two servers and a loop. The commands are from the cosmos-reason2 repository and the Isaac-GR00T repository as they stood on 2026-08-23.
- 1Serve the planner
Cosmos-Reason2 is in transformers 4.57.0 and later; for serving, NVIDIA recommends vllm 0.11.0 or newer. Log in to Hugging Face first, because the 2B repository is gated. First startup takes a couple of minutes for model loading and CUDA graph compilation.
bashgit clone https://github.com/nvidia-cosmos/cosmos-reason2.git cd cosmos-reason2 uv sync --extra cu128 source .venv/bin/activate uvx hf auth login vllm serve nvidia/Cosmos-Reason2-2B \ --allowed-local-media-path "$(pwd)" \ --max-model-len 16384 \ --media-io-kwargs '{"video": {"num_frames": -1}}' \ --reasoning-parser qwen3 \ --port 8000 - 2Check that it reasons about your scene, not a demo scene
The repository ships an embodied reasoning prompt. Point it at a real frame from your own wrist camera before you build anything on top. If the model cannot describe your workspace correctly from a still image, it will not plan for it from video.
bashcosmos-reason2-inference online -v --port 8000 \ -i prompts/embodied_reasoning.yaml \ --reasoning --images /path/to/your_wrist_frame.png - 3Freeze the instruction vocabulary
The step everyone skips. Your actor understands the task strings from the dataset it was fine-tuned on and nothing else. Read them out and make that list the only thing the planner may emit. The modality config decides which key those strings arrive under; the SO100 example config declares a single language key.
bash# GR00T LeRobot layout: language task descriptions live in meta/tasks.jsonl jq -r '.task' my_dataset/meta/tasks.jsonl | sort -u - 4Serve the actor
Isaac-GR00T ships a policy server and a matching client. Start it on the machine with the checkpoint; the client is a thin RPC wrapper.
bashuv run python gr00t/eval/run_gr00t_server.py \ --embodiment-tag NEW_EMBODIMENT \ --model-path /path/to/checkpoint \ --device cuda:0 \ --host 0.0.0.0 --port 5555 - 5Write the loop, and keep the two rates apart
The actor runs every step. The planner runs every few seconds. Mixing the two rates is the single most common design error here. The key you write the instruction into is whatever your modality config declares as its language modality: the SO100 config shipped with Isaac-GR00T declares
annotation.human.task_description.pythonfrom gr00t.policy.server_client import PolicyClient # exactly the strings that came out of meta/tasks.jsonl SUBTASKS = [ "pick up the red cube", "put the cube in the bowl", "move the arm back to rest", ] # the language modality key declared in examples/SO100/so100_config.py LANG_KEY = "annotation.human.task_description" policy = PolicyClient(host="localhost", port=5555) plan = SUBTASKS[0] step = 0 while not done: obs = robot.observe() # video.* frames + state.* joints # seconds, not milliseconds if step % REPLAN_EVERY_N_STEPS == 0: plan = ask_planner(obs, SUBTASKS) # must return a member of SUBTASKS obs[LANG_KEY] = plan action, info = policy.get_action(obs) robot.execute(action) step += 1 - 6Prove the actor follows language before you trust the planner
Open-loop evaluation compares predicted actions against ground truth and writes a plot with MSE metrics. Run it once per instruction string. If the same start state gives the same trajectory whichever string you pass, the language channel is dead and no planner will revive it.
bashuv run python gr00t/eval/open_loop_eval.py \ --dataset-path /path/to/dataset \ --embodiment-tag NEW_EMBODIMENT \ --model-path /path/to/checkpoint \ --traj-ids 0 \ --execution-horizon 16
The fine-tune entry point is gr00t/experiment/launch_finetune.py, a tyro CLI. The repository ships an SO100 modality config and a five-episode demo_data/cube_to_bowl_5 dataset, which is the fastest way to check your environment before you spend GPU hours. On AY-Robots the same job is a form: see GR00T N1.7 on SO-100.
Where it breaks
1. The latency budget does not close
This is the objection that kills most planner projects, and it is arithmetic rather than opinion.
| Component | Number | Where it comes from |
|---|---|---|
| ACT action step | 20 ms | AY-Robots policy catalog |
| GR00T N1.7 action step | 152 ms | AY-Robots policy catalog |
| GR00T N1.5 action step | 165 ms | AY-Robots policy catalog |
| SmolVLA action step | 245 ms | AY-Robots policy catalog |
| Pi0.5 action step | 485 ms | AY-Robots policy catalog |
| Cosmos Reason output budget | 4096 tokens or more, recommended | Cosmos-Reason2 model card |
| Cosmos Reason video input | 4 fps, to match the training setup | Cosmos-Reason2 model card |
A chain of thought NVIDIA sizes at four thousand tokens is not a component of a 152 ms loop. The planner sits beside the control loop, not inside it. And because the actor predicts chunks rather than single steps, an instruction change lands at the next chunk boundary, not the next servo command: GR00T N1.7 expanded its action horizon from 16 to 40 and executes as many of those as --execution-horizon says. See action chunking and inference latency if that distinction is new.
AY-Robots states this limit plainly: inference has to sit next to the servos for fast tasks. A planner does not change that rule, it adds a second and slower loop above it. Remote inference is workable for slow pick-and-place, not for fast reactive motion, and stacking a planner call on top of an already remote actor stacks round trips onto a policy that was hesitating anyway. See policy freezes mid-motion.
2. The actor may not be listening at all
A planner is a language emitter. If the actor has no language input, the planner is decoration. That is not a subtlety in LeRobot, it is visible in the configuration files: the ACT config has no tokenizer field and no language field, because ACT is vision plus proprioception, and its defaults are chunk_size 100 and n_action_steps 100. The SmolVLA config by contrast carries a tokenizer_max_length of 48 and a SmolVLM2-500M-Video-Instruct backbone, so a carefully engineered instruction gets truncated at 48 tokens.
| Policy | Params | Action step | Reads the instruction? | Note |
|---|---|---|---|---|
| ACT | ~80 M | 20 ms | No | vision and state only in LeRobot; a planner in front of it does nothing |
| SmolVLA | ~450 M | 245 ms | Yes | language truncated at 48 tokens by tokenizer_max_length |
| GR00T N1.7 | ~3 B | 152 ms | Yes | task strings live in meta/tasks.jsonl |
| GR00T N1.5 | ~3 B | 165 ms | Yes | same data path; predates the Cosmos Reason switch, its card cites Eagle 2 |
| Pi0.5 | ~3 B | 485 ms | Yes | semantic subtask prediction is part of its own training recipe |
If you recorded 50 episodes and every one of them carries the same task string, the language channel carried zero information during fine-tuning and the policy learned to ignore it. You cannot fix that with a better planner or a better prompt. You fix it in the recording session by splitting the task and labeling the segments, which is why recording your first dataset matters more than the planner does. Symptoms overlap with policy only works in one setup.
3. Nothing reports failure upward
The actor returns actions. It does not return whether the cube is in the gripper. You write the termination check yourself: a step budget, a condition on joint state, or a second planner call asking whether the subtask is done, which costs a full chain of thought. A planner watching 4 fps video sees the aftermath of a slip a quarter of a second late. If the gripper is the unreliable part, fix that first: gripper does not close is a data problem, not a planning problem.
4. Two models, two GPUs, two bills
Cosmos-Reason2-2B needs 24 GB and the 8B needs 32 GB, on hardware NVIDIA has validated only on Hopper and Blackwell; Jetson AGX Thor is listed for Transformers inference with vLLM marked as coming. The actor tiers are fixed too: GR00T N1.7, GR00T N1.5 and Pi0.5 need an A100 80 GB or H100 80 GB, while SmolVLA and ACT fit on an RTX 4090 or any 24 GB card. A run costs roughly 4 to 12 USD on the big tier, 1 to 3 USD on the small one. The planner is a third bill, and the pod's idle watchdog does not cover a process the platform does not run. See pricing.
5. You cannot A/B it cleanly
To claim the planner improved anything you have to beat run-to-run noise. Isaac-GR00T warns of 5 to 6 percent variance between runs from non-deterministic image augmentations, and its fine-tune entry point is a tyro CLI with no seed flag, so GR00T runs are not bit-for-bit reproducible. LeRobot's default seed is 1000, and on AY-Robots the Pi0.5, SmolVLA and ACT forms expose a seed while the GR00T forms do not. Repeat every configuration three times, or report nothing.
- One actor checkpoint covers several named subtasks instead of one demonstration set per long-task variant
- Corrections in plain language during execution, which is the point of the Hi Robot result
- The planner can be swapped, upgraded or replaced by a hand-written state machine without retraining the actor
- The plan is text, so you can log it and diff it; a diffusion head gives you none of that
- Long-horizon tasks stop requiring one continuous demonstration from start to finish
- Two model servers, two GPUs, two sets of failure modes
- The planner adds seconds, so anything reactive has to stay inside the actor
- The actor only understands strings it saw during fine-tuning, which pushes the work back into recording
- Nothing reports failure upward unless you build the termination check yourself
- On a hobby arm the honest baseline is one policy per task, and that baseline is hard to beat
Two ways to get to a working actor
The planner half is yours either way. What differs is how much of the actor half you build. Same goal both ways: a fine-tuned language-conditioned policy on an SO-100 that a planner can drive.
You rent the GPU, install the trainer, convert the dataset and serve the checkpoint. Budget a day for the first run; most of it goes on environment problems, not training.
git clone https://github.com/NVIDIA/Isaac-GR00T.git
cd Isaac-GR00T
uv sync --python 3.12
uv run huggingface-cli login # Cosmos-Reason2-2B is gated
# LeRobot v3 datasets must be converted down first
cd scripts/lerobot_conversion
uv venv && source .venv/bin/activate
uv pip install -e .
python convert_v3_to_v2.py --repo-id <DATASET_REPO_ID>
cd ../..
CUDA_VISIBLE_DEVICES=0 uv run python \
gr00t/experiment/launch_finetune.py \
--base-model-path nvidia/GR00T-N1.7-3B \
--dataset-path demo_data/cube_to_bowl_5 \
--embodiment-tag NEW_EMBODIMENT \
--modality-config-path examples/SO100/so100_config.py \
--num-gpus 1 \
--output-dir /tmp/test_finetune \
--max-steps 2000 \
--global-batch-size 32 \
--dataloader-num-workers 4- You own the CUDA version, the flash-attn wheel and the Hugging Face gating.
- You own the dataset conversion. A LeRobot v3.0 dataset does not load in the GR00T loader.
- You own the spot instance, including the part where it vanishes mid-run.
- You get every flag, including
--state_dropout_prob, whose model config default is 0.8 while the fine-tune CLI default is 0.2.
The actor half is a form. You pick a model and a dataset at /train, the backend rents a GPU on a spot market by required VRAM, runs the trainer and writes checkpoints to object storage. Serving is /api/inference/pod, which auto-provisions a pod, serves the policy and destroys itself after an idle period so nothing bills silently. The base checkpoints are the vendors' own: nvidia/GR00T-N1.7-3B, nvidia/GR00T-N1.5-3B and lerobot/pi05_base.
- Minimum episodes are 50 for GR00T N1.7, GR00T N1.5, Pi0.5 and ACT, and 30 for SmolVLA.
- GR00T N1.7 defaults sent by the trainer: batch size 32, learning rate 1e-4, 20000 max steps.
- GR00T and Pi0.5 are cloud only here. SmolVLA and ACT also run locally.
- Datasets come from the public directory, a Hugging Face repo id, or your own machine.
There is no planner on AY-Robots: no Cosmos Reason endpoint, no planning API, no high-level model in the training form. The platform trains and serves the actor; the planner is a process you run and pay for yourself, talking to the actor through the same instruction string the dataset defined. There is no checkbox marked hierarchical.

What the platform helps with, and what it does not
AY-Robots covers the actor half end to end: teleoperation from the browser, a desktop client that records LeRobot datasets from a teleop session, a training form that rents the GPU, and an inference pod that serves the result. The arena compares 85 VLA models across 332 benchmark results, every value linked to its paper or model card. The same operations reach a terminal at /cli and agents at /mcp. For background, see our overview of vision-language-action models and how RT-2 transfers web knowledge to robot control.
What it does not do: host a planner, expose a planning API, or make a remote actor fast. If your task needs reactive motion, the actor belongs next to the servos; the planner can sit anywhere as long as you call it every few seconds. And if your actor is ACT, a planner is not a design choice, it is a no-op.

If you are going to try this, do it in this order
- Record with varied instruction strings from the start. Two or three named subtasks per episode beat one long unlabelled one.
- Fine-tune one actor and prove open loop that two instructions from the same start state give two different trajectories.
- Only then serve Cosmos-Reason2-2B and constrain its output to the exact strings in
meta/tasks.jsonl. - Replan on a timer measured in seconds, never per action step.
- Repeat each configuration three times before you believe any difference, because run-to-run variance is 5 to 6 percent on GR00T alone.
Five policies, real numbers, one page
Parameters, GPU tier, latency per action step and minimum episodes for GR00T N1.7, GR00T N1.5, Pi0.5, SmolVLA and ACT, plus which of them read a language instruction at all. That last question decides whether a planner in front of them does anything.
Compare the policiesIs Cosmos Reason a robot policy?▾
No. It is a vision-language model. Its output is text: a description, a next step, sometimes a point or a bounding box. It never outputs joint angles. To move an arm you still need a low-level policy such as GR00T N1.7, Pi0.5, SmolVLA or ACT, and that policy is what gets fine-tuned on your episodes.
GR00T N1.7 already uses Cosmos-Reason2-2B. Do I still need a separate planner?▾
Those are different things. In GR00T N1.7 the Cosmos-Reason2-2B weights are the VLM backbone, an encoder feeding a diffusion transformer action head: no chain of thought at rollout time, no plan you can read. A separate planner gives you a readable subtask string, mid-task corrections and recombinable subtasks.
Can I put a planner in front of ACT?▾
You can, and it will do nothing. ACT in LeRobot has no language input: its configuration file has no tokenizer and no language field, because the model consumes images and proprioceptive state only. If you want a language-conditioned actor on a 24 GB card, SmolVLA is the option, at 245 ms per action step against ACT's 20 ms.
How much GPU does the planner need?▾
The repository lists 24 GB minimum for Cosmos-Reason2-2B and 32 GB for Cosmos-Reason2-8B, tested on Hopper and Blackwell in BF16. That is on top of the actor, which on this platform is an A100 or H100 for GR00T and Pi0.5, or a 24 GB card for SmolVLA and ACT.
Why does my GR00T run die immediately with a 401?▾
Because nvidia/Cosmos-Reason2-2B is gated and every GR00T checkpoint loads it on first use, including the base model. The GR00T weights themselves are not gated, so the first download succeeds and the failure comes later. Request access on the model page, then run hf auth login or set HF_TOKEN before starting the job.
Which Cosmos Reason version should I use in August 2026?▾
Cosmos Reason 2, in the size that fits your card: 2B on 24 GB, 8B on 32 GB, 32B if you have the room. Note the direction of travel: NVIDIA launched Cosmos 3 on 1 June 2026 and the cosmos-reason2 repository states it is no longer under active development. Pin your versions and re-check first.
Sources
- Cosmos-Reason1: From Physical Common Sense To Embodied Reasoning
- nvidia/Cosmos-Reason2-32B model card
- nvidia-cosmos/cosmos-reason2 repository
- NVIDIA Isaac-GR00T (N1.7) repository
- Isaac-GR00T examples/SO100/so100_config.py (modality config)
- nvidia/GR00T-N1.7-3B model card
- LeRobot ACT configuration (no language input)
- LeRobot SmolVLA configuration (tokenizer_max_length)
- Physical Intelligence: Hi Robot project page
- Hi Robot: Open-Ended Instruction Following with Hierarchical Vision-Language-Action Models
- Do As I Can, Not As I Say: Grounding Language in Robotic Affordances (SayCan)
- RT-H: Action Hierarchies Using Language
- Robotic Control via Embodied Chain-of-Thought Reasoning
- pi-0.5: a Vision-Language-Action Model with Open-World Generalization
- Gemini Robotics 1.5: Pushing the Frontier of Generalist Robots with Advanced Embodied Reasoning, Thinking, and Motion Transfer
Sources
- Cosmos-Reason1: From Physical Common Sense To Embodied Reasoning
- nvidia/Cosmos-Reason2-32B model card
- nvidia-cosmos/cosmos-reason2 repository
- NVIDIA Isaac-GR00T (N1.7) repository
- Isaac-GR00T examples/SO100/so100_config.py (modality config)
- nvidia/GR00T-N1.7-3B model card
- LeRobot ACT configuration (no language input)
- LeRobot SmolVLA configuration (tokenizer_max_length)
- Physical Intelligence: Hi Robot project page
- Hi Robot: Open-Ended Instruction Following with Hierarchical Vision-Language-Action Models
- Do As I Can, Not As I Say: Grounding Language in Robotic Affordances (SayCan)
- RT-H: Action Hierarchies Using Language
- Robotic Control via Embodied Chain-of-Thought Reasoning
- pi-0.5: a Vision-Language-Action Model with Open-World Generalization
- Gemini Robotics 1.5: Pushing the Frontier of Generalist Robots with Advanced Embodied Reasoning, Thinking, and Motion Transfer
Ready for high-quality robotics data?
AY-Robots connects your robots to skilled operators worldwide.
Get Started