Skip to main content

Dexset

Case Study: How We Scaled VLA Training Data for a Humanoid Foundation Model Team

On station four of the collection floor, an operator sets down her leader arms after a clean bowl-to-sink transfer, and the batch dashboard flags the episode anyway. The instruction field reads “put the bowl in the sink,” the same sentence shape as two hundred episodes before it, and the template-share gate has just tripped. That flag, firing in the middle of a live program, is the single most important control in the engagement this post describes.

The client behind that program, a humanoid foundation model team, did not come to us asking for data. They came asking why their model was failing. Their OpenVLA-style fine-tune scored well on standard tabletop evaluations, then collapsed on the bimanual kitchen tasks their product actually needed. Worse, the policy only responded reliably to instructions phrased exactly like the training labels. “Put the bowl in the sink” worked. “Move that bowl into the sink” mostly did not.

The failure had a clean explanation in their data, and it is the most common one we see. Their existing corpus was large by episode count, roughly three times what we ended up collecting, but it covered only 9 task families and used 14 instruction templates. The model had learned those 9 tasks and those 14 sentence shapes, thoroughly, and almost nothing else. Volume was never the problem. Distribution was.

This post walks through what we scoped, what the QA gates caught, what it cost in structure (with our standard benchmark rates), and what changed in their evaluations. If you are planning a fine-tuning collection, the transferable part is the method: diversity targets set as hard gates, not aspirations.

Key Takeaways – 1,400 hours of bimanual teleoperation across 42 task families replaced a corpus 3x larger in episode count but 5x narrower in tasks. – A hard instruction diversity gate (no template above 8% of any batch) fixed paraphrase brittleness; language annotation ran at our standard $12-15 per data-hour, segment-level. – Blending new data 60/40 with the legacy corpus roughly doubled held-out kitchen task success in the client’s own evaluation harness. – QA rejected 11% of collected episodes; the top three causes were teleoperator mid-chunk pauses, frame-action sync drift, and failed-but-unlabeled episodes. – Total program ran 19 weeks from scoping to final delivery in LeRobot-compatible format.

The Starting Point: A Large but Narrow Corpus

A narrow corpus is a dataset whose episode count outruns its task, scene, and language diversity, and it trains models that look strong on in-distribution tests and brittle everywhere else. The client’s legacy data was a textbook case: high volume, 9 task families, 14 templates, single kitchen scene, one camera geometry.

The published evidence already pointed to the fix. Open X-Embodiment showed pooled diversity beating single-domain volume (arxiv.org/abs/2310.08864), and Mobile ALOHA reached strong per-task results co-training with roughly 50 demonstrations per task over a broad base (arxiv.org/abs/2401.02117). Our job was to apply that at commercial fine-tuning scale on their embodiment, where cross-embodiment transfer is weakest.

What We Scoped

The collection specification is the deliverable that matters most, so we fixed it before a single episode was recorded:

  • Volume and spread: 1,400 robot-hours of bimanual teleoperation across 42 task families, capped at 60 hours per family to force breadth.
  • Scenes and objects: 6 kitchen layouts, 300+ object instances, mandated lighting variation across sessions.
  • Capture spec: 4 camera streams per station (two exocentric, head, wrist), 30 Hz, hardware-timestamped, frame-to-action skew held under 10 ms.
  • Language spec: natural free-form instructions written at collection time, segment-level labels with timestamps on all long-horizon episodes, and the diversity gate below.
  • Format: LeRobot-compatible episodes so their training stack ingested data on day one (github.com/huggingface/lerobot).

The Instruction Diversity Gate

An instruction diversity gate is a batch-level QA rule that rejects any 1,000-episode batch where a single instruction template exceeds a set share, in this case 8%. Annotators drift toward comfortable phrasings; without a gate, “pick up the X and place it in the Y” quietly becomes half your labels.

We enforced three thresholds per batch: template share under 8%, minimum unique verb count, and minimum spatial-relation phrase coverage (“behind the cutting board”, “second shelf from the top”). Batches that failed went back for paraphrase augmentation before delivery. This is also where the money went: segment-level annotation with paraphrase passes ran at our standard $12-15 per data-hour, versus $8-10 for a plain episode-level pass. The client initially pushed back on that line item. It ended up being the line item their evaluation results vindicated most directly.

