xBerry LeRobot Tydzień 2: Trenujemy dwa modele ACT – RGB i RGB+głębia
Kiedy uruchamialiśmy trening dla naszego robota SO-101, mieliśmy jedno otwarte pytanie: czy danie modelowi poczucia głębi rzeczywiście poprawia manipulację – czy tylko podwaja czas treningu bez żadnego efektu? W 2. tygodniu znaleźliśmy odpowiedź.
TL;DR – Dwa modele ACT, 50 000 kroków, zero problemów
Uruchomiliśmy trening ACT przez 50 000 kroków przy użyciu frameworka LeRobot na karcie NVIDIA RTX PRO 4000 Blackwell. Wytrenowaliśmy 2 modele: wyłącznie RGB (2,5 h) oraz RGB+głębia (5 h).
Dlaczego trenowaliśmy 2 modele ACT: RGB vs. RGB+głębia
Co to ACT (Action Chunking with Transformers)? Jest to algorytm imitation learning, który przewiduje całe sekwencje przyszłych pozycji stawów robota jednocześnie przy użyciu architektury Transformer, zamiast jednej akcji na krok.
Przed uruchomieniem treningu ACT zdefiniowaliśmy 2 warianty modelu w celu przeprowadzenia kontrolowanego porównania. Pierwszy model uczy się wyłącznie na obrazach kolorowych (RGB). Drugi model otrzymuje zarówno obrazy kolorowe, jak i mapy głębi – pikselowe pomiary odległości, które dają modelowi przestrzenne rozumienie sceny w 3D. Trenując oba warianty na tym samym datasecie z identycznymi hiperparametrami, izolujemy wpływ informacji o głębi na skuteczność robota.
Datasety użyte do treningu ACT:
- Tylko RGB: xBerry/lerobot_act_rgb
- RGB+głębia: xBerry/lerobot_act
Jak uruchomić trening:
lerobot-record \
--robot.type=so100_follower \
--robot.port=/dev/ttyACM0 \
--robot.id=my_robot \
--robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}}" \
--display_data=true \
--dataset.repo_id=${HF_USER}/eval_act_your_dataset \
--dataset.num_episodes=10 \
--dataset.single_task="Your task description" \
--dataset.streaming_encoding=true \
--dataset.encoder_threads=2 \
# --dataset.vcodec=auto \
--policy.path=${HF_USER}/act_policy
Dlaczego dodanie głębi jest ważne: Dodanie głębi jako modalności wejściowej to częsty wybór projektowy w zadaniach manipulacji, ale praktycznie podwaja czas treningu. Zmierzenie rzeczywistej różnicy w skuteczności powie nam, czy ten koszt jest uzasadniony dla zadań typu pick-and-place – to właśnie jest kluczowe pytanie ewaluacji w tygodniu 3.
Konfiguracja treningu ACT i hiperparametry
Przechodząc dalej do konfiguracji: jako kręgosłup wizyjny użyliśmy ResNet-18 – kompaktowej, 18-warstwowej konwolucyjnej sieci neuronowej ekstrahującej cechy wizualne z klatek kamery i przekazującej je do transformera ACT.
Natomiast optymalizację przeprowadziliśmy algorytmem AdamW – adaptacyjnym algorytmem gradientowym z rozdzieloną regularyzacją wagową, który stabilizuje trening na zaszumionych danych demonstracyjnych.
Parametry przedstawiają się następująco w tabelce poniżej:
| Parametr | Wartość | Opis |
|---|---|---|
| Optymalizator | AdamW | beta_1=0.9, beta_2=0.999, ε=1e-8 |
| Współczynnik uczenia | 1e-5 | Stały dla sieci i backbone’u |
| Weight Decay | 0.0001 | Regularyzacja wag |
| Grad Clip Norm | 10 | Maksymalny próg obcinania gradientu |
| Liczba kroków | 50,000 | Całkowita długość treningu |
| Rozmiar paczki | 8 | Próbek na krok optymalizacji |
| Częstotliwość zapisu | 25,000 | Zapis checkpointu |
| Częstotliwość ewaluacji | 25,000 | Ocena na 50 epizodach |
| Częstotliwość logowania | 100 | Przesyłanie metryk do WandB |

