Die AY-Robots Trainingsmatrix mit fünf Policy-Zeilen und vier Roboterarm-Spalten, wobei jede Zelle auf einen spezifischen Modell- und Arm-Trainingsleitfaden verweist
ACTSO-100lerobotImitationslernenPolicy-Training

Wie man ACT auf dem SO-100 von Grund auf trainiert

AY-Robots Research23. August 202616 min Lesedauer

Trainieren Sie einen Action Chunking Transformer von Grund auf auf einem SO-100 mit lerobot: die act config, chunk_size und n_action_steps, den 100000-Schritt-Zeitplan, 20 ms Inferenz.

ACT ist der Außenseiter unter den SO-100-Richtlinien. GR00T N1.7 und N1.5 basieren auf nvidia/GR00T-N1.7-3B und nvidia/GR00T-N1.5-3B, Pi0.5 auf lerobot/pi05_base. ACT beginnt bei Null: Es gibt keinen Basis-Checkpoint, da es kein Grundmodell ist. Es ist ein Transformator mit etwa 80 Millionen Parametern, den Sie von Grund auf für eine Aufgabe, an Ihrem Arm, unter Ihrer Beleuchtung trainieren.

Das ist auch der Grund, warum es einen Steuerungsschritt in 20 ms ausführt, während ein VLA mit 3 Milliarden Parametern 152 bis 485 ms benötigt und 1 bis 3 USD pro Lauf kostet, anstatt 4 bis 12. Dieser Leitfaden beschreibt den manuellen Weg mit lerobot auf einem SO-100: Aufzeichnung, die act Konfiguration, was chunk_size und n_action_steps steuern, den 100000-Schritte-Zeitplan, den Rollout. Danach derselbe Job auf AY-Robots, einschließlich der Punkte, an denen die Plattform nicht hilft.

Was Sie wissen müssen

  • ACT trainiert von Grund auf: kein Basismodell, kein Vortraining, keine Spracheingabe. Ein Checkpoint, eine Aufgabe.
  • Das Paper: etwa 80 Mio. Parameter, ca. 5 Stunden auf einer 11 GB RTX 2080 Ti, 0,01 s Inferenz.
  • lerobot-Standardwerte: chunk_size 100, n_action_steps 100, batch 8, lr 1e-5, 100000 steps, seed 1000.
  • Auf AY-Robots: 20 ms pro Schritt, der schnellste der fünf. Mindestens 50 Episoden, LeRobot v3.0, eine 24 GB Karte, 1 bis 3 USD pro Lauf.
  • Es gewinnt bei einer Aufgabe, die es gesehen hat, und verliert, sobald Sie Sprachkonditionierung wünschen.
Welche Versionen dies beschreibt

Geprüft am 23. August 2026 gegen lerobot 0.6.x: pyproject.toml on main reads version = "0.6.2", newest tag v0.6.1, 3 August 2026. Ein Tutorial, das mit python lerobot/scripts/train.py beginnt, ist älter als die Konsolen-Einstiegspunkte lerobot-train, lerobot-record und lerobot-rollout.

Was ACT tatsächlich ist

Action Chunking with Transformers stammt aus dem ALOHA-Paper, Erlernen feingranularer bimanuelle Manipulation mit kostengünstiger Hardware, von Zhao, Kumar, Levine und Finn, arXiv, 23. April 2023. Die Anlage zeichnet mit 50 Hz auf, wobei vier Webcams 480x640 bei 30 fps streamen: zwei an den Greifern, eine oben, eine vorne. Das Abstract beansprucht sechs Fähigkeiten mit 80 bis 90 Prozent Erfolg, darunter das Öffnen eines durchsichtigen Gewürzbechers und das Einstecken einer Batterie, basierend auf 10 Minuten Demonstrationen.

Der Hauptteil ist nützlicher bei der Planung einer Aufnahmesitzung: 50 Demonstrationen pro Aufgabe, außer bei 'Thread Velcro' mit 100, was 10 bis 20 Minuten Daten und 30 bis 60 Minuten Echtzeit bedeutet, sobald Resets gezählt werden. Der Erfolg ist ebenfalls nicht einheitlich: 'Thread Velcro' endet bei 20 Prozent, 'Put On Shoe' bei 92, 'Cup Open' bei 84, 'Prep Tape' bei 64.