How the Program Ran

A collection program’s timeline is set by station-hours and reset speed, not by calendar ambition, so we planned backwards from throughput. The program ran 19 weeks across six bimanual stations: two weeks of scoping and task-family design with the client’s ML team, one week of operator training and pilot batches, fourteen weeks of production collection, and two weeks of final QA, re-collection of rejected hours, and packaging.

The pilot week matters more than its size suggests. We shipped the first 40 hours to the client immediately and they ran a smoke-test fine-tune before full production started. That surfaced two spec problems while they were still cheap to fix: their training stack expected a different gripper action convention, and one camera’s mounting height put the left workspace edge out of frame on tall-object tasks. Catching either in week twelve instead of week three would have cost hundreds of re-collected hours. If a vendor does not offer a pilot-batch gate before full-rate production, build one into the contract yourself.

Weekly deliveries went out in LeRobot format with per-batch QA reports, so the client’s dataset grew continuously instead of arriving as one end-of-program surprise.

What QA Caught

Episode rejection is the health metric of a collection program, and ours ran at 11% across the engagement. Where those episodes died:

Rejection CauseShare of RejectsWhy It Matters for VLA Training
Teleoperator mid-chunk pauses34%Corrupts action-chunk targets for chunked policies (ACT-style and continuous heads)
Frame-action sync drift > 10 ms27%Measurably degrades continuous-action fine-tunes
Failed episode, unlabeled22%Success mislabeling flattens gains on precision tasks
Dropped frames / camera faults11%Breaks observation continuity
Instruction-episode mismatch6%Directly poisons language conditioning

Every rejected hour was recollected within the fixed budget because our per-hour rates ($40-60 for bimanual leader-follower work, our standard benchmark range) price in an expected rejection band. If a vendor quotes you a rate with no stated rejection policy, that risk is sitting on your side of the table.

Results

The client fine-tuned on the new corpus blended 60/40 with their legacy data and ran their internal evaluation harness before and after. Directional results, their harness, not an audited benchmark:

  • Held-out kitchen task success roughly doubled against the legacy-data baseline.
  • Paraphrased-instruction success moved from near-random to parity with template phrasing.
  • Long-horizon task completion improved most on tasks with segment-level labels, consistent with what the pi-zero pipeline reports about post-training data quality (arxiv.org/abs/2410.24164).

The result we quote most often is the second one, because it isolates the language layer. Nothing about the model changed. The labels changed.

What Transfers to Your Program

Four rules from this engagement apply to almost any VLA fine-tuning collection:

  • Audit distribution before buying volume; count task families and unique templates in your existing corpus first.
  • Set diversity thresholds as batch-level rejection gates, not guidelines.
  • Price annotation and QA as separate line items so you can see what you are cutting when you cut.
  • Cap hours per task family; the marginal episode of a covered task is your most overpriced purchase.

The full scoping framework, cost tables, and the RFP scorecard we build these programs from are in the complete guide to VLA training data.

Next Step

if your evaluations look like this client’s before-picture, book a scoping call. We will audit your corpus distribution before recommending a single collection hour, or start with the complete VLA training data guide.

Frequently Asked Questions

How many hours of data does it take to fine-tune a VLA for a humanoid?

This program used 1,400 hours across 42 task families, blended with existing data. Humanoids sit at the expensive end because cross-embodiment transfer from open datasets is weakest for them; standard single arms often need only 200-500 hours.

A batch-level QA rule that rejects annotation batches where any single instruction template exceeds a set share (we used 8%), with minimum thresholds for unique verbs and spatial-relation phrases. It prevents the label monoculture that makes VLA policies brittle to paraphrasing.

The legacy data still carried valid task knowledge; the 60/40 blend kept that signal while the new data corrected the distribution. Full replacement wastes paid-for coverage and can regress previously working tasks.

