CLIFT

Turning Gemini Robotics On‑Device into Humanoid Specialists
via Non‑Invasive Closed‑Loop Iterative Fine‑Tuning

Yuxin Chen, Hari Srikanth, Nathan Jew, Menglin Wu, Pengcheng Wang, Junli Ren,
Masayoshi Tomizuka, Peng Xu, Jinyu Xie, Ran “Thomas” Tian

Robot foundation models are getting remarkably capable

Bimanual manipulation

Humanoids

Language-conditioned skills

One generalist policy — many tasks, many embodiments, out of the box. footage: Google DeepMind, Gemini Robotics

In language, capability already lives behind an API

$ curl https://api.openai.com/v1/fine_tuning/jobs \
    -H "Authorization: Bearer $OPENAI_API_KEY" \
    -d '{
      "model": "gpt-4o",
      "training_file": "file-demos-abc123"
    }'

{ "object": "fine_tuning.job", "status": "queued", ... }
→ ft:gpt-4o:your-org::a1b2c3
  • The strongest language models are closed-weight — no parameters, gradients, or logits for downstream users
  • Adaptation is a managed service: upload training data, receive a tuned model
  • This is the norm across the frontier

Robotics is following the same playbook

  • The most capable robot foundation models may not be fully open-weight
  • Capability lives behind a service, not a checkpoint
  • Developers may get only one interface: a managed SFT API

Gemini Robotics On‑Device: a powerful foundation

  • A powerful robot foundation model, designed to run locally on robots
  • Exposed through a managed SFT API
  • Fine-tuned on the same demonstrations, it already far outperforms open-weight alternatives
GROD (SFT) π0.5 (SFT)

Box packing

93
59

Cup insertion

70
50

Bimanual plate handover

53
5

success rate % · 100 trials · same demonstrations

Imitation alone leaves a deployment gap

Success rate slides as contact gets richer

after deployment covariate shift real-world dynamics controller-specific failures

A limit of SFT-only adaptation — for any policy, not any particular model.

Every door into closed-loop training is locked

  • Mastery takes practice: the robot must learn in closed loop
  • Standard closed-loop learning needs gradients, losses, action likelihoods, custom objectives
  • A closed-weight model exposes none of them — by design

The only access point: a managed SFT API.

How can a closed-weight model
learn in closed loop?

CLIFT — Closed-Loop Iterative Fine-Tuning

  • We cannot open the model —
    but we can change what it learns from
  • Not just expert demonstrations: the robot’s entire deployment experience
  • Successes, failures, and everything in between

problem setting

The entire interface: a dataset in, a policy out

// the managed SFT interface, abstractly
FSFT :  D  →  π

D = { (ot,  ℓ,  at) }  obs · instruction · action chunk

→ returns a fine-tuned policy π

exposed:  submit data · receive policy
hidden:   weights ✕  gradients ✕  likelihoods ✕  losses ✕
  • A black-box operator: submit observation–instruction–action-chunk tuples, receive a tuned policy
  • This is the only update operation — there is no other lever
  • Everything starts from π0 = FSFT(Ddemo): the base model fine-tuned on teleoperated demonstrations

problem setting

The goal is reinforcement — the access is imitation

π = arg maxπ𝔼o ∼ pπ [ Σt Rθ(ot; ℓ) ] − β · KL( π ∥ π0 )

maximize reward under the policy’s own closed-loop distribution — not the demo distribution stay anchored to the imitation policy π0 at deployment-visited states
PPO✕ not exposed
needs log π(a|o) and backprop through the model
Advantage-weighted regression✕ not exposed
needs the loss, reweighted by exp(A/β)

Every route that needs internal signals is ruled out. FSFT only accepts data.

We cannot touch the model.
So the reward moves into the data.

Score deployment rollouts · write the verdict into each training tuple · let the API run ordinary SFT.
The model and its training procedure stay untouched.

A deployment-time data flywheel — API-only, non-invasive

The CLIFT flywheel diagram

the flywheel

Four moves, all through the same API

01Score

A reward model calibrated to human preference scores every rollout, step by step

02Relabel

Each action chunk earns an advantage token, judged against similar states

03Condition

Fine-tune on successes and failures alike; at inference, the token flips to True

04Iterate

Append, re-fine-tune from the base model, deploy again — a stronger specialist each cycle