HyperparameterALOHA-Paper, Tabelle IIIlerobot auf main
Lernrate1e-5optimizer_lr = 1e-5
Batch-Größe8batch_size = 8, in TrainPipelineConfig not ACTConfig
Encoder-/Decoder-Schichten4 / 7n_encoder_layers = 4 / n_decoder_layers = 1
Chunk-Größe k100chunk_size = 100
Latente Dimension von zfehlt; Abb. 11 zeigt eine Projektion von 32 auf 512latent_dim = 32
Temporales Ensemblingfehlt; --temporal_agg im Referenzcodetemporal_ensemble_coeff = None
Die Zeile der Decoder-Schichten ist kein Tippfehler

Das Papier listet 7 Decoder-Schichten auf, lerobot liefert absichtlich 1. Der Kommentar in `configuration_act.py` besagt, dass die ursprüngliche Implementierung einen Fehler enthält, der bedeutet, dass nur die erste Schicht verwendet wird, unter Verweis auf issue 25 in tonyzhaozh/act: Der Aktions-Head liest `hs[0]`, sodass alle sieben Schichten ausgeführt werden, aber nur die erste Ausgabe die Vorhersage erreicht. Dieses Problem ist seit dem 23. April 2024 offen und unbeantwortet. lerobot entspricht dem Verhalten, das die veröffentlichten Ergebnisse hervorbrachte, nicht der gedruckten Zahl. Erhöhen Sie `--policy.n_decoder_layers`, und Sie trainieren ein Modell, das im Papier nie evaluiert wurde.

Aktions-Chunking ist die ganze Idee

Gewöhnliches Verhaltensklonen bildet eine Beobachtung auf eine Aktion ab, und Fehler summieren sich: Eine Abweichung bringt den Arm aus der Verteilung, was zu einer schlechteren Aktion führt, und dreißig Schritte später ist der Greifer nirgendwo in der Nähe des Objekts. Aktions-Chunking sagt k Aktionen gleichzeitig voraus und führt sie aus, wodurch der effektive Horizont um den Faktor k sinkt. Es behandelt auch ein Ärgernis, das spezifisch für menschliche Daten ist: Teleoperatoren pausieren, und eine einstufige Markovsche Policy kann eine Pause, die von dem abhängt, was zuvor geschah, nicht modellieren.

Das Papier evaluiert k durch Ablation, anstatt es einfach zu behaupten. Bei ausgeschaltetem Temporal Ensembling, gemittelt über vier Einstellungen, steigt der Erfolg von 1 Prozent bei k = 1 auf 44 Prozent bei k = 100 und flacht dann bei 200 und 400 ab, wenn die Policy sich der Open-Loop-Steuerung nähert. Diese Kurve ist der Grund, warum der Standardwert 100 ist.

  • chunk_size: wie viele zukünftige Aktionen der Decoder pro Forward-Pass vorhersagt. Standard 100.
  • n_action_steps: wie viele davon Sie ausführen, bevor Sie erneut abfragen. Standard 100, sodass lerobot den gesamten Chunk im Open-Loop-Modus ausführt.
  • lerobot validiert n_action_steps <= chunk_size und löst einen ValueError aus, wenn Sie es umgekehrt eingeben.

Was im Betrieb zählt, ist die chunk_size geteilt durch die Bildrate. Bei den 30 fps, die lerobots SO-100-Beispiele verwenden, entspricht ein Chunk von 100 etwa 3,3 Sekunden ab einer Beobachtung. Wenn die Aufgabe innerhalb dieses Fensters eine Korrektur benötigt, reduzieren Sie n_action_steps, nicht chunk_size: Sie behalten die lange Vorhersage bei und beobachten häufiger neu.

bash
# predict 100 actions, re-query after 25 of them (about 0.8 s at 30 fps)
lerobot-train \
  --dataset.repo_id=${HF_USER}/so100_cube \
  --policy.type=act \
  --policy.chunk_size=100 \
  --policy.n_action_steps=25 \
  --policy.device=cuda
Verkürzung des ausgeführten Teils des Chunks ohne Verkürzung der Vorhersage.
Die Falle des temporalen Ensemblings

