En SO-100 billig robotarm på et skrivebord, sat op til teleopering og politiktræning
DAggerSO-100ImitationslæringVLATeleopering

Kørsel af en DAgger Loop på en SO-100 med en VLA-politik

AY-Robots ResearchAugust 27, 202615 min læsetid

En trin-for-trin-fremstilling af én human-gated DAgger-runde på en SO-100-arm: kør politikken og optag den, overtag når den løber skævt, arkivér kørslen som en rettelse, sammensæt et blandet datasæt og fortsæt træning fra et checkpoint. Inkluderer tastatur- og skyderstien for overtag for mennesker uden en leader-arm, og de fire fejl, der gør en runde værdiløs.

Din politik kører. Den når ud efter terningen, lukker griberen en centimeter for tidligt og fortsætter, som om den havde fat i den. Intet fejler, og ingen mængde stirring på træningtabet forklarer det. Løsningen er ikke yderligere 20 000 gradienter på de samme demonstrationer. Det er at sætte din hånd tilbage på armen præcis hvor det går galt, optage hvad du gjorde i stedet, og træne næste checkpoint på de gamle data plus den rettelse. Det er en DAgger runde, og sådan køres en på en SO-100 med en vision-language-action politikk.

Teorien findes andre steder: hvorfor datasæt aggregation virker overhovedet og hvad human gating ændrer ved det. Dette er driftsmanualen, og den forudsætter et trænet checkpoint, et fungerende kamerasæt og en arm der bevæger sig. De seks trin herunder er loopet som implementeret på DAgger-siden på denne platform, men sekvensen er den samme fra dine egne scripts.

Én runde kort sagt

  • Kør den trænte politikk og optag den, med rundens opgavetekst i stedet for et generelt teleoperings-label.
  • Overtag i det øjeblik adfærden løber skævt: en spejlhandover med en leader-arm, øjeblikkelig og manuel over tastatur eller skydere uden en.
  • Triage enhver kørsla: arkivér den som en rettelse, behold den som en evalueringsperiode eller kassér den.
  • Sammensæt blandingen for hånd - oprindelige demonstrationer plus rettelser, episoder valgt pr. kilde. Træn aldrig kun på rettelser.
  • Fortsæt træningen fra det sidste checkpoint, og noter hvilket checkpoint der producerede hvilken blanding.
  • Det tal der siger om runden var værd noget er intervention rate, ikke træningtabet.

Hvorfor anden runde ikke bare er mere data

Behavior cloning træner på de tilstande en menneske besøgte. Ved testtidspunktet besøger politikken de tilstande den forårsager, og små handlingsfejl sammensætter sig til tilstande der ikke er dækket af nogen demonstration. Ross, Gordon og Bagnell formaliserede den fejl for AISTATS 2011 og svarede med en iterativ algoritme der træner en stationær deterministisk politikk og under deres reduktion skal præstere godt under den statsfordeling den inducerer: kør den nuværende politikk, få eksperten til at etiketere de tilstande den rent faktisk nåede, tilføj dem til datasættet, gentræn, gentag. Kelly et al. gjorde forespørgselen praktisk med HG-DAgger, hvor mennesket beslutter hvornår der skal overtages i stedet for at etiketere tilstande uden at holde kontrollen; de rapporterer forbedret performance over både DAgger og behavior cloning på en simuleret og en rigtig autonomous driving opgave. Human gating er hvad der gør loopet tolerabelt på en desk arm - du bevæger kun dine hænder når noget løber skævt.

To konsekvenser betyder mere i praksis end teorien gør. Rettelser er ikke almindelige demonstrationer: de koncentrerer sig ved flaskehalsregionerne Mandlekar et al. beskriver, hvor en lille afvigelse falder politikken ind i tilstande demonstrationerne aldrig dækkede. Og et datasæt lavet kun af de svære dele er et dårligt formet datasæt - Belkhale, Cui og Sadigh argumenterer fra datasættets side at tilstandsdiversitet ikke altid er gavnlig, og at handlingsdivergence og transitionsdiversitet sammen beslutter datasætkvalitet. Det blandede datasæt er ikke et kompromis, det er pointen.