↻ 04 hands the new policy back to 01 — the loop is the method

01Score

Judging rollouts like a human is the hard part

Prompt a zero-shot VLM

Tracks surface progress, but misses execution failures — a jerky, unsafe rollout can still “look” complete

✓ scalable✕ miscalibrated

Label rewards by hand

Humans judge execution quality reliably — but dense per-step labels for every rollout are prohibitive

✓ calibrated✕ doesn’t scale
combine

✦ Select-then-distill

Let the VLM generate candidate dense rewards, let human preferences select among them — then distill the winners into one reusable reward model

densecalibratedcheap for humans

100 pairwise comparisons is the entire per-rollout labeling budget — plus one short rubric per task.

01Score

A reward model calibrated to human judgment

VLM reward generator

K = 12 candidate per-step reward traces per rollout, via temperature sampling

r₁r₂r₁₂
select

A  >  B

A
B

100 rollout pairs, judged side-by-side from three viewpoints by an expert

cleaner graspssmoother motionsafer contacts
distill

✦ Dense reward model

Qwen3-VL, regressed onto the ≈200 preference-labeled rollouts · per-step, reusable across cycles

progressqualitysafety

Select: keep the candidates whose induced return rankings best match human preferences · calibrate once, score every rollout.

01Score

Zoom in: a VLM becomes a dense reward generator

You are an expert reward labeler for robot manipulation videos.
TASK: {TASK_INSTRUCTION}

REWARD RUBRIC (anchor scores in [0,100]; interpolate):
  - 0: no relevant action; robot has not engaged
  - {RUBRIC}   ← milestones → anchor scores

HARD FAILURES (override the rubric): if visible in a
frame, its reward MUST be 0 — no matter what
milestone was reached earlier.

Frames arrive in SHUFFLED order — judge each purely
on visual content.

OUTPUT: JSON — { frame_index, task_reward, frame_description }
  • Rubric anchors encode the task-level preference; the VLM interpolates between milestones
  • Hard failures override — no partial credit for a milestone that ends in a failure state
  • Shuffled frames — each frame judged on what it shows, not where it sits in the episode
  • Temperature sampling → K = 12 candidate reward traces per rollout

01Score

Zoom in: keep what humans agree with, distill it once

Select

One trace is chosen per rollout; keep the picks whose returns agree with the most human verdicts — A ≻ B should mean GA > GB

distill

✦ Distill into Rθ

Regress per-step rewards onto the ≈200 selected traces · one shared model for all tasks

trained oncefrozen across cycles

The human budget is spent exactly once — the distilled Rθ scores every rollout of every later cycle for free.

01Score

The reward model watches every rollout

  • Scores task progress, execution quality, and safety at every step
  • Judges rollouts like a human operator
  • Credit assigned chunk by chunk, not per episode

01Score

On real rollouts, credit lands chunk by chunk

Per-step reward predictions and advantage labels on a failed box-packing episode and a successful cup-insertion episode

A failed packing episode still contains well-executed chunks · a successful insertion contains chunks a human would reject — episode-level labels can express neither.

02Relabel

A return only means something relative to its state

hard state

most attempts from here fail

Advantage=True

easy state

most attempts from here succeed

Advantage=False
  • The same return can be excellent in a hard recovery state and mediocre in an easy one
  • So each chunk must be judged against what is achievable from its starting state
  • Prior work fits a value function for this baseline — retrained every cycle, and, learned from binary success, it collapses to “time-to-success”: blind to execution quality

CLIFT’s baseline is non-parametric: retrieve what the robot did from lookalike states.

02Relabel

How a chunk earns its advantage token

Return

G(τ) = Σ γΔt Rθ(ot; ℓ)

the chunk’s discounted return over its window

retrieve

Similar states

query observation
query
retrieved match 1
match 1
retrieved match 2
match 2

DINOv3 cosine · best frame per rollout
their returns form the comparison set

rank

✦ Binarize

Advantage=Trueabove the cut
Advantage=Falsebelow the cut

The percentile threshold auto-calibrates credit to state difficulty · human demonstrations are always Advantage=True.

02Relabel

Zoom in: retrieval instead of a value function

Embed

sim(o, o′) = ⟨φ(o), φ(o′)⟩