Jak widać na obrazku – obie krzywe uczenia zbiegły czysto do swoich minimów. Model RGB ukończył trening w 2,5h, natomiast model RGB+głębia wymagał 5h ze względu na większy payload danych na próbkę.
Sprzęt i konfiguracja potoku danych
Mając hiperparametry ustalone, to sprzęt decyduje o tym, jak szybko trening przebiega. Cały trening przeprowadziliśmy na jednej stacji roboczej w biurze xBerry, skonfigurowanej tak, by wyeliminować wąskie gardła przy transferze danych CPU-GPU.
Poniżej specyfikacja w tabeli:
| Komponent | Specyfikacja |
|---|---|
| GPU | NVIDIA RTX PRO 4000 Blackwell – 24 GB VRAM, 8,960 CUDA cores |
| CUDA | 13.0 |
| CPU | 20 rdzeni fizycznych (28 wątków logicznych) |
| RAM | 64 GB |
Czym jest DataLoader? To narzędzie, które pomaga efektywnie ładować i wstępnie przetwarzać dane z zestawu danych oraz przygotowywać je do wprowadzenia do modelu uczenia maszynowego podczas szkolenia.
Ponadto skonfigurowaliśmy również DataLoader w taki sposób, by GPU było stale zasilane danymi przez cały 5-godzinny trening:
- num_workers = 12 – 12 równoległych procesów ładowania danych
- prefetch_factor = 4 – każdy worker pobiera 4 paczki z wyprzedzeniem
- persistent_workers = true – procesy robocze pozostają aktywne między epokami, eliminując koszt restartu
Jak skonfigurować DataLoader:
1. Stworzyć dataset LeRobota:
LeRobotDataset.create(
args.repo_id,
args.fps,
root=args.root,
robot_type=robot.name,
features=dataset_features,
use_videos=True,
image_writer_processes=args.image_writer_processes,
image_writer_threads=args.image_writer_threads,
batch_encoding_size=args.video_encoding_batch_size,
vcodec=args.vcodec,
streaming_encoding=args.streaming_encoding,
encoder_queue_maxsize=args.encoder_queue_maxsize,
encoder_threads=args.encoder_threads,
)
2. Skonfigurować ładowanie danych w pętli treningowej:
lerobot-train \
--dataset.repo_id=$(HF_USER)/$$ds \
--dataset.root=$(HOME)/robotic_arm/datasets/$$ds \
--policy.type=act \
--output_dir=$(CURDIR)/outputs/train/$${ds}_policy \
--job_name=$${ds}_policy \
--policy.device=$(TRAIN_DEVICE) \
--policy.repo_id=$(HF_USER)/$${ds}_policy \
--policy.push_to_hub=true \
--policy.vision_backbone=resnet18 \
--policy.pretrained_backbone_weights=ResNet18_Weights.IMAGENET1K_V1 \
--policy.chunk_size=16 \
--policy.n_action_steps=16 \
--steps=$(TRAIN_STEPS) \
--batch_size=8 \
--num_workers=12 \
--prefetch_factor=4 \
--persistent_workers=true \
--save_freq=25000 \
--eval_freq=25000 \
--log_freq=100 \
--wandb.enable=$(WANDB_ENABLE); \
Dlaczego konfigracja DataLoader jest ważna: Konfiguracja DataLoadera to jeden z najczęściej pomijanych bottlenecków w pipeline’ach treningowych opartych na wizji. Przy 12 workerach i prefetch_factor=4, przygotowanie danych przez CPU wyprzedza konsumpcję przez GPU – szczególnie istotne przy treningu RGB+głębia, gdzie każda próbka jest znacznie większa.
Monitorowanie w czasie rzeczywistym przez WandB
Przy treningu trwającym do 5 godzin potrzebowaliśmy sposobu na potwierdzenie zbieżności bez przerywania procesu. Logowaliśmy postęp na żywo do WandB (Weights & Biases) – platformy do śledzenia eksperymentów, która rejestruje krzywe strat, metryki i statystyki systemowe w trakcie trenowania modelu.
Framework LeRobot integruje się z WandB natywnie, przesyłając metryki co 100 kroków. Dzięki temu mogliśmy potwierdzić zbieżność modeli z biura xBerry bez przerywania treningu – obie krzywe strat zmierzały w dół już od kroku 10 000.

Oba wytrenowane modele są teraz publicznie dostępne na HuggingFace:
- Policy RGB: xBerry/lerobot_act_rgb_policy
- Policy RGB+głębia: xBerry/lerobot_act_policy
Jeśli chcesz sprawdzić jak wprowadzaliśmy projekt uczenia się przez imitację w naszej fimie sprawdź artykuł – Jak zbudowaliśmy stanowisko do uczenia przez imitację
Co dalej: ewaluacja na fizycznym robocie
Oba modele są wytrenowane, zbiegły i opublikowane. Tydzień 3 skupi się na wdrożeniu obu modeli ACT na fizycznym ramieniu SO-101 i przeprowadzeniu ustrukturyzowanej ewaluacji – uruchamianiu zadania pick-and-place i mierzeniu wskaźników sukcesu dla obu konfiguracji wejściowych.
FAQ
Czym jest ACT (Action Chunking with Transformers)?
ACT to algorytm imitation learning do manipulacji robotem, który używa architektury Transformer do jednoczesnego przewidywania całych sekwencji przyszłych pozycji stawów, zamiast jednej akcji na krok. Takie podejście poprawia spójność czasową ruchu i redukuje kumulowanie błędów predykcji w długich sekwencjach manipulacyjnych.
Jaka jest różnica między treningiem na RGB a RGB+głębia?
Model RGB-only otrzymuje standardowe obrazy kolorowe z kamery. Model RGB+głębia dodatkowo otrzymuje mapy głębi – pikselowe pomiary odległości, które zapewniają modelowi przestrzenną świadomość położenia obiektów w 3D. Model RGB+głębia wymaga około dwukrotnie dłuższego czasu treningu.
Jak długo trwa trening modelu ACT z LeRobot?
Przy 50 000 krokach i rozmiarze paczki 8, model ACT wyłącznie RGB wytrenował się w 2,5 h na karcie NVIDIA RTX PRO 4000 Blackwell. Model RGB+głębia wymagał 5 h ze względu na większy payload danych na próbkę.
Jakiego sprzętu potrzeba do trenowania modelu LeRobot ACT1?
Zespół xBerry trenował ACT na jednej karcie NVIDIA RTX PRO 4000 Blackwell z 24 GB VRAM i 8 960 rdzeniami CUDA, w parze z procesorem 20-rdzeniowym i 64 GB RAM. Żadna infrastruktura chmurowa nie była potrzebna do pełnego treningu 50 000 kroków.
Czym jest WandB i po co używać go w trenowaniu robotów?
WandB (Weights & Biases) to platforma do śledzenia eksperymentów, która loguje stratę, metryki i statystyki sprzętowe w czasie rzeczywistym podczas treningu modelu. Framework LeRobot integruje się z WandB natywnie, umożliwiając monitorowanie zbieżności bez zatrzymywania pętli treningowej.