Fryse disse før runde en

En DAgger runde sammenligner en politikk med sig selv over tid. Alt du ændrer mellem runder der ikke er datasættet gør den sammenligning meningsløs.

  • Kamera positioner og monteringer, håndledskamera inkluderet. Løsn en klemme og du ændrede observationsdistributionen, ikke politikken.
  • Eksponering og hvidbalance, hvis dit capture stack lader dig fastgøre dem. Auto-eksponering der drifter mellem runder er en langsom, usynlig domæneshift.
  • Arm kalibrering og servo nul positioner. Hvis du skal rekalibrere, behandl alt optaget før det som et separat datasæt.
  • Opgavens tekst. Enhver VLA her konditioneres på den; at omformulere den midt i loopet er en anden opgave.
  • Belysning, bordflade, objektsæt. Et nyt objekt er et nyt eksperiment, ikke næste runde.
  • Optagelses billedfrekvensen. Sammenligning af intervention rates over to sampling-rastringer producerer forskelle der kommer fra rasteret.
Håndledskameraet er ikke valgfri møbler

Hsu et al. sammenlignede et hånd-centrist view mod det sædvanlige tredjepersons view og fandt øjet-i-hånd perspektivet konsekvent forbedret trænings effektivitet og out-of-distribution generalisering, på trods af at se mindre af scenen. På en fem-leds arm er griber timing normalt hvad dine rettelser reparerer, og griber timing er hvad håndledskameraet bærer.

Runden end-til-ende

  1. 1
    Kør inferens og optag den

    Start kørslen mod det checkpoint du vil forbedre, start derefter optagelsen ind i inferenseroden. Optaget på den måde arver kørslen sin egen opgavetekst, som er hvad politikken blev trænet på, i stedet for standardteloperings-labelen. Uden optagelsen kan du se fejlen men ikke træne på den.

    bash
    # two calls, not one: the run, then its recording
    POST /inference/start      # model_id, and hf_repo_id = the checkpoint to drive
    POST /recording/start      # root=inference
    # root=inference also makes the recording inherit the run's task text
  2. 2
    Overtag når det løber skævt

    Tryk Overtag og vælg inputmetode: leader arm, tastatur eller skydere. Runneren pauses, du retter, du giver tilbage. Frames optaget mens du kørte er markeret som interventioner automatisk.

    bash
    POST /inference/takeover/start   # input = leader | keyboard | sliders
    POST /inference/takeover/nudge   # keyboard, relative delta per call
    POST /inference/takeover/set     # sliders, absolute target
    POST /inference/takeover/stop    # back to the policy
  3. 3
    Triage episoderne

    Beslut pr. episode: arkivér som rettelse, behold som evaluering eller kassér. En kørsla politikken gennemførte uden hjælp er evalueringsdata.

  4. 4
    Synkronisér korrektionsdatasættet

    Rettelser samler sig i et lokalt datasæt pr. politikk og går til cloud-lager gennem den automatiske synkronisering. Intet bliver blandet ind der du ikke satte der.

  5. 5
    Sammensæt det blandede datasæt

    Kombiner det oprindelige datasæt med korrektionsdatasættet, der vælger episoder eksplicit pr. kilde. Resultatet er et ordinært datasæt fra det punkt.

    bash
    POST /training/datasets/compose
      sources  = [ original_dataset, korrekturen_<policy> ]
      episodes = explicit selection per source
  6. 6
    Fortsæt træning fra checkpointet

    Træn blandingen fra det tidligere checkpoint i stedet for basemodellen. Noter hvilket checkpoint og hvilken blanding; uden det par er runden ikke reproducerbar.

    bash
    # field on the training job
    base_checkpoint = s3://ay-robots/checkpoints/<run>/<checkpoint>
    # the platform passes it to the training pod as BASE_CKPT_S3

Trin 2 i detaljer: de to måder at overtage

Med en leader arm

I leader-follower mode er overtagelsen en handover mellem to arme der ikke er i samme pose. Tryk Overtag pauser runneren og kører leader-armen ind på follower-armens nuværende pose, så intet springer når kraftoverføring sker. Hvis den justering drives timeout, justerer du leader for hånd og frigiver kun når de to er inden for fem grader. Fra da af teleoperer du normalt og handlingskolonnen optager hvad du befalede.