Setzen Sie --policy.temporal_ensemble_coeff, und lerobot erfordert n_action_steps = 1, andernfalls wird ein NotImplementedError ausgelöst. Ensembling fragt die Policy bei jedem Zeitschritt ab und mischt die überlappenden Vorhersagen für diesen Zeitschritt mit Gewichten w_i = exp(-m * i), wobei die älteste w_0 erhält. Das Paper beziffert es für ACT auf 3.3 percent: real, aber bescheiden, und es multipliziert die Inferenzanzahl mit der Chunk-Länge. Erschwinglich bei 20 ms pro Schritt, nicht bei 485 ms. Siehe Inferenzlatenz.

Wenn ACT ein Grundmodell übertrifft

Die fünf trainierbaren Policies nebeneinander, mit den Zahlen, die AY-Robots misst und verwendet, um die Größe der gemieteten GPU zu bestimmen.

PolicyFamilieParameterPro SchrittGPU-KlasseMin. EpisodenDatensatz
ACTChunking-Transformer, von Grund auf~80 M20 msRTX 4090 / 24 GB50LeRobot v3.0
SmolVLAKompaktes VLA~450 M245 msRTX 4090 / 24 GB30LeRobot v3.0
GR00T N1.7VLA-Grundlage, Diffusions-Head~3 B (~40 M trainiert)152 msA100 / H100 80 GB50LeRobot v2.0 oder v2.1
GR00T N1.5VLA-Grundlage, Vorgänger~3 B165 msA100 / H100 80 GB50LeRobot v2.0 oder v2.1
Pi0.5Flow-Matching VLA, siehe Flow-Matching~3 B, PaliGemma-Backbone485 msA100 / H100 80 GB50LeRobot v3.0
Die AY-Robots Policies-Seite zeigt eine Vergleichstabelle von ACT, SmolVLA, GR00T N1.5, GR00T N1.7 und Pi0.5 mit Parameteranzahlen, GPU-Anforderungen, Inferenzlatenz und minimalen Episodenanzahlen
Die /policies-Tabelle: ACT hat die geringste Parameteranzahl und die kürzeste Schrittzeit.
ACT von Grund auf trainieren
Vorteile
  • 20 ms pro Aktionsschritt, der schnellste der fünf, auf einer 24-GB-Karte, nicht auf einer A100.
  • 1 bis 3 USD pro Lauf gegenüber 4 bis 12 USD für die 3-B-Klasse.
  • Präzise bei kontaktintensiven Arbeiten, die es gesehen hat: 88 und 96 Prozent bei Slide Ziploc und Slot Battery, wo frühere Methoden nie die erste Stufe überwinden konnten.
Kompromisse
  • Keine Sprachkonditionierung: Der Aufgabenstring wird ignoriert, sodass ein Checkpoint einer Aufgabe entspricht.
  • Keine semantischen Vorinformationen: Alles, was es weiß, stammt aus Ihren 50 Episoden.
  • Geringe Generalisierung: Verschieben Sie eine Kamera, und Sie müssen neu trainieren.
  • Es versagt stillschweigend: Der Verlust sinkt, der Arm tut nichts, die Protokolle sagen nichts.
  • Der Geschwindigkeitsvorteil hilft nur, wenn die Inferenz direkt neben den Servos sitzt.

Wählen Sie ACT, wenn Aufgabe und Szene fest sind und die Bewegung schnell und präzise sein muss. Wählen Sie ein , wenn ein Checkpoint mehrere Anweisungen abdecken muss. Zwei Seiten behandeln die Entscheidung im direkten Vergleich: und . Für veröffentlichte Benchmarks verlinkt jede Zahl zu ihrer Quelle.

Was Sie vor dem Start benötigen

Ein Follower-Arm, ein Leader-Arm für die , mindestens eine Kamera, eine 24-GB-GPU. ACT liest nur Bilder und Gelenkpositionen. Zwei Kameras sind ideal: eine feste Frontansicht für die Position der Dinge, eine Handgelenkkamera für das, was der berühren wird, wie bei ALOHA.

