xBerry Blog xBerry LeRobot Blog xBerry LeRobot Tydzień 2: Trenujemy dwa modele ACT – RGB i RGB+głębia

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:

  

 

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:

 

ParametrWartośćOpis
OptymalizatorAdamWbeta_1=0.9, beta_2=0.999, ε=1e-8
Współczynnik uczenia1e-5Stały dla sieci i backbone’u
Weight Decay0.0001Regularyzacja wag
Grad Clip Norm10Maksymalny próg obcinania gradientu
Liczba kroków50,000Całkowita długość treningu
Rozmiar paczki8Próbek na krok optymalizacji
Częstotliwość zapisu25,000Zapis checkpointu
Częstotliwość ewaluacji25,000Ocena na 50 epizodach
Częstotliwość logowania100Przesyłanie metryk do WandB

 
Krzywe trenowania ACT i RGB - LeRobot
 

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:

 

KomponentSpecyfikacja
GPUNVIDIA RTX PRO 4000 Blackwell – 24 GB VRAM, 8,960 CUDA cores
CUDA13.0
CPU20 rdzeni fizycznych (28 wątków logicznych)
RAM64 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.

 
Statyski w Wandb - train-loss

Obie krzywe zbiegają się niemal identycznie – RGB+depth (pomarańczowy) startuje wyżej z uwagi na większy payload danych.
 

Oba wytrenowane modele są teraz publicznie dostępne na HuggingFace:

 

 

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.

Powiązane blogi

Planujesz nowy projekt?

Porozmawiajmy Arrow icon