We ran 11% on this program, and 10-15% is the band we consider healthy for bimanual long-horizon work. A vendor reporting near-zero rejection is usually not checking sync, pauses, or success labels.

Case Study: How We Scaled Egocentric Data Collection for Robotics for a VLA Model

Picture yourself as the head of data at a humanoid startup: your researchers have just validated the experiment that could anchor the next funding round, co-training human egocentric video with your teleop corpus improves policy generalization, and then you run the arithmetic on your own collection capacity and find the experiment wants ten times more human data than your team can produce this year. That is exactly where one humanoid foundation model team (unnamed here by agreement) was standing when they contacted us. Their result was in line with what EgoMimic-style research had reported (arXiv:2410.24221); their teleop dataset was around 400 hours and growing slowly.

Why was a well-funded team stuck? Because collection was competing with research for the same people. Every hour their engineers spent managing capture logistics was an hour not spent on training runs, and their pilot attempts at crowdsourced collection had returned footage with unusable sync and a rejection rate far beyond anything a program can absorb. Familiar story; we hear a version of it most months.

This post is the anonymized production log of what happened next: how we scoped, staffed, and delivered 4,000 QA-passed hours of egocentric data in 14 weeks, what it cost per hour, where we lost yield, and the three decisions that mattered most. Numbers are real from our program tracking, rounded to protect the client. The thesis the whole log supports: scaled collection is a manufacturing problem, and the returns came from three protocol decisions made before hour one, not from capture volume.

Key Takeaways – 4,000 QA-passed egocentric hours delivered in 14 weeks across three task families (kitchen, warehouse shelving, assembly bench) for a humanoid VLA co-training pipeline. – Blended cost landed in the $22 to $34 per hour band: mono-heavy capture for breadth, stereo for depth-critical tasks, dense hand-pose annotation on only the 30 percent of hours flagged retarget-critical. – First-pass QA yield started at 71 percent in week one and reached 86 percent by week six after protocol fixes; the delta was worth roughly $18K. – Camera height matched to the robot’s head frame and constrained “robot-plausible” motion instructions were the two protocol choices the client’s researchers valued most. – The client reported improved success on unseen-object manipulation evaluations versus their robot-only baseline after co-training on the mixed corpus.

The Brief: What “Scaled” Actually Meant

Scaling egocentric data collection means hitting a volume target at a defined quality bar and annotation depth on a fixed calendar, and all four variables were specified before we captured an hour. The brief we agreed with the client’s head of data:

  • Volume: 4,000 QA-passed hours (not raw hours; the distinction is the whole game).
  • Task families: kitchen manipulation, warehouse shelf pick-and-place, small-parts assembly bench, weighted 45/35/20.
  • Viewpoint constraint: camera height within 10 cm of the robot’s head frame; field of view overlapping the deployment camera’s.
  • Annotation: temporal task segmentation on everything; 3D hand pose and object tracks only on episodes their researchers flagged as retarget-critical, which settled at about 30 percent of hours.
  • Format: episode-structured delivery compatible with their LeRobot-based ingestion (github.com/huggingface/lerobot).

That last 30 percent decision deserves emphasis. Dense annotation on all 4,000 hours would have added roughly $10 per hour across the corpus, $40K of spend their training plan did not need. Annotation depth should follow the training mechanism; this program is why we repeat that line so often.

The Setup: Rigs, People, Protocol

Our production setup for this program combined two rig families, 26 trained collectors, and a task protocol written jointly with the client’s researchers in week zero. Rig split:

  • GoPro-class mono head rigs at 4K/60 for the breadth corpus, where the consumer was encoder pretraining and temporal understanding.
  • RealSense D455 helmet rigs for depth-critical assembly and shelving tasks, where metric 3D fed their grasp analysis.

The protocol work is what separated this from “wearing cameras at work.” Every task became a card: start state photo, goal condition, allowed object set, retry rule, and, critically, motion constraints. Collectors were instructed to keep grasps within the robot’s gripper envelope (no five-finger tricks a parallel-jaw gripper cannot imitate), avoid motions outside the robot’s reach profile, and re-stage rather than improvise when a scene drifted off-spec. We borrowed episode discipline from how public robot datasets are structured; if it cannot be expressed as a clean episode, the way entries in Open X-Embodiment are (arXiv:2310.08864), it does not ship.

