
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.
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.
| Hyperparameter | ALOHA-Paper, Tabelle III | lerobot auf main |
|---|---|---|
| Lernrate | 1e-5 | optimizer_lr = 1e-5 |
| Batch-Größe | 8 | batch_size = 8, in TrainPipelineConfig not ACTConfig |
| Encoder-/Decoder-Schichten | 4 / 7 | n_encoder_layers = 4 / n_decoder_layers = 1 |
| Chunk-Größe k | 100 | chunk_size = 100 |
| Latente Dimension von z | fehlt; Abb. 11 zeigt eine Projektion von 32 auf 512 | latent_dim = 32 |
| Temporales Ensembling | fehlt; --temporal_agg im Referenzcode | temporal_ensemble_coeff = None |
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_sizeund löst einenValueErroraus, 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.
# 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=cudaSetzen 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.
| Policy | Familie | Parameter | Pro Schritt | GPU-Klasse | Min. Episoden | Datensatz |
|---|---|---|---|---|---|---|
| ACT | Chunking-Transformer, von Grund auf | ~80 M | 20 ms | RTX 4090 / 24 GB | 50 | LeRobot v3.0 |
| SmolVLA | Kompaktes VLA | ~450 M | 245 ms | RTX 4090 / 24 GB | 30 | LeRobot v3.0 |
| GR00T N1.7 | VLA-Grundlage, Diffusions-Head | ~3 B (~40 M trainiert) | 152 ms | A100 / H100 80 GB | 50 | LeRobot v2.0 oder v2.1 |
| GR00T N1.5 | VLA-Grundlage, Vorgänger | ~3 B | 165 ms | A100 / H100 80 GB | 50 | LeRobot v2.0 oder v2.1 |
| Pi0.5 | Flow-Matching VLA, siehe Flow-Matching | ~3 B, PaliGemma-Backbone | 485 ms | A100 / H100 80 GB | 50 | LeRobot v3.0 |