ArmServosSpannungTeilekostenStatus
SO-100Feetech STS32157.4 V~110 to 150 EURVolle Unterstützung, Referenzarm
SO-101Feetech STS32157.4 V~130 to 170 EURVolle Unterstützung
Koch v1.1Dynamixel XL330 / XL4305 V and 12 V rails~250 to 350 EURKompatibel
LeKiwiFeetech STS3215 (arm)7.4 V arm, 12 V base~400 to 500 EURKompatibel
7,4 V, nicht 12 V

SO-100 und SO-101 verwenden Feetech STS3215 Servos an einer 7,4 V Schiene. Die Versorgung mit 12 V zerstört sie, leise genug, dass die Leute zuerst die Software beschuldigen, und ein Koch 12 V Netzteil passt physisch auf eine SO-100 Platine. Überprüfen Sie das Etikett. Symptome: Servo reagiert nicht, Arm zuckt und sackt dann ab. Siehe auch SO-100 vs SO-101.

Vom nackten Arm zum aufgezeichneten Datensatz

Der folgende Ablauf ist für lerobot 0.6.x. Überspringen Sie diesen Schritt, wenn Sie einen kalibrierten Arm und einen Datensatz haben. Andernfalls behandelt der SO-100 Erste Schritte Anleitung die Montage, der Aufnahme-Walkthrough die Erfassung und die Datensatz-Dokumentation das Format.

  1. 1
    lerobot mit den richtigen Extras installieren

    Für die Aufnahme werden core_scripts benötigt, für das Training training, für Feetech-Servos feetech. Python 3.12+.

    bash
    conda create -y -n lerobot python=3.12
    conda activate lerobot
    conda install ffmpeg -c conda-forge
    
    pip install 'lerobot[core_scripts,training,feetech]'
    lerobot-info
  2. 2
    Den USB-Port jedes Arms finden

    Führen Sie es mit beiden angeschlossenen Armen aus und ziehen Sie einen ab, wenn Sie dazu aufgefordert werden. Unter Linux müssen Sie möglicherweise die Knotenberechtigungen öffnen.

    bash
    lerobot-find-port
    # on Linux, if the port exists but is unreadable:
    sudo chmod 666 /dev/ttyACM0
  3. 3
    Motor-IDs und Baudrate einstellen

    Beim SO-100 geschieht dies vor der Montage: Im Gegensatz zum SO-101 sind die Anschlüsse nach dem Aufbau unerreichbar. Das Skript durchläuft den Bus Motor für Motor, beginnend am Greifer, und schreibt IDs in den EEPROM.

    bash
    lerobot-setup-motors \
        --robot.type=so100_follower \
        --robot.port=/dev/ttyACM0
    
    lerobot-setup-motors \
        --teleop.type=so100_leader \
        --teleop.port=/dev/ttyACM1
  4. 4
    Beide Arme kalibrieren

    Stellen Sie jedes Gelenk in die Mitte seines Bereichs, drücken Sie Enter und bewegen Sie dann jedes Gelenk durch seinen gesamten Bereich. Kalibrierung ermöglicht es, eine an einem Arm trainierte Richtlinie auf einem anderen auszuführen. Verwenden Sie dieselbe id wieder.

    bash
    lerobot-calibrate \
        --robot.type=so100_follower \
        --robot.port=/dev/ttyACM0 \
        --robot.id=my_follower
    
    lerobot-calibrate \
        --teleop.type=so100_leader \
        --teleop.port=/dev/ttyACM1 \
        --teleop.id=my_leader
  5. 5
    Einmal mit eingeschalteten Kameras teleoperieren

    Die lerobot-Faustregel: Sie sollten die Aufgabe nur anhand der Kamerabilder ausführen können. Wenn Sie das nicht können, kann ACT es auch nicht. Dies fängt mehr schlechte Datensätze ab als späteres Debugging.

    bash
    lerobot-teleoperate \
        --robot.type=so100_follower \
        --robot.port=/dev/ttyACM0 \
        --robot.id=my_follower \
        --robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 1, width: 640, height: 480, fps: 30} }" \
        --teleop.type=so100_leader \
        --teleop.port=/dev/ttyACM1 \
        --teleop.id=my_leader \
        --display_data=true
  6. 6
    50 Episoden aufnehmen

    50 ist das AY-Robots-Minimum und was ALOHA pro Aufgabe verwendet hat. lerobot empfiehlt 10 pro Objektposition, feste Kameras, konsistenter Griff. n beendet eine Episode, r nimmt erneut auf, q stoppt und kodiert.

    bash
    HF_USER=$(NO_COLOR=1 hf auth whoami | awk -F': *' 'NR==1 {print $2}')
    
    lerobot-record \
        --robot.type=so100_follower \
        --robot.port=/dev/ttyACM0 \
        --robot.id=my_follower \
        --robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 1, width: 640, height: 480, fps: 30} }" \
        --teleop.type=so100_leader \
        --teleop.port=/dev/ttyACM1 \
        --teleop.id=my_leader \
        --dataset.repo_id=${HF_USER}/so100_cube \
        --dataset.num_episodes=50 \
        --dataset.single_task="Grab the black cube and put it in the bin" \
        --display_data=true