The Numbers: Timeline, Yield, and Cost

Program metrics are the honest core of any case study, so here is the phase table straight from our tracking, rounded:

Phase Weeks Hours Delivered (QA-Passed) First-Pass Yield Notes
Pilot + protocol iteration 1 to 2 120 71% Blur and sync failures dominated rejections
Ramp 3 to 6 900 78% rising to 86% Fixed exposure presets; re-trained 4 collectors
Steady state 7 to 12 2,400 85 to 88% ~420 hours/week across 26 collectors
Completion + re-delivery 13 to 14 580 87% Backfilled task-family gaps flagged by client

Cost landed where the pilot predicted: mono breadth hours in the low $20s per QA-passed hour, stereo depth-critical hours with dense annotation in the low-to-mid $30s, blending to $22 to $34 across the corpus. For context on how those bands compare across rigs and vendors, the economics section of our pillar guide has the full tables: The Complete Guide to Egocentric Data Collection for Robotics.

Where did the 12 to 29 percent of rejected hours go? Motion blur in fast kitchen tasks (fixed with shutter-priority presets), IMU packet loss on two aging rigs (retired), off-protocol grasps (re-training), and a stubborn tail of episodes with ambiguous outcomes (protocol clarification). Yield improvement from 71 to 86 percent was worth roughly $18K over the program, which is why we staff a protocol engineer for the first six weeks rather than treating capture as a solved problem.

The Three Decisions That Mattered

Looking back through the retro notes, three decisions carried most of the outcome:

1. Matching viewpoint geometry before hour one. Camera height within 10 cm of the robot’s head frame and overlapping FOV meant the client’s encoder saw deployment-like images from the first batch. This costs nothing at capture time and is nearly impossible to fix afterward.

2. Robot-plausible motion constraints. Instructing collectors to stay inside the gripper envelope narrowed the embodiment gap at the source instead of hoping retargeting would absorb it. Their researchers called this the highest-value protocol clause.

3. Two-tier annotation. Dense hand pose on 30 percent of hours, selected by the researchers who consumed it, kept the budget aligned with the training plan and cut roughly $40K of unneeded spend.

An honorable mention: weekly delivery instead of end-of-program delivery. The client’s researchers trained on batch one while we captured batch four, surfaced a task-family gap in week five, and we corrected course while the collectors were still staffed. On a single-delivery program, that gap would have been discovered after demobilization, when fixing it costs triple.

The Outcome, Stated Carefully

The client reported improved success rates on unseen-object manipulation evaluations after co-training on the mixed corpus versus their robot-only baseline; direction consistent with published ego-plus-robot co-training results, and we will not dress it in precise percentages that are theirs to publish, not ours. What we can state as first-hand fact: the corpus passed their ingestion validation on first delivery, the program hit its calendar, and they extended into a second phase covering exocentric paired capture.

Opinion, clearly flagged: I think the 10x-human-to-robot-hours ratio this team converged on will look conservative within two years. Human egocentric capture scales with people; teleop scales with robot fleets, and people are the cheaper fleet.

Running This Play for Your Team

If your co-training experiments are data-starved, the fastest way to de-risk a program like this is a scoped pilot: 50 to 100 hours against your protocol, with QA reports attached. Book a scoping call and bring your task list; we will bring the yield curves from programs like this one.

Frequently Asked Questions

How long does it take to collect 4,000 hours of egocentric robotics data?

In this program, 14 weeks end to end with 26 trained collectors, including a two-week pilot and protocol iteration phase. Steady-state throughput ran about 420 QA-passed hours per week.

The blended rate landed between $22 and $34 per QA-passed hour: mono breadth capture in the low $20s, stereo depth-critical hours with dense hand-pose annotation in the low-to-mid $30s.

Match camera height and field of view to the robot’s head frame, constrain grasps to the robot’s gripper envelope, keep motions inside its reach profile, and structure everything as clean episodes with defined start states and outcomes.