Vær ærlig om denne sti: justering driven og kraftoverføring handover er den mindst testede del af loopet på rigtig hardware. Test handoveren på en langsom, harmløs pose før du verlader dig på den i en kørsla du passer på. En leader arm producerer de glatteste rettelser af de tre modes, og også det som kan gå mest galt mekanisk.

Uden en leader arm: tastatur og skydere

De fleste mennesker der læser dette ejer en arm. Det er nok. Vælg tastatur eller skyder input i det øjeblik du trykker Overtag, og overtagelsen er øjeblikkelig og manuel - der er ingen anden arm til at justere, så der er intet justering trin. Followeren holder sin pose og venter på input.

InputmetodeHvordan armen bevæger sigPr.-opkaldgrænse håndhævet af serverenLåst når
Leader armSpejlet driver followeren fra leader-armens ledvinklerIngen nudge eller set opkald i denne tilstand; spejlet skriver follower mål kontinuerligtAldrig låst, og standard hvis ingen inputmetode er givet - men det kræver en anden arm; uden en leader id bliver overtagelsen nægtet
TastaturRelativt nudge pr. tastetryk, sendt til overtag nudge-endepunktetHård klemme ved 2 grader pr. led, 4 grader for griberenAfvist med 409 hvis overtagelsen blev startet i leader mode
SkydereAbsolut målpose, sendt til overtag set-endepunktetHøjst 6 graders rejse mod målet pr. opkald; interfacet sender omkring ti gange i sekundetAfvist med 409 hvis overtagelsen blev startet i leader mode

Klemmen håndhæves server-side, ikke i interfacet, fordi en stavefejl delta på en bus-servo arm er en kollision. Tastaturrettelser kommer ud trin-for-trin og lidt grov; skyder rettelser er glattere, fordi serveren går mod målet mens interfacet holder streamning. Alligevel handlingskolonnen modtager den fulde befalede pose vektor og intervention markeringen er identisk med leader stien, så tastaturrettelser lander i det samme datasæt uden en format forskel.

text
Q / A   joint 1      R / F   joint 4
W / S   joint 2      T / G   joint 5
E / D   joint 3      Z / X   gripper
Det samme tastetlayout som overalt ellers i stacken, så muskelhukommelse fra optagelse bærer over.
Træningsvejledning der viser de ordnede trin af en GR00T fine-tuning kørsla på et SO-100 datasæt
Træningssiden af en runde er den samme guidade sekvens som en første kørsla; kun checkpoint feltet adskiller sig.

Hvornår skal du trykke på knappen

Tidligt i stedet for sent. En rettelse der starter efter griberen har lukket rundt om intet lærer gendannelse fra en fejl politikken ikke skulle have gået ind i, og gendannelsesdata er værd langt mindre end undvigelsesdata. Afbryd i det første øjeblik du er sikker på banen er forkert, ret gennem den svære del, giv tilbage så snart tilstanden er en politikken håndterede før. ThriftyDAgger automatiserer den beslutning ved at gate interventioner på nyheder og estimeret risiko under et fast menneskebudget, men på en enkelt arm med et menneske allerede ser, er menneskegatingen billigere og bedre kalibreret end alt hvad du vil tune.

Muligt med open-source stacken og et par scripts. Hvad det koster er bogføring, og bogføring er hvor DAgger runder dør.

  1. Skriv frames fra dit eget inferenscript ind i et LeRobot datasæt, med opgavestrengen politikken blev trænet på.
  2. Pause politikk loopet, skift kommandokilde, og flag enhver frame du kører som en intervention. Uden flaget ligner rettelser ordinære demonstrationer.
  3. Beslut bevidst hvad der sker med transitionsframsene mellem politikken frigør kontrollen og dit første input.
  4. Behold rettelser i deres eget datasæt pr. politikk, og spor episode indekser for hånd så blandingen kan rekonstrueres.
  5. Peg fine-tuning indgangspunktet på det tidligere checkpoint, og se i loggen at det indlæste disse vægte.