Die AY-Robots Aufnahme-Tutorial-Seite, die erklärt, wie man einen Datensatz im LeRobot-Format aus einer Teleoperationssitzung erfasst
Das Aufnahme-Tutorial. Der Desktop-Client schreibt dasselbe Layout wie lerobot-record.
Die Falle, die einen Tag kostet: ein inkonsistenter Datensatz

ACT hat keine Vorkenntnisse, auf die es zurückgreifen könnte, daher wird jede Inkonsistenz dauerhaft. Die drei kostspieligsten: eine Kamera, die zwischen Episode 20 und 21 verschoben wurde, Licht, das sich änderte, weil Sie die Hälfte des Datensatzes am Nachmittag aufgenommen haben, ein Griff, der auf zwei Arten ausgeführt wurde. Jedes davon führt zu einer perfekt aussehenden Verlustkurve und einem Arm, der an die falsche Stelle geht. Siehe Verlust sinkt, Richtlinie tut nichts, Richtlinie funktioniert nur in einem Setup und Sammeln hochwertiger Trainingsdaten.

Vor dem Training mindestens fünf Episoden wiedergeben. speichert Kameraströme, Gelenkzustände und Aktionen pro , und die Wiedergabe sendet diese Aktionen zurück an den Arm. Wenn die Wiedergabe die Aufgabe nicht ausführt, sind die Daten nicht enthalten und das Training wird sie nicht erfinden.

bash
lerobot-replay \
    --robot.type=so100_follower \
    --robot.port=/dev/ttyACM0 \
    --robot.id=my_follower \
    --dataset.repo_id=${HF_USER}/so100_cube \
    --dataset.episode=0
Wiedergabe von Episode 0. Falls dies fehlschlägt, anhalten und neu aufzeichnen.

Trainieren der ACT-Richtlinie

Dies ist der vollständige Befehl. Alles ACT-spezifische ist bereits Standard, weshalb auf der lerobot ACT-Seite empfohlen wird, damit zu beginnen.

bash
lerobot-train \
  --dataset.repo_id=${HF_USER}/so100_cube \
  --policy.type=act \
  --output_dir=outputs/train/act_so100_cube \
  --job_name=act_so100_cube \
  --policy.device=cuda \
  --wandb.enable=true \
  --policy.repo_id=${HF_USER}/act_so100_cube
Der Trainingsbefehl aus der lerobot 0.6.x Dokumentation, für einen SO-100 Datensatz.

--policy.type=act lädt ACTConfig, das sich an die Anzahl der Motoren und Kameras anpasst, die Ihr Datensatz aufgezeichnet hat, sodass Sie die Beobachtungsform nie deklarieren müssen. --wandb.enable=true ist optional und lohnenswert: Die Verlustkurve ist das einzige günstige Signal in einem Lauf von 100000 Schritten. Der Zeitplan stammt aus der lerobot-Trainingskonfiguration, nicht aus ACTConfig: 100000 Schritte, Batch 8, Seed 1000, ein Checkpoint alle 20000 Schritte, Protokollierung alle 200.

Ein vollständiger Lauf hinterlässt fünf Checkpoint-Verzeichnisse, 020000 bis 100000, plus einen last Symlink. Behalten Sie alle: Die beste Policy ist oft nicht die letzte.