This program started at 71 percent first-pass yield and stabilized at 85 to 88 percent by week six. Budget for 15 to 25 percent rejection if you are starting fresh.

The client reported improved success on unseen-object manipulation evaluations after co-training the mixed corpus versus their robot-only baseline, consistent with published results such as EgoMimic. Exact figures are theirs to publish.

Case Study: How a Series B Humanoid Startup Rebuilt Data Procurement for Its VLA Model

Grasp success on the team’s fixed eval suite dropped six points in a single week, and for two days nobody could explain it. The model had not changed. The training code had not changed. What had changed, it eventually emerged, was a data batch: one of their three vendors had silently rescaled gripper actions between deliveries. The team had money, talent, and a working humanoid platform. What stalled their VLA program was procurement: three data vendors, three delivery formats, no shared acceptance spec, and an ML team that had quietly stopped trusting incoming data. By their own estimate, roughly a quarter of purchased hours never reached a training run.

Nothing about that situation was unusual. It is what happens when data purchasing grows by accretion: a vendor added for a demo push here, another for a task category there, each with its own definitions of “hour,” “annotated,” and “calibrated.” The result is not one data pipeline but several, with the training team as the manual integration layer.

This post walks through how the team rebuilt procurement in one quarter using the four artifacts from the Robotics Data Buyer’s Playbook: a spec-first RFP, a weighted scorecard, a red flags screen, and a 50-hour paid pilot. The client is anonymized (a Series B humanoid startup; we do not name customers), but the process and the numbers are the real pattern we see when buyers switch from improvisation to protocol. The thesis this case argues: pilots run under production conditions predict production performance, and paper evaluation alone does not.

DexSet was one of the vendors evaluated in this process, so we saw the RFP, the pilot, and the contract from the receiving side. That is exactly the vantage point a buyer should want documented.

Key Takeaways

  • Starting point: three vendors, three formats, ~74 percent average usable-hour yield, about one engineer-day of triage per delivery.
  • The rebuild: one written acceptance spec, an RFP to six vendors, a 10-criterion weighted scorecard, paid 50-hour pilots for the top two.
  • Pilot results diverged sharply: 90 percent yield with a positive policy delta versus 78 percent yield and a failed loader test.
  • Twelve weeks later: yield held within two points of the pilot across the first 1,000 contracted hours, and per-delivery engineering time dropped from a day to under an hour.

The Starting Point: Accretion, Not Architecture

The team’s data supply had accreted rather than been designed: each vendor relationship was created for a short-term need, and none was ever re-evaluated. Vendor A delivered undocumented HDF5 with a schema that shifted between batches. Vendor B delivered rosbag2 that had to be converted and re-timestamped. Vendor C delivered mp4s plus CSV joint logs with no sync guarantees at all.

The measurable symptoms, from their own tracking:

  • Average usable-hour yield around 74 percent across vendors, measured against the acceptance checks they eventually wrote down.
  • Roughly one engineer-day per delivery spent on conversion and triage.
  • Two training regressions in one quarter traced back to data batches, one to a sync drift issue, one to inconsistent gripper action scaling between vendors.

The trigger for change was mundane: a planning meeting where nobody could answer what an incremental 1,000 hours of manipulation data would actually cost, because nobody could say what fraction would be usable.

Step 1: Write the Spec Before Talking to Anyone

The acceptance spec is a short document that defines what a usable hour means for a specific program, and writing it was the most valuable week of the whole rebuild. Theirs fit on three pages: stereo egocentric plus wrist cameras at defined resolutions and frame rates, proprioception at 50 Hz minimum, time sync under 10 ms across all streams, a 60-task manipulation list with reset criteria, an annotation rubric, and delivery in LeRobot format with a schema doc, following the conventions the ecosystem inherited from Open X-Embodiment and the ALOHA line of work (arxiv.org/abs/2310.08864; arxiv.org/abs/2304.13705).

The immediate effect was that vendor quotes became comparable for the first time. The secondary effect was internal: the ML and data teams had to agree on what they were actually buying, which surfaced two silent disagreements about camera placement that had been corrupting cross-vendor consistency for months.