φ = frozen DINOv3 (ViT-S/16, d = 384), ℓ2-normalized — cosine similarity on the unit sphere. Nothing task-specific to train.

match

One frame per rollout

me = arg maxt sim(oet, oq)

Each other rollout contributes only its single most-similar frame — a trajectory’s near-identical neighboring frames can’t flood the comparison set.

admit

✦ A fair peer group

sim ≥ δ  →  one peer chunk

A single global threshold δ, tuned so a query gathers |N| comparable peers on average. Peers share the starting state — their returns differ mainly in what the policy did next.

No value network, nothing retrained per cycle — the baseline is the robot’s own accumulated experience.

02Relabel

Reward feedback becomes ordinary SFT data

  • Each chunk compared, via visual retrieval, against chunks from similar states → advantage token
  • Observation and action exactly as executed; the advantage written into the instruction, in plain text
  • To the API, this is just supervised data

02Relabel

After relabeling: four bins, one plain-text format

Human demos

“⟨task prompt⟩,
Advantage=True

always positive, in every cycle’s dataset

Good chunks

“⟨task prompt⟩,
Advantage=True

top 30% among peers from similar states

Bad chunks

“⟨task prompt⟩,
Advantage=False

kept as contrastive signal — not discarded

Skipped chunks

“⟨task prompt⟩”
no advantage token

not every chunk gets a verdict — these stay unlabeled

Observations and actions exactly as executed · both labels are trained on — to FSFT, all of it is ordinary supervised data.

03Condition

At inference, the token becomes a switch

  • During training the advantage token was a label
  • At deployment it is flipped one way — True
  • The policy steers toward what humans prefer, away from what the reward model rejected

03Condition

Zoom in: what deployment actually looks like

// every inference call, every task, every cycle
o = head cameras (regular + wide) + proprioception
ℓ = "Stack the plate from the rack, Advantage=True"

a = π(o, ℓ)   classifier-free guidance, β = 0.2

execute the 1.6 s action chunk → observe → replan
  • The positive token rides in every inference prompt — plain text, no model surgery
  • Classifier-free guidance (β = 0.2) further amplifies the policy’s preference toward high-quality actions
  • One fixed deployment recipe for every model and variant — gains come from training, not inference tricks

03Condition

Why a single token is enough

action space Advantage=False Advantage=True guidance β=0.2
  • Trained on both labels, the policy learns a conditional: good and bad execution, and the contrast between them
  • Conditioning on True selects the preferred mode; guidance pushes further toward it
  • And it is still SFT on actions the robot actually executed — keeping the policy close to real behavior, in the spirit of the objective’s anchor

Same family as advantage-conditioned policies & “guidance as policy improvement” — injected purely through data.

04Iterate

Deploy → score → relabel → fine‑tune — then again

  • Relabeled rollouts appended to a cumulative dataset
  • Base model re-fine-tuned from scratch each cycle — avoids distributional drift
  • Each cycle: a stronger task specialist

04Iterate

Each cycle: grow the data, retrain from the base

Dk = Ddemo ∪ Drollout1:k

πk+1 = FSFT(Dk) from the base checkpoint

2 hteleop demos per task
100preference pairs, once
100rollouts per task · cycle
10SFT epochs per cycle
  • Cumulative: each cycle’s relabeled rollouts join the pot; demonstrations stay pinned Advantage=True
  • Every cycle fine-tunes from the base model, never from πk — no compounding drift, full pretrained capacity reused
  • Rθ trained once, frozen for all cycles
  • Deployment is evaluation: the same 100 rollouts score the policy and become the next cycle’s training data

04Iterate

Why keep the failures? The hardest task answers

  • Same rollouts, two recipes: filter episodes — keep only the top 30% by return — vs relabel every chunk
  • Easy tasks: successes are plentiful, discarding the rest costs little — the variants match
  • Plate handover: successes are rare, most rollouts fail — the discarded 70% is exactly where the signal lives
  • Chunk relabeling recovers good chunks from failed rollouts and turns bad ones into contrastive negatives
dense chunk relabeling top-30% episode filtering

Bimanual plate handover · after 2 cycles

96
≈84

Box packing · cup insertion

≈100
≈100

success rate % · both variants near-perfect on the easier tasks · the gap opens where failures dominate

Failure is not waste — it is exactly the training signal the hard tasks need.