Einstellunglerobot StandardAY-Robots ACT FormularKommentar
batch size88Reduzieren Sie diese zuerst, wenn Sie an VRAM-Grenzen stoßen.
learning rate1e-51e-5Wie im ALOHA-Paper.
max steps100000100000Ungefähr der Punkt, an dem ein 50-Episoden-Set keine Verbesserungen mehr zeigt.
gradient accumulation11, does not applyÄndern Sie stattdessen die Batch-Größe.
seed1000exposedDer Tyro-Einstiegspunkt von GR00T hat keinen Seed; ACT-Läufe sind die reproduzierbaren.
chunk_size / n_action_steps100 / 100100 / 100, editableVorhersage- und Ausführungshorizont. Reduzieren Sie den zweiten, nicht den ersten.
checkpoint frequency20000not exposedsaveSteps ist hier ein GR00T-Parameter.
Speichermangel ist ein Problem der Batch-Größe, nicht der Grafikkarte

ACT mit einer Batch-Größe von 8 und zwei 640x480 Kameras passt bequem auf 24 GB. Es passt nicht mehr, wenn die Batch-Größe zur Beschleunigung erhöht wird oder wenn 1920x1080 Frames eingespeist werden, wie ein lerobot-Aufnahmebeispiel zeigt. Zwei ResNet-18 Backbones bei 1080p haben ein ganz anderes Speicherprofil. Reduzieren Sie --batch_size auf 4, bevor Sie eine größere Karte mieten. Siehe Speichermangel beim Training.

Dauer: etwa 5 Stunden auf einer 11 GB RTX 2080 Ti im Paper, einige Stunden für 100.000 Schritte pro lerobot's ACT-Seite, 2 bis 5 Stunden auf dem AY-Robots 24 GB Tier. Nicht abkürzen. Die README des Referenz-Repos besagt, dass eine ruckartige oder pausierende Policy normalerweise nur mehr Training benötigt, da sich Erfolg und Geschmeidigkeit auch nach dem Plateau der Verlustfunktion weiter verbessern: Für reale Daten sind mindestens 5000 Epochen oder die 3- bis 4-fache Länge nach dem Plateau erforderlich.

bash
lerobot-train \
  --config_path=outputs/train/act_so100_cube/checkpoints/last/pretrained_model/train_config.json \
  --resume=true
Fortsetzen eines unterbrochenen Laufs vom letzten Checkpoint.

Ausführen der trainierten Policy auf dem Arm

Die Bereitstellung verwendet lerobot-rollout. Kamerakeys müssen mit den aufgezeichneten übereinstimmen: Eine Policy, die auf front und wrist trainiert wurde, akzeptiert nicht cam0 und cam1, und rename_map hilft nicht, da sie einen vortrainierten Checkpoint benötigt. Der Task-String kann weggelassen werden; lerobot's eigenes Beispiel kennzeichnet ihn als für ACT überspringbar.

bash
lerobot-rollout \
  --strategy.type=base \
  --policy.path=${HF_USER}/act_so100_cube \
  --robot.type=so100_follower \
  --robot.port=/dev/ttyACM0 \
  --robot.id=my_follower \
  --robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 1, width: 640, height: 480, fps: 30} }" \
  --display_data=true \
  --duration=60
Autonomer Rollout ohne Aufzeichnung. Verwenden Sie --strategy.type=sentry, um die Evaluierungsepisoden aufzuzeichnen.
Dieser Befehl wurde kürzlich umbenannt, daher weichen alte Tutorials ab

Die Evaluierung lief früher über lerobot-record --policy.path=.... In 0.6.x ist es lerobot-rollout mit einem --strategy.type Selektor: base, sentry (Aufzeichnung mit automatischem Upload), highlight (Ringspeicher, der per Tastendruck gespeichert wird), dagger (Mensch in der Schleife) und episodic. Mit Stand vom 23. August 2026 steht auf der ACT-Dokumentationsseite immer noch "using the lerobot-record command" direkt über einem Block, der lerobot-rollout ausführt. Folgen Sie dem Befehl, nicht dem Satz.