Step 2: RFP and Scorecard

The RFP went to six vendors with fifteen questions requiring numeric answers: committed usable-hour yield, sync tolerance and recheck cadence, audit accuracy, rig counts behind throughput claims, per-hour pricing by task complexity, pilot terms, and licensing. Four vendors answered with numbers. Two answered with adjectives and were dropped without further calls, which is the red flags screen doing its job cheaply.

The four remaining responses were scored independently by two people on the 10-criterion weighted scorecard (quality SLAs 15, modality coverage 12, calibration/sync 12, down to IP/licensing at 7). Independent scoring earned its keep in the reconciliation meeting: the two scorers disagreed by more than a point on only three criteria, and every disagreement traced to an ambiguous vendor answer rather than a difference in judgment. Those ambiguities went back to the vendors as written clarification requests, which is a politer and more useful outcome than one person’s optimism deciding the ranking.

The scoring separated the field more on contract terms than on hardware: two vendors wanted broad rights to reuse delivered episodes for other customers, which the team treated as disqualifying on the licensing criterion. Two finalists advanced.

Step 3: The 50-Hour Paid Pilots

Both finalists ran paid 50-hour pilots under production conditions, judged on four numbers fixed in the pilot agreements before capture began. This is the step that paper evaluation cannot replace, and the results diverged more than the scorecards had predicted.

Pilot metric (agreed in advance) Threshold Finalist 1 Finalist 2
Usable-hour yield vs acceptance spec ≥85% 90% 78%
Annotation accuracy (independent 5% re-label) ≥97% 98.2% 96.1%
Policy success delta on fixed 12-task eval Positive +6 points vs baseline +1 point
Loader time into LeRobot pipeline ≤1 engineer-day ~2 hours Failed (schema mismatches, 3+ days)

The policy-delta test deserves a note. The team fine-tuned the same fixed baseline policy twice, once on their existing mix, once with the 50 pilot hours added, and evaluated both on the same 12 tasks. Fifty hours is a small delta at VLA scale, and they treated it that way: not as proof of final performance, but as a canary. Data that helps at 50 hours might help at 1,000; data that does nothing at 50 hours is a warning you can act on before signing an annual contract.

Step 4: Contract and the Twelve Weeks After

The contract encoded the pilot numbers rather than replacing them with prose: yield commitment at 88 percent with redelivery of failures, sync tolerance and recalibration cadence as delivery requirements, LeRobot schema versioned in an appendix, quarterly re-audit rights, and no vendor reuse of delivered episodes.

The results over the first 1,000 contracted hours were unremarkable in the best sense. Yield held between 88 and 90 percent, within two points of the pilot. Engineering time per delivery fell from roughly a day to under an hour, because the format and schema were locked before signature instead of negotiated after each batch. The two silent disagreements about camera placement did not recur, because the spec, not tribal memory, was the reference.

The honest caveat: this process cost about five weeks end to end and roughly $7,000 in pilot fees across two finalists. For a team spending six figures annually on data, that insurance premium was around 5 percent of program cost. For a team buying 20 exploratory hours, it would be overkill, and we say so in the full playbook.

Next Step

Ready to scope your data program? Talk to our team.

Frequently Asked Questions

How much did the procurement rebuild cost compared to what it saved?

About five weeks of process time and roughly $7,000 in paid pilot fees. Against it: yield moved from ~74 to ~90 percent, and per-delivery engineering time dropped from a day to under an hour, which on a six-figure annual program repaid the process cost within the first deliveries.

Because scorecards rank paper, and paper can lie by omission. In this case the two finalists scored within a few points of each other, then diverged by 12 yield points and a failed loader test under production conditions.

It is enough to judge the vendor’s pipeline, not the model’s ceiling. Treat the policy success delta as a canary: positive movement at 50 hours justifies scaling; zero movement is a cheap warning.

The pilot numbers themselves: yield commitment with redelivery terms, sync tolerance as a delivery requirement, a versioned schema appendix, re-audit rights, and an explicit ban on vendor reuse of delivered episodes.