Trin 3 i detaljer: triage beslutter kvaliteten

Efter kørslen har du en optagelse med nogle frames markeret som interventioner. Tre destinationer findes, og den forkerte forgifter stille næste runde.

  • Arkivér som rettelse når interventionen var en ægte reparation: politikken var på vej et sted galt og dit input viste det rigtige fra en tilstand politikken selv producerede.
  • Behold som evaluering for rene autonome kørsler og for kørsler du overtog af forsigtighed. Evalueringsepisoder er hvordan du måler næste checkpoint, og de må aldrig trænes på.
  • Kassér kørsler ødelagt af noget urelateriet - en droppet kameraframe, en stalled servo, et objekt du vippede om. En rodet rettelse er værre end ingen rettelse.
Freeze frames hører hjemme i rå optagelsen, ikke i træningsdata

Mellem politikken frigør kontrollen og dit første input holder armen still mens recorderen holder skrivning - en kørsla af identiske poses parret med lidt forskellige billeder. Her disse handover frames bliver i den rå optagelse og ud af korrektionsdatasættet. Hvis du bygger loopet selv, skær dem bevidst: en politikk trænet på dem lærer at pause hvor den skal handle.

Trin 5 i detaljer: sammensætning af blandingen

Sammensætning tager det oprindelige datasæt plus korrektionsdatasættet og producerer en ny, ordinær LeRobot datasæt der træner som enhver anden. Den vigtige egenskab er at episode valget er eksplicit pr. kilde - intet blandes ind automatisk. Det høres småt ud til den første gang en politikk opfører sig underligt og du skal rekonstruere hvad den blev trænet på.

Det åbne spørgsmål er forholdet, og ingen har et tal der transfererer. Hvad litteraturen er enig på er at rettelser skal tælles for mere end deres frame andel. Mandlekar et al. gentræner iterativt på de data deres interventionssystem samler, så politikken lærer at gennemgå flaskehalsene, og rapporterer at agenter trænet på den måde outperformer agenter trænet på en tilsvarende antal prøver fra ikke-interventionelle demonstratorer. Sirius går længere og re-vægter træningsprøver af approksimeret menneskelid, rapportere en 8 procents gevinst i simulering og 27 procents på rigtig hardware i politikk success rate mod de metoder den sammenligner med, ved to gange convergence hastighed. Ingen af træningsindgangspunkterne her udsætter et sample-weighting knap, så det rå erstatning er at holde hver rettelseepisode mens subsampling de oprindelige demonstrationer - og at skrive ned hvad du gjorde.

Datasæt optagelsesvisning viser episoder af et SO-100 datasæt med kamerastrømme
Korrektionsepisoder er ordinære episoder med et pr.-frame intervention flag, så de sammensætter med det oprindelige datasæt uden konvertering.

Trin 6 i detaljer: hvad fortsættelse fra et checkpoint virkelig betyder

Træning af blandingen fra basemodellen virker men kasserer tidligere runde og koster en fuld kørsla. Fortsættelse fra det tidligere checkpoint er hurtigere og normalt bedre. Det er også mere begrænset end sætningen antyder.

Vægt initialisation er ikke en optimizer resume

En vægt-kun checkpoint indeholder parametrene og intet andet. Indlæsning af den giver næste kørsla et bedre startpunkt end basemodellen, men optimizer moments, learning-rate schedule position og data order alle starter fra nul. Forventer et loss spike ved begyndelsen af den fortsatte kørsla, læs det ikke som en fejl, og kald ikke runden en resume. Det er en varm start.

PolitikkStørrelseGPU tierInferens pr. handlingstrinDatasætformatEpisoder før det er værd at prøve
GR00T N1.7omkring 3 B, cirka 40 M trænet under fine-tuningA100 80 GB eller H100 80 GBomkring 152 msLeRobot v2.0 eller v2.150
GR00T N1.5omkring 3 BA100 80 GB eller H100 80 GBomkring 165 msLeRobot v2.0 eller v2.150
Pi0.5omkring 3 B på en PaliGemma backboneA100 80 GB eller H100 80 GBomkring 485 msLeRobot v3.050
SmolVLAomkring 450 MRTX 4090 eller enhver 24 GB kortomkring 245 msLeRobot v3.030
ACTomkring 80 M, trænet fra bundenRTX 4090 eller enhver 24 GB kortomkring 20 msLeRobot v3.050