- 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.
- 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.
| Arm | Servos | Spannung | Teilekosten | Status |
|---|---|---|---|---|
| SO-100 | Feetech STS3215 | 7.4 V | ~110 to 150 EUR | Volle Unterstützung, Referenzarm |
| SO-101 | Feetech STS3215 | 7.4 V | ~130 to 170 EUR | Volle Unterstützung |
| Koch v1.1 | Dynamixel XL330 / XL430 | 5 V and 12 V rails | ~250 to 350 EUR | Kompatibel |
| LeKiwi | Feetech STS3215 (arm) | 7.4 V arm, 12 V base | ~400 to 500 EUR | Kompatibel |
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.
- 1lerobot mit den richtigen Extras installieren
Für die Aufnahme werden
core_scriptsbenötigt, für das Trainingtraining, für Feetech-Servosfeetech. Python 3.12+.bashconda 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 - 2Den 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.
bashlerobot-find-port # on Linux, if the port exists but is unreadable: sudo chmod 666 /dev/ttyACM0 - 3Motor-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.
bashlerobot-setup-motors \ --robot.type=so100_follower \ --robot.port=/dev/ttyACM0 lerobot-setup-motors \ --teleop.type=so100_leader \ --teleop.port=/dev/ttyACM1 - 4Beide 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
idwieder.bashlerobot-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 - 5Einmal 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.
bashlerobot-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 - 650 Episoden aufnehmen
50 ist das AY-Robots-Minimum und was ALOHA pro Aufgabe verwendet hat. lerobot empfiehlt 10 pro Objektposition, feste Kameras, konsistenter Griff.
nbeendet eine Episode,rnimmt erneut auf,qstoppt und kodiert.bashHF_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

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.
lerobot-replay \
--robot.type=so100_follower \
--robot.port=/dev/ttyACM0 \
--robot.id=my_follower \
--dataset.repo_id=${HF_USER}/so100_cube \
--dataset.episode=0Trainieren 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.
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--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.
| Einstellung | lerobot Standard | AY-Robots ACT Formular | Kommentar |
|---|---|---|---|
| batch size | 8 | 8 | Reduzieren Sie diese zuerst, wenn Sie an VRAM-Grenzen stoßen. |
| learning rate | 1e-5 | 1e-5 | Wie im ALOHA-Paper. |
| max steps | 100000 | 100000 | Ungefähr der Punkt, an dem ein 50-Episoden-Set keine Verbesserungen mehr zeigt. |
| gradient accumulation | 1 | 1, does not apply | Ändern Sie stattdessen die Batch-Größe. |
| seed | 1000 | exposed | Der Tyro-Einstiegspunkt von GR00T hat keinen Seed; ACT-Läufe sind die reproduzierbaren. |
| chunk_size / n_action_steps | 100 / 100 | 100 / 100, editable | Vorhersage- und Ausführungshorizont. Reduzieren Sie den zweiten, nicht den ersten. |
| checkpoint frequency | 20000 | not exposed | saveSteps ist hier ein GR00T-Parameter. |
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.
lerobot-train \
--config_path=outputs/train/act_so100_cube/checkpoints/last/pretrained_model/train_config.json \
--resume=trueAusfü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.
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=60Die 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.
- Installieren Sie lerobot 0.6.x mit
core_scripts,training,feetech, ffmpeg. - Ports finden, Motor-IDs einstellen, beide Arme kalibrieren, 50 Episoden aufzeichnen.
- Einige Episoden wiedergeben, um zu bestätigen, dass die Daten die Aufgabe enthalten.
- Eine 24 GB GPU mieten oder besitzen, CUDA und PyTorch anpassen,
lerobot-train --policy.type=actausführen. - Einige Stunden warten, dann
lerobot-rolloutauf der Maschine am Arm ausführen.
# 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=cudaVolle 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.
- Mit dem Desktop-Client aufzeichnen oder eine Hugging Face Repo-ID oder ein lokales Dataset mitbringen.
- Öffnen Sie den ACT auf SO-100 Leitfaden und wählen Sie Modell und Dataset aus. Die Standardwerte sind die von lerobot; chunkSize, nActionSteps, seed und logFreq sind editierbar.
- Das Backend mietet eine GPU, deren Größe vom VRAM abhängt, und schreibt Checkpoints in den Objektspeicher.
/api/inference/podstellt dann die Policy dem lokalen Robot-Client zur Verfügung. Ein inaktiver Watchdog zerstört den Pod, sodass nichts stillschweigend abgerechnet wird.- Die gleichen Operationen existieren in der CLI, dem MCP-Server und den Trainings-Dokumenten.
Es behebt Ihre Daten nicht: Ein Dataset mit einer verschobenen Kamera trainiert hier genauso schlecht, und das Formular kann dies nicht erkennen. Es beseitigt auch nicht das Latenzproblem. Der Regelkreis beträgt 20 bis 485 ms pro Aktionsschritt, mit zusätzlichen Roundtrips über das öffentliche Internet, und ACT ist am stärksten betroffen, da sein Schritt am kürzesten ist: 60 ms sind eine 12-prozentige Verlangsamung bei Pi0.5s 485 ms, aber das Vierfache des Schritts bei ACTs 20 ms. Remote-Inferenz eignet sich für langsames Pick-and-Place, nicht für schnelle reaktive Bewegungen.

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 Ursache | Seite |
|---|---|---|
| lerobot-find-port zeigt nichts an | Treiber, Kabel oder Knotenberechtigungen | Arm nicht erkannt |
| Kamera fehlt zur Aufnahmezeit | Index nach Neustart geändert, oder zwei Kameras an einem USB-Controller | Kamera nicht erkannt |
| Training lehnt den Datensatz ab | ACT benötigt v3.0, GR00T benötigt v2.1 | Datensatz als v3 abgelehnt |
| CUDA-Speicher erschöpft | Batch-Größe erhöht, oder 1080p-Frames statt 480p | Speicher erschöpft im Training |
| Loss sieht gut aus, Arm tut nichts | Die Daten enthalten die Aufgabe nicht, oder eine Kamera wurde bewegt | Loss fällt, Policy tut nichts |
| Ruckartige Bewegung oder eine Pause mitten in der Episode | Unzureichend trainiert, ein Stopp an einer Chunk-Grenze, oder ein zeitüberschreitender Inferenzaufruf | Policy 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
| Stufe | Modelle | Laufzeit | Preis pro Stunde | Kosten pro Lauf |
|---|---|---|---|---|
| RTX 4090 / 24 GB | ACT, SmolVLA | 2 bis 5 Stunden | 0.30 to 0.60 USD | etwa 1 bis 3 USD |
| A100 80 GB / H100 | GR00T N1.7, GR00T N1.5, Pi0.5 | 3 bis 6 Stunden | 1.20 to 2.00 USD | etwa 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 öffnenGibt 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.
Quellen
- Zhao, Kumar, Levine, Finn: Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware (ACT), arXiv 2304.13705
- ALOHA / ACT project page
- tonyzhaozh/act, the reference implementation and its training-length advice
- tonyzhaozh/act issue 25: the action head reads only the first decoder layer
- huggingface/lerobot
- lerobot ACTConfig: chunk_size, n_action_steps, n_decoder_layers and the rest of the defaults
- lerobot TrainPipelineConfig: steps, batch_size, seed, save_freq, log_freq, save_checkpoint_to_hub
- lerobot train_utils: zero-padded checkpoint dirs, the last symlink and checkpoint push tagging
- lerobot v0.6.1 release, 3 August 2026
- LeRobot docs: ACT
- LeRobot docs: imitation learning on real robots (record, replay, train, rollout)
- LeRobot docs: SO-100 setup, motor ids and calibration
- LeRobot docs: installation and the optional extras
- Hugging Face blog: LeRobot Community Datasets, the ImageNet of Robotics, When and How?
- TheRobotStudio/SO-ARM100: Standard Open Arm 100
Bereit für hochwertige Robotik-Daten?
AY-Robots verbindet Ihre Roboter mit qualifizierten Operatoren weltweit.
Jetzt starten