04Iterate

Zoom out: the whole loop, one more time

The CLIFT flywheel diagram, revisited
01 score — preference-calibrated dense reward 02 relabel — retrieval-based advantage tokens 03 condition — flip the token to True 04 iterate — fresh fine-tune from base

Everything travels through FSFT as ordinary supervised data — the model box never opens.

Real Unitree G1 humanoid · three contact-rich tasks

Whole-body VR teleoperation

Whole-body VR teleoperation for demonstrations

Task suite: keyframes of box packing, cup insertion, and bimanual plate handover

Box packing · cup insertion · bimanual plate handover

Whole-body balancing throughout — end-effector pose and contact geometry keep shifting.

Generalist → specialist, in two cycles

Box packing

93%100%

Cup insertion

70%98%

Bimanual plate handover

53%96%

Success rate over 100 trials per task · API-only · no additional human demonstrations

results

One chart, the whole story — starting from SFT

Success rate over 100 trials for five adaptation recipes — SFT baseline plus two flywheel cycles on three tasks — cycle bars dimmed, SFT baselines visible

100 trials per bar · hatching = flywheel cycle, still dimmed · SFT alone: GROD 93/70/53 · π0.5 59/50/5

results · finding 1

Two cycles turn GROD into a task specialist

The two GROD recipes highlighted: both climb to near-perfect success within two cycles
box packing 93 100 cup insertion 70 98 plate handover 53 96

Both GROD recipes beat the SFT baseline at every cycle · dense chunk relabeling wins the hardest task (96 vs ≈84)

results · finding 2

The same pipeline lifts π0.5 too

The two pi-0.5 CLIFT recipes highlighted: success rises over two cycles but plateaus below GROD
box packing 59 76 cup insertion 50 56 plate handover 5 30

With the high-return recipe, two cycles net a gain on every task — zero model surgery — but progress is uneven, and the ceiling sits far below GROD’s.

results · finding 3

The base model sets the ceiling — access doesn’t

Invasive FiLM-conditioned pi-0.5 highlighted against API-only GROD: the gap does not close

π0.5 granted invasive FiLM conditioning (green) — an architectural change CLIFT forgoes — still trails API-only GROD (blue) on every task (one invasive baseline evaluated).

Emergent behaviors from closed-loop practice

reorients the box in-hand to set up an easier grasp

recovers from a failed first insertion — retries and succeeds

Behaviors absent from the teleoperated demonstrations.

Same CLIFT recipe, opposite outcomes

zero-shot: unseen objects & configs · only the base model differs

before CLIFT after CLIFT GROD84% 98% climbs π0.570% 52% collapses

The base model sets the ceiling — CLIFT can only climb toward it.

why the collapse

π0.5 cannot see its own failures

pi-0.5 reaches to pick a plate
1 · reaches to pick a plate
the pick fails
2 · pick fails
pi-0.5 proceeds to hand over with an empty gripper hand is empty ✕
3 · hands over anyway

after identical sft · bimanual plate handover GROD53%vsπ0.55%

hypothesis — over-reliance on proprioceptive cues; on-policy SFT may reinforce those correlations.

CLIFT

Task mastery for closed-weight robot foundation models —
without ever opening the model box.

Yuxin Chen, Hari Srikanth, Nathan Jew, Menglin Wu, Pengcheng Wang, Junli Ren,
Masayoshi Tomizuka, Peng Xu, Jinyu Xie, Ran “Thomas” Tian

QR code linking to the arXiv paper
ArXiv
QR code linking to the project website
Website
QR code linking to the homepage
Homepage

What’s next: the RL pyramid for Physical AI

Learning to reason, act, and self-improve

Three-layer glass pyramid: reasoning circuits at the base, closed-loop robot arms in the middle, a self-improving robot at the top, threaded by a glowing central beam

On-device self-improve

on-device RL that keeps improving the model at deployment

Act · closed loop

real-to-sim closed-loop RL for robots

Learning in sensor-physics joint sim

Reason

RL for task understanding, planning & decision-making

Agentic research

agents propose, run, and analyze the experiments at every layer

Acknowledgments

Google DeepMind This work is supported by Google DeepMind funding.

3

published papers

more under development

7

undergraduate students

working on the robot

1

award

ICRA WBCD challenge
1st in the US · 3rd globally