Um einen Checkpoint anstelle des finalen Modells zu fixieren, fügen Sie --policy.pretrained_revision. Dazu muss der Lauf mit --save_checkpoint_to_hub=true, standardmäßig deaktiviert, gestartet worden sein: Ohne diese Option pusht lerobot nur das finale Modell und nichts anderes. Damit wird jeder Checkpoint mit seinem null-aufgefüllten Schritt getaggt, sodass --policy.pretrained_revision=060000 den 60000er-Schritt wiederherstellt. Der Vergleich mit dem 100000er-Schritt am realen Arm ist das günstigste verfügbare Experiment.

Zwei Wege zum selben Checkpoint

Alles oben Genannte ist der manuelle Weg und er funktioniert. Der Plattformweg tauscht Kontrolle gegen den Verzicht auf eine eigene GPU oder Python-Umgebung ein.

  1. Installieren Sie lerobot 0.6.x mit core_scripts, training, feetech, ffmpeg.
  2. Ports finden, Motor-IDs einstellen, beide Arme kalibrieren, 50 Episoden aufzeichnen.
  3. Einige Episoden wiedergeben, um zu bestätigen, dass die Daten die Aufgabe enthalten.
  4. Eine 24 GB GPU mieten oder besitzen, CUDA und PyTorch anpassen, lerobot-train --policy.type=act ausführen.
  5. Einige Stunden warten, dann lerobot-rollout auf der Maschine am Arm ausführen.
bash
# the two commands that matter, end to end
lerobot-record --robot.type=so100_follower --robot.port=/dev/ttyACM0 \
  --teleop.type=so100_leader --teleop.port=/dev/ttyACM1 \
  --dataset.repo_id=${HF_USER}/so100_cube --dataset.num_episodes=50 \
  --dataset.single_task="Grab the black cube"

lerobot-train --dataset.repo_id=${HF_USER}/so100_cube --policy.type=act \
  --output_dir=outputs/train/act_so100_cube --policy.device=cuda
Was dieser Weg Ihnen bietet

Volle Kontrolle: configuration_act.py bearbeiten, eine Kamera hinzufügen, den Trainer forken. Für die Forschung statt der Auslieferung einer Aufgabe ist eine Plattform eine Ablenkung.

Die AY-Robots Trainingsmatrix mit fünf Policy-Zeilen und vier Roboterarm-Spalten, wobei jede Zelle auf den spezifischen Trainingsleitfaden für diese Modell- und Armkombination verlinkt ist
Die Matrix auf /train. Die ACT-Zeile gegenüber der SO-100-Spalte ist der Leitfaden dieses Artikels.

Was tatsächlich schiefgeht

Fast keine der Schwierigkeiten liegt im Trainingsbefehl selbst. Sie liegen in den Dingen drumherum, geordnet danach, wie oft sie beim ersten Mal Probleme bereiten.

SymptomÜbliche UrsacheSeite
lerobot-find-port zeigt nichts anTreiber, Kabel oder KnotenberechtigungenArm nicht erkannt
Kamera fehlt zur AufnahmezeitIndex nach Neustart geändert, oder zwei Kameras an einem USB-ControllerKamera nicht erkannt
Training lehnt den Datensatz abACT benötigt v3.0, GR00T benötigt v2.1Datensatz als v3 abgelehnt
CUDA-Speicher erschöpftBatch-Größe erhöht, oder 1080p-Frames statt 480pSpeicher erschöpft im Training
Loss sieht gut aus, Arm tut nichtsDie Daten enthalten die Aufgabe nicht, oder eine Kamera wurde bewegtLoss fällt, Policy tut nichts
Ruckartige Bewegung oder eine Pause mitten in der EpisodeUnzureichend trainiert, ein Stopp an einer Chunk-Grenze, oder ein zeitüberschreitender InferenzaufrufPolicy friert mitten in der Bewegung ein

Zwei Zeilen verdienen besondere Beachtung. ACT trainiert mit LeRobot v3.0, während GR00Ts Loader damit abstürzt und v2.1 benötigt, sodass ein Datensatz, der ACT trainiert, einen GR00T-Lauf fehlschlagen lassen kann. Und die letzte Zeile hat zwei Lösungen: Die ACT-Autoren begegnen ruckartiger Bewegung mit mehr Training, während bei n_action_steps bei 100 ein echter Stillstand an einer Chunk-Grenze auftritt, eine sichtbare Pause alle 3.3 Sekunden bei 30 fps. Zwei weitere Dinge, die man wissen sollte: Ein einzelnes totes Gelenk ist normalerweise eine Servo-ID, die nie geschrieben wurde, und ein Greifer, der sich nähert, aber nie schließt bedeutet zu wenig Greifbereich in den Demonstrationen. Vollständiger Index: die Seiten zu den Fehlermodi.