Latenz sammensætter sig indeni en DAgger loop på en måde den ikke gør under en demo: ved omkring 485 ms pr. handlingstrin overtager du fordi armen tøvede, ikke fordi den var forkert, og tøven rettelser er ikke brugeligt træningsdata. Hvis du itererer på data i stedet for at jage en slutsucces rate, iterer på en hurtig model. Shukor et al. beskriver SmolVLA som designet til at træne på en enkelt GPU og implementere på consumer GPUs eller CPUs, med en asynkron inferenss stack der afkobler handlings forudsigelse fra udførelse til at tillade højere kontrol rates - den egenskab der holder en overtag loop responsiv.

Datasætformaterne er ikke udskiftelige heller. GR00T tager LeRobot v2.0 eller v2.1, og Isaac-GR00T repositoriet beskriver dets indput som en smag af LeRobot v2 format med en tilføjet modalitetsbeskrivelse fil; de nyere trainers her forventer v3.0. En blanding sammensat i den forkerte version svigter ved indlæsningstid i stedet for at producere en dårlig politikk - den bedre fejl mode, stadig en spildt kø plads. datasæt dokumentation opregner hvilket format hver trainer tager.

Loopet, med bogføringen allerede gjort

Overtag med en leader arm, tastatur eller skydere; pr.-frame intervention markering; arkivering af kørsler som rettelser eller evalueringer; sammensætning af et blandet datasæt med et eksplicit episode valg pr. kilde; og fortsætning af træning fra et checkpoint i stedet for basemodellen. Hvad der bliver din beslutning er hvilken kørsla tæller som en rettelse, hvad der går ind i blandingen, og hvornår intervention rate er stoppet med at falde.

Se hvordan DAgger loopet er lednings

Fire måder at øde en runde

1. Træning på rettelserne alene

Den mest almindelige fejl og den mest fristende genvej. Et korrektions-kun datasæt er næsten helt den svære midten af opgaven, med tilgang og retreat manglende; politikken bliver bedre ved den svære del og glemmer hvordan man kommer der hen. Aggregation er ikke en implementerings detalje af metoden, det er mekanismen: de gamle data er hvad der holder resten af adfærden på plads mens rettelserne flytter en del af den.

2. Flytning af et kamera mellem runder

Et kamera der skifter to centimeter mellem runder producerer en politikk værre end den du startede med, og en diagnose der koster en dag. Enhver VLA her konditioneres på billeder; leddstat alene disambigueres ikke hvor objektet er. Fotografer setupet før den første runde og kontroller det fotografi før hver senere.

3. Lader handover artefakter ind i træning

Dækket ovenfor, og på listen fordi det er usynligt. Symptom er en politikk der staller en brøkdel af et sekund præcis hvor tidligere rundes operatør overtog. Det ligner tøven; det er imitering.

4. Kaldende en varm start en resume

Hvis du tror optimizer state bar over, læser startens loss spike som en bug og du går jagt for ødelagte data. Hvis du ved optimizeren startede frisk, er spike'en forventet og du ser på hvad der kommer efter den. Samme tal, modsat konklusioner.

Måling af runden

Metrikken for en human-gated loop er intervention rate: frames optaget mens du var i kontrol, divideret med samlede frames af kørslen. Det er i overtag status, og det er det eneste tal der besvarer spørgsmålet runden spurgte. Træning tab falder hvad enten eller ej politikken forbedrede sig; success rate er binær og støjende ved de stikprøve størrelser en desk arm producerer. Intervention rate er kontinuer, målt på de tilstande politikken selv forårsagede, og det falder når politikken behøver dig mindre.

Sammenlign det kun på tværs af kørsler optaget under identiske forhold. Det fulde argument, og hvordan man bygger et evalueringssæt der overlever mere end to runder, er i artiklen om måling af en DAgger loop. Første runde er realistisk en gennemførligheds test: du kontrollerer at overtagelsen virker på dit hardware, at rettelser lander med deres flag, og at den fortsatte kørsla indlæste checkpointet du navngi. Runder to og tre er hvor raten skal begynde at bevæge sig. Hvis det ikke er bevæget sig på runde fire, er problemet opstrøms af DAgger.

Skriv ned pr. rundeHvorfor det betyder senere
Checkpoint der blev kørtUden det kan du ikke tilskrive en forbedring til en blanding
Input mode brugt til overtagelsenTastatur rettelser er grovere end leader rettelser, og det vises i dataene
Antal kørsler og hvordan hver blev triageretOm runden havde nok rettelser til at vigtig
Intervention rate pr. kørsla, og gennemsnittetLoopets fremskridts metrik
Nøjagtig episode valg pr. kildeDen eneste måde at reproducere eller angre en runde
Varm start eller frisk træningForklarer det loss kurve du vil se på en uge

Hvis du ikke har et checkpoint endnu

Loopet har intet indgangspunkt uden en. Optag et først datasæt, træn en første politikk, kør den - optagelse, træning og kørsel af politikken dækker den sti. Optagelsen klient er på download siden, GPU tiers og timepris på priside, og hvad en brugbar episode ligner i SO-100 dataindsamlings vejledning. Få demonstrationerne rigtigt før rettelserene: DAgger er en reparations mekanisme, og det virker langt bedre på noget der var næsten rigtigt allerede.

Kan jeg køre en DAgger loop uden en leader arm?

Ja. Vælg tastatur eller skyder input når du trykker Overtag: overtagelsen er øjeblikkelig og manuel, uden anden arm til at justere. Tastatur sender relativt nudges som serveren klemmer hårdt ved 2 grader pr. led og 4 for griberen; skydere sender en absolut målpose og serveren bevæger sig højst 6 grader mod den pr. opkald, mens interfacet holder streamning. Handlingskolonne og intervention markering er det samme som i leader mode, så rettelserne er uadskillelige i datasættet.

Hvor mange rettelser behøver én runde?

Der er ingen forsvarlig universel tal, og frame tælling betyder mere end episode tælling. Den arbejdsregel er at rettelserne må ikke være tabt i blandingen: med 200 oprindelige episoder og tre rettelse episoder, intet vil bevæge sig. Sigter mod rettelser der dækker den fejlende adfærd fra flere start konfigurationer i stedet for tre gentagelser af det samme redning.

Hvorfor er træning på rettelser kun sådan en dårlig ide?

Fordi rettelser er næsten helt den svære midten af opgaven. Tilgang, justering og retreat mangler, så politikken mister hvad den allerede gjorde godt mens forbedring af den del du reparerede. At holde de gamle data og tilføje til den er mekanismen selv, ikke en valgfri ekstra.

Betyder fortsættelse fra et checkpoint genoptag af tidligere træning kørsla?

Nej. En vægt-kun checkpoint gendanner parametre og intet andet: optimizer moments, learning-rate schedule position og data order starter frisk. Det er en varm start, og en startende loss spike er forventet i stedet for en symptom. Skriv ned hvilken af de to du rent faktisk gjorde, så du læser kurven rigtigt en uge senere.

Hvad hvis intervention rate ikke falder?

Stop med at tilføje runder. En flad rate betyder rettelserne ikke lærer hvad du tror. De sædvanlige årsager er opstrøms: et kamera bevægede sig, rettelserne starter for sent til at være undvigelsesdata, handover frames er i træningssættet, eller opgaven er underbestemt fra de observationer politikken rent faktisk får.

Ingen af dette er et løst problem og ingen af det er et klik. Interaktiv imitationslæring er et aktivt forskningsområde præcis fordi dets spørgsmål - hvornår skal gribe ind, hvordan vægte hvad mennesket gjorde, hvor meget gamle data skal holde - har ingen afgøreende svar; undersøgelsen af Celemin et al. kortlægger hvad der stadig er åbent. Hvad loopet har er målbart convergence når det køres omhyggeligt, på hardware der koster et par hundrede euros. Frys setupet, grib ind tidligt, triage ærligt, blanding bevidst, og optag intervention raten hver gang.

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started