Was ein Lauf kostet

StufeModelleLaufzeitPreis pro StundeKosten pro Lauf
RTX 4090 / 24 GBACT, SmolVLA2 bis 5 Stunden0.30 to 0.60 USDetwa 1 bis 3 USD
A100 80 GB / H100GR00T N1.7, GR00T N1.5, Pi0.53 bis 6 Stunden1.20 to 2.00 USDetwa 4 bis 12 USD

Dies ist das Argument, mit ACT zu beginnen, auch wenn Sie später ein VLA wünschen. Ein fehlgeschlagener ACT-Lauf kostet den Preis eines Kaffees und verrät Ihnen innerhalb von Stunden, ob Ihr Datensatz die Aufgabe enthält. Ein fehlgeschlagener GR00T-Lauf kostet das Vierfache für die gleiche Erkenntnis. Ein Wechsel zu GR00T N1.7 oder SmolVLA danach ist eine Formänderung, kein Neuaufbau. Hintergrund: Vision-Sprach-Aktionsmodelle, der vollständige SO-100 Anleitung, trainieren Sie Ihre erste Policy und Imitationslernen. Kein Arm? Die Live-Seite streamt einen echten SO-100, den Sie ohne Anmeldung steuern können.

Trainieren Sie ACT auf Ihrem SO-100

Die Anleitung für diese exakte Kombination: Standardeinstellungen, GPU-Stufe und was ein Lauf kostet. Wählen Sie den Datensatz, das Backend mietet die Karte und schreibt die Checkpoints.

Trainingsanleitung öffnen
Gibt es stattdessen ein vortrainiertes ACT-Modell, das ich feinabstimmen kann?

Nein. ACT hat kein Basismodell; es existiert erst, nachdem Sie es trainiert haben. Das ist keine Lücke in den Tools, sondern das Wesen von ACT: Das Paper trainiert eine Policy von Grund auf für jede Aufgabe. Für einen Anbieter-Checkpoint verwenden Sie GR00T N1.7 oder Pi0.5.

Wie viele Episoden brauche ich wirklich?

50: was ALOHA pro Aufgabe aufgezeichnet hat (100 für Thread Velcro, die schwierigste) und das AY-Robots-Minimum. lerobot empfiehlt etwa 10 pro Objektposition, Kameras fixiert, Griff konsistent. Fünfzig saubere Episoden sind besser als hundert, bei denen sich die Kamera bewegt hat.

Sollte ich chunk_size von 100 ändern?

Normalerweise nicht. Die Ablation steigt von 1 Prozent bei k = 1 auf 44 Prozent bei k = 100 und flacht danach ab, sodass 100 nahe am Maximum liegt. Wenn der Arm zu lange feststeckt, reduzieren Sie stattdessen n_action_steps: bei 30 fps, 25 erneute Abfragen alle 0,8 Sekunden.

Wie lange dauert ein Trainingslauf, und kann ich ihn vorzeitig beenden?

Zwei bis fünf Stunden auf einer 24 GB Karte für 100000 Schritte. Checkpoints werden alle 20000 Schritte gespeichert und --resume=true nimmt einen Lauf wieder auf, sodass ein vorzeitiges Beenden sicher ist. Nur nicht beim ersten flachen Abschnitt: Die Glätte verbessert sich, nachdem der Verlust stagniert.

Der Verlust ist gesunken und der Arm versagt immer noch. Was nun?

Fast immer der Datensatz. Spielen Sie aufgezeichnete Episoden am Arm ab: Wenn die Wiedergabe die Aufgabe nicht ausführt, enthält die Daten sie nicht. Überprüfen Sie dann, ob sich etwas bewegt hat, insbesondere eine Kamera. ACT hat keine Vorkenntnisse, daher ist eine kleine Änderung in Episode 21 dauerhaft.

Bereit für hochwertige Robotik-Daten?

AY-Robots verbindet Ihre Roboter mit qualifizierten Operatoren weltweit.

Jetzt starten