5개의 정책 행과 4개의 로봇 팔 열로 구성된 AY-Robots 훈련 매트릭스로, 각 셀은 특정 모델 및 팔 훈련 가이드로 연결됩니다.
ACTSO-100lerobot모방 학습정책 훈련

SO-100에서 ACT를 처음부터 훈련하는 방법

AY-Robots ResearchAugust 23, 202616분 읽기

lerobot을 사용하여 SO-100에서 Action Chunking Transformer를 처음부터 훈련합니다: act config, chunk_size 및 n_action_steps, 100000 스텝 스케줄, 20 ms 추론.

ACT는 SO-100 정책 중 특이한 경우입니다. GR00T N1.7 및 N1.5는 nvidia/GR00T-N1.7-3Bnvidia/GR00T-N1.5-3B에서 시작하며, Pi0.5는 lerobot/pi05_base에서 시작합니다. ACT는 아무것도 없는 상태에서 시작합니다. 기반 모델이 아니기 때문에 기본 체크포인트가 없습니다. 이는 약 8천만 개의 매개변수를 가진 트랜스포머로, 특정 작업에 대해 사용자의 로봇 팔과 조명 환경에서 처음부터 훈련시킵니다.

이것이 바로 30억 개의 매개변수를 가진 VLA가 152~485ms를 필요로 하는 제어 단계를 20ms 만에 실행하고, 실행당 4~12 USD 대신 1~3 USD가 드는 이유입니다. 이 가이드는 lerobot를 사용하여 SO-100에서 수동 경로를 안내합니다: 기록, act 구성, chunk_sizen_action_steps가 제어하는 것, 100000단계 스케줄, 롤아웃. 그 다음 AY-Robots에서 동일한 작업을 수행하며, 플랫폼이 도움이 되지 않는 부분도 포함합니다.

알아야 할 사항

  • ACT는 처음부터 훈련합니다: 기본 모델, 사전 훈련, 언어 입력이 없습니다. 하나의 체크포인트, 하나의 작업.
  • 논문: 약 8천만 개의 매개변수, 11GB RTX 2080 Ti에서 약 5시간, 0.01초 추론.
  • lerobot 기본값: chunk_size 100, n_action_steps 100, batch 8, lr 1e-5, 100000 steps, seed 1000.
  • AY-Robots에서: 단계당 20ms, 다섯 가지 중 가장 빠릅니다. 최소 50 에피소드, LeRobot v3.0, 24GB 카드, 실행당 1~3 USD.
  • 이 모델은 학습한 작업에서는 성공하지만, 언어 조건화를 원하면 실패합니다.
이 설명이 적용되는 버전

2026년 8월 23일 lerobot 0.6.x에 대해 확인됨: pyproject.tomlmainversion = "0.6.2"로 읽히며, 최신 태그 v0.6.1은 2026년 8월 3일자입니다. python lerobot/scripts/train.py로 시작하는 튜토리얼은 콘솔 진입점인 lerobot-train, lerobot-record, lerobot-rollout보다 이전입니다.

ACT는 실제로 무엇인가

Action Chunking with Transformers는 ALOHA 논문, 저비용 하드웨어로 미세한 양손 조작 학습, Zhao, Kumar, Levine, Finn 공저, arXiv, 2023년 4월 23일에서 유래했습니다. 이 장비는 50Hz로 기록하며, 4개의 웹캠이 480x640 해상도로 30fps 스트리밍합니다. 웹캠은 그리퍼에 2개, 상단에 1개, 전면에 1개 설치되어 있습니다. 초록에서는 10분간의 시연을 통해 반투명 양념 컵 열기, 배터리 끼우기 등 6가지 기술에서 80~90%의 성공률을 주장합니다.

녹화 세션을 계획할 때 본문이 더 유용합니다. 각 작업당 50개의 시연이 필요하며, Thread Velcro는 100개입니다. 이는 10~20분의 데이터와 리셋 시간을 포함하면 30~60분의 실제 소요 시간입니다. 성공률도 균일하지 않습니다. Thread Velcro는 20%, Put On Shoe는 92%, Cup Open은 84%, Prep Tape는 64%입니다.

하이퍼파라미터ALOHA 논문, 표 IIIlerobot (메인)
학습률1e-5optimizer_lr = 1e-5
배치 크기8batch_size = 8, in TrainPipelineConfig not ACTConfig
인코더 / 디코더 레이어4 / 7n_encoder_layers = 4 / n_decoder_layers = 1
청크 크기 k100chunk_size = 100
z의 잠재 차원없음; 그림 11은 32에서 512로의 투영을 보여줌latent_dim = 32
시간적 앙상블없음; 참조 코드의 --temporal_aggtemporal_ensemble_coeff = None
디코더 레이어 행은 오타가 아닙니다

해당 논문에는 7개의 디코더 레이어가 나열되어 있지만, lerobot은 의도적으로 1개만 제공합니다. configuration_act.py의 주석에는 원래 구현에 버그가 있어 첫 번째 레이어만 사용된다고 명시되어 있으며, tonyzhaozh/act의 25번 이슈를 인용합니다. 액션 헤드가 hs[0]을 읽기 때문에 7개의 레이어가 모두 실행되지만 첫 번째 출력만 예측에 도달합니다. 해당 이슈는 2024년 4월 23일부터 열려 있고 답변이 없습니다. lerobot은 인쇄된 숫자가 아닌, 발표된 결과를 생성한 동작과 일치합니다. --policy.n_decoder_layers를 높이면 논문에서 평가되지 않은 모델을 훈련하게 됩니다.

액션 청킹이 핵심 아이디어입니다

일반적인 행동 복제는 하나의 관측을 하나의 행동에 매핑하며, 오류가 누적됩니다. 편차가 팔을 분포에서 벗어나게 하여 더 나쁜 행동을 유발하고, 30단계 후에는 그리퍼가 객체 근처에도 가지 못하게 됩니다. 액션 청킹은 한 번에 k개의 행동을 예측하고 실행하여 유효한 예측 범위를 k배만큼 줄입니다. 또한 인간 데이터에 특정한 골칫거리도 처리합니다. 원격 조작자는 일시 정지하며, 단일 단계 마르코프 정책은 이전에 발생한 일에 따라 달라지는 일시 정지를 모델링할 수 없습니다.

해당 논문은 k를 단정하기보다는 제거합니다. 시간적 앙상블을 끈 상태에서 네 가지 설정에 걸쳐 평균을 냈을 때, 성공률은 k = 1일 때 1퍼센트에서 k = 100일 때 44퍼센트로 상승한 다음, 정책이 개방 루프 제어에 가까워지면서 200과 400에서 점차 감소합니다. 이 곡선이 기본값이 100인 이유입니다.

  • chunk_size: 디코더가 한 번의 순방향 패스에서 예측하는 미래 액션의 수. 기본값 100.
  • n_action_steps: 다시 쿼리하기 전에 실행하는 액션의 수. 기본값 100이므로 lerobot은 전체 청크를 개방 루프로 실행합니다.
  • lerobot은 n_action_steps <= chunk_size를 검증하며, 반대로 설정하면 ValueError를 발생시킵니다.

운영상 중요한 것은 chunk_size를 프레임 속도로 나눈 값입니다. lerobot의 SO-100 예시에서 사용하는 30 fps에서는 100개의 청크가 하나의 관측에서 약 3.3초를 커밋합니다. 작업이 해당 창 내에서 수정이 필요한 경우, chunk_size가 아니라 n_action_steps를 낮추십시오. 이렇게 하면 긴 예측을 유지하고 더 자주 재관측할 수 있습니다.

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
예측 길이를 줄이지 않고 청크의 실행 부분만 단축합니다.
시간적 앙상블의 함정

--policy.temporal_ensemble_coeff를 설정하면 lerobot은 n_action_steps = 1을 요구하며, 그렇지 않으면 NotImplementedError를 발생시킵니다. 앙상블은 매 타임스텝마다 정책을 쿼리하고, 해당 타임스텝에 대한 중첩된 예측을 w_i = exp(-m * i) 가중치로 혼합하며, 가장 오래된 예측이 w_0를 얻습니다. 논문에서는 ACT의 경우 3.3%로 명시하고 있습니다. 이는 실제 효과가 있지만 미미하며, 추론 횟수를 청크 길이만큼 곱합니다. 스텝당 20 ms에서는 감당할 수 있지만, 485 ms에서는 그렇지 않습니다. 추론 지연 시간을 참조하십시오.

ACT가 기초 모델을 능가할 때

다섯 가지 훈련 가능한 정책을 나란히 비교하며, AY-Robots가 임대하는 GPU의 크기를 결정하기 위해 측정하고 사용하는 수치와 함께.

정책계열매개변수단계당GPU 등급최소 에피소드데이터셋
ACT청킹 트랜스포머, 처음부터~80 M20 msRTX 4090 / 24 GB50LeRobot v3.0
SmolVLA소형 VLA~450 M245 msRTX 4090 / 24 GB30LeRobot v3.0
GR00T N1.7VLA 기반, 확산 헤드~3 B (~40 M trained)152 msA100 / H100 80 GB50LeRobot v2.0 or v2.1
GR00T N1.5VLA 기반, 선행 모델~3 B165 msA100 / H100 80 GB50LeRobot v2.0 or v2.1
Pi0.5플로우 매칭 VLA, 다음 참조: 플로우 매칭~3 B, PaliGemma backbone485 msA100 / H100 80 GB50LeRobot v3.0
The AY-Robots policies page showing a comparison table of ACT, SmolVLA, GR00T N1.5, GR00T N1.7 and Pi0.5 with parameter counts, GPU requirements, inference latency and minimum episode counts
The /policies table: ACT has the smallest parameter count and the shortest step time.
ACT를 처음부터 훈련하기
장점
  • A100이 아닌 24GB 카드에서 5가지 방법 중 가장 빠른 액션 단계당 20ms.
  • 3B 클래스의 4~12 USD에 비해 실행당 1~3 USD.
  • 접촉이 많은 작업에서 정밀함: Slide Ziploc 및 Slot Battery에서 88% 및 96%를 달성했으며, 이전 방법은 1단계도 통과하지 못했습니다.
절충점
  • 언어 조건화 없음: 작업 문자열이 무시되므로 하나의 체크포인트는 하나의 작업입니다.
  • 의미론적 사전 지식 없음: ACT가 아는 모든 것은 50개의 에피소드에서 비롯됩니다.
  • 좁은 일반화: 카메라를 움직이면 재훈련해야 합니다.
  • 조용히 실패합니다: 손실은 감소하지만, 팔은 아무것도 하지 않고, 로그에는 아무것도 표시되지 않습니다.
  • 추론이 서보 옆에 있을 때만 속도 이점이 도움이 됩니다.

작업과 장면이 고정되어 있고 움직임이 빠르고 정밀해야 할 때 ACT를 선택하십시오. 하나의 체크포인트가 여러 지침을 포괄해야 할 때 을 선택하십시오. 두 페이지에서 이 결정을 직접 다룹니다: 및 . 공개된 벤치마크의 경우, 은 모든 숫자를 출처에 연결합니다.

시작하기 전에 필요한 것

하나의 팔로워 암, 을 위한 하나의 리더 암, 최소 하나의 카메라, 24GB GPU. ACT는 이미지와 조인트 위치만 읽습니다. 두 대의 카메라가 최적입니다: 사물의 위치를 위한 고정된 전면 뷰, 가 무엇을 만지려 하는지를 위한 손목 카메라(ALOHA와 같이).

서보전압부품 비용상태
SO-100Feetech STS32157.4 V~110 to 150 EUR완전 지원, 레퍼런스 암
SO-101Feetech STS32157.4 V~130 to 170 EUR완전 지원
Koch v1.1Dynamixel XL330 / XL4305 V and 12 V rails~250 to 350 EUR호환 가능
LeKiwiFeetech STS3215 (arm)7.4 V arm, 12 V base~400 to 500 EUR호환 가능
7.4 V, 12 V 아님

SO-100 및 SO-101은 7.4 V 레일에서 Feetech STS3215 서보를 구동합니다. 12 V를 공급하면 서보가 손상되는데, 너무 조용히 손상되어 사람들이 먼저 소프트웨어 탓을 하고, Koch 12 V 전원 공급 장치가 SO-100 보드에 물리적으로 맞습니다. 라벨을 확인하세요. 증상: 서보 응답 없음, 암이 경련하다가 처짐. 또한 SO-100 vs SO-101.

맨 암에서 기록된 데이터셋까지

아래 흐름은 lerobot 0.6.x입니다. 보정된 암과 데이터셋이 있다면 건너뛰세요. 그렇지 않으면 SO-100 시작 가이드에서 조립을 다루고, 기록 워크스루에서 캡처를 다루며, 데이터셋 문서에서 형식을 다룹니다.

  1. 1
    적절한 추가 기능으로 lerobot 설치

    녹화에는 core_scripts, 훈련에는 training, Feetech 서보에는 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
    각 암의 USB 포트 찾기

    두 암을 모두 연결한 상태에서 실행하고, 메시지가 표시되면 하나를 분리합니다. Linux에서는 노드 권한을 열어야 할 수도 있습니다.

    bash
    lerobot-find-port
    # on Linux, if the port exists but is unreadable:
    sudo chmod 666 /dev/ttyACM0
  3. 3
    모터 ID 및 보드레이트 설정

    SO-100에서는 조립 전에 이 작업이 수행됩니다. SO-101과 달리 일단 조립되면 커넥터에 접근할 수 없습니다. 스크립트는 그리퍼부터 한 번에 하나의 모터씩 버스를 따라 이동하며 ID를 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
    두 암 모두 보정

    모든 조인트를 범위의 중간으로 설정하고 Enter를 누른 다음, 각 조인트를 전체 범위로 스윕합니다. 보정을 통해 한 암에서 훈련된 정책을 다른 암에서 실행할 수 있습니다. 동일한 id를 재사용하십시오.

    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
    카메라를 켠 상태에서 한 번 원격 조작

    lerobot의 경험 법칙: 카메라 이미지만 보고 작업을 수행할 수 있어야 합니다. 할 수 없다면 ACT도 할 수 없습니다. 이는 나중에 디버깅하는 것보다 더 많은 불량 데이터셋을 잡아냅니다.

    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개 에피소드 기록

    50은 AY-Robots의 최소값이며 ALOHA가 작업당 사용한 값입니다. lerobot은 객체 위치당 10개, 카메라 고정, 일관된 그립을 권장합니다. n은 에피소드를 종료하고, r은 다시 기록하며, q는 중지하고 인코딩합니다.

    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
원격 조작 세션에서 LeRobot 형식 데이터셋을 캡처하는 방법을 설명하는 AY-Robots 녹화 튜토리얼 페이지
녹화 튜토리얼. 데스크톱 클라이언트는 lerobot-record와 동일한 레이아웃으로 작성합니다.
하루를 잡아먹는 함정: 일관성 없는 데이터셋

ACT는 의존할 사전 지식이 없으므로 모든 불일치가 영구적이 됩니다. 가장 비용이 많이 드는 세 가지: 에피소드 20과 21 사이에 카메라가 살짝 움직인 경우, 오후에 절반을 녹화하여 조명이 바뀐 경우, 두 가지 방식으로 수행된 그립. 각각은 완벽해 보이는 손실 곡선과 잘못된 위치로 가는 암을 제공합니다. 손실은 감소하지만 정책은 아무것도 하지 않음, 정책이 한 가지 설정에서만 작동함고품질 훈련 데이터 수집을 참조하십시오.

훈련 전에 최소 5개 에피소드를 재생하십시오. 은 카메라 스트림, 조인트 상태 및 액션을 당 저장하며, 재생은 해당 액션을 암으로 다시 푸시합니다. 재생이 작업을 수행하지 않으면 데이터에 해당 내용이 포함되어 있지 않으며 훈련도 이를 만들어내지 못할 것입니다.

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
에피소드 0을 재생합니다. 실패하면 중지하고 다시 녹화하십시오.

ACT 정책 훈련

이것이 전체 명령어입니다. ACT 관련 모든 것은 이미 기본값으로 설정되어 있으며, 이것이 lerobot ACT 페이지에서 이들을 시작점으로 삼으라고 하는 이유입니다.

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
SO-100 데이터셋에서 lerobot 0.6.x 문서의 훈련 명령어.

--policy.type=act는 데이터셋에 기록된 모터 및 카메라 수에 맞춰 조정되는 ACTConfig를 로드하므로, 관측 형태를 선언할 필요가 없습니다. --wandb.enable=true는 선택 사항이지만 가치가 있습니다. 손실 곡선은 100000 스텝 실행에서 유일하게 저렴한 신호입니다. 스케줄은 ACTConfig가 아닌 lerobot의 훈련 설정에서 가져옵니다. 100000 스텝, 배치 8, 시드 1000, 20000 스텝마다 체크포인트, 200 스텝마다 로깅입니다.

전체 실행은 020000부터 100000까지 다섯 개의 체크포인트 디렉토리와 last 심볼릭 링크를 남깁니다. 이들을 모두 보관하십시오. 최적의 정책은 종종 마지막 정책이 아닐 수 있습니다.

설정lerobot 기본값AY-Robots ACT 양식설명
배치 크기88VRAM 한계에 도달하면 먼저 낮추십시오.
학습률1e-51e-5ALOHA 논문과 동일합니다.
최대 스텝100000100000대략 50 에피소드 세트가 더 이상 개선되지 않는 지점입니다.
그라디언트 누적11, 해당 없음대신 배치 크기를 변경하십시오.
시드1000노출됨GR00T의 tyro 진입점에는 시드가 없습니다. ACT 실행은 재현 가능한 실행입니다.
chunk_size / n_action_steps100 / 100100 / 100, 편집 가능예측 및 실행 범위. 첫 번째가 아닌 두 번째를 낮추십시오.
체크포인트 빈도20000노출되지 않음여기서 saveSteps는 GR00T의 조절 장치입니다.
메모리 부족은 배치 크기 문제이지, 카드 문제가 아닙니다.

두 개의 640x480 카메라를 사용하는 배치 크기 8의 ACT는 24GB에서 편안하게 작동합니다. 사람들이 속도를 위해 배치 크기를 늘리거나, lerobot 녹화 예시에서 보여주는 1920x1080 프레임을 공급하면 더 이상 작동하지 않습니다. 1080p에서 두 개의 ResNet-18 백본은 매우 다른 메모리 프로필을 가집니다. 더 큰 카드를 대여하기 전에 --batch_size를 4로 낮추십시오. 훈련 중 메모리 부족을 참조하십시오.

기간: 논문에서는 11GB RTX 2080 Ti에서 약 5시간, lerobot의 ACT 페이지에서는 10만 스텝당 몇 시간, AY-Robots 24GB 티어에서는 2~5시간이 소요됩니다. 시간을 단축하지 마십시오. 참조 저장소의 README에 따르면, 불안정하거나 멈추는 정책은 일반적으로 더 많은 학습, 왜냐하면 손실이 안정화된 후에도 성공률과 부드러움은 계속 향상되기 때문입니다. 실제 데이터의 경우 최소 5000 에포크, 또는 안정화된 후에도 3~4배 더 긴 학습 기간이 필요합니다.

bash
lerobot-train \
  --config_path=outputs/train/act_so100_cube/checkpoints/last/pretrained_model/train_config.json \
  --resume=true
중단된 실행을 마지막 체크포인트에서 재개합니다.

학습된 정책을 로봇 팔에서 실행하기

배포는 lerobot-rollout을 사용합니다. 카메라 키는 기록된 것과 일치해야 합니다. frontwrist에서 학습된 정책은 cam0cam1을 허용하지 않으며, rename_map은 사전 학습된 체크포인트가 필요하므로 도움이 되지 않습니다. 작업 문자열은 생략할 수 있습니다. lerobot 자체 예제에서는 ACT에 대해 건너뛸 수 있다고 표시합니다.

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
기록 없이 자율 롤아웃을 수행합니다. 평가 에피소드를 기록하려면 --strategy.type=sentry를 사용하세요.
이 명령은 최근에 이름이 변경되어 이전 튜토리얼과 내용이 다를 수 있습니다.

평가는 이전에는 lerobot-record --policy.path=...를 통해 실행되었습니다. 0.6.x 버전에서는 --strategy.type 선택자를 사용하는 lerobot-rollout입니다: base, sentry (자동 업로드와 함께 기록), highlight (키 입력으로 저장되는 링 버퍼), dagger (사람이 개입하는 루프), 그리고 episodic. 2026년 8월 23일 현재 ACT 문서 페이지에는 lerobot-rollout를 실행하는 블록 바로 위에 여전히 "lerobot-record 명령 사용"이라고 명시되어 있습니다. 문장이 아닌 명령을 따르십시오.

최종 모델 대신 체크포인트를 고정하려면 다음을 추가하세요: --policy.pretrained_revision. 이를 위해서는 실행이 다음으로 시작되어야 합니다: --save_checkpoint_to_hub=true, 기본적으로 비활성화되어 있습니다. 이 옵션이 없으면 lerobot은 최종 모델만 푸시하고 다른 것은 푸시하지 않습니다. 이 옵션을 사용하면 각 체크포인트는 0으로 채워진 스텝으로 태그가 지정되므로 --policy.pretrained_revision=060000은 60000 스텝 체크포인트를 복구합니다. 실제 로봇 팔에서 100000 스텝과 비교하는 것이 가장 저렴하게 수행할 수 있는 실험입니다.

동일한 체크포인트에 도달하는 두 가지 경로

위의 모든 내용은 수동 경로이며 작동합니다. 플랫폼 경로는 GPU나 Python 환경을 소유하지 않는 대신 제어권을 포기합니다.

  1. core_scripts, training, feetech, ffmpeg와 함께 lerobot 0.6.x를 설치합니다.
  2. 포트를 찾고, 모터 ID를 설정하고, 양쪽 팔을 보정하고, 50개의 에피소드를 기록합니다.
  3. 몇 개의 에피소드를 재생하여 데이터에 작업이 포함되어 있는지 확인합니다.
  4. 24GB GPU를 대여하거나 소유하고, CUDA 및 PyTorch를 일치시킨 다음, lerobot-train --policy.type=act를 실행합니다.
  5. 몇 시간 기다린 다음, 로봇 팔이 있는 기기에서 lerobot-rollout을 실행합니다.
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
이 경로가 제공하는 것

완전한 제어: configuration_act.py를 편집하고, 카메라를 추가하고, 트레이너를 포크합니다. 작업을 배포하기보다는 연구를 위해 플랫폼은 방해가 될 수 있습니다.

The AY-Robots training matrix with five policy rows and four robot arm columns, where every cell links to the specific training guide for that model and arm combination
The matrix on /train. The ACT row against the SO-100 column is this article's guide.

실제로 무엇이 잘못되는가

훈련 명령어 자체에는 거의 어려움이 없습니다. 문제는 그 주변의 것들에 있으며, 처음 시도할 때 문제가 발생하는 빈도에 따라 정렬됩니다.

증상일반적인 원인페이지
lerobot-find-port가 아무것도 표시하지 않음드라이버, 케이블 또는 노드 권한팔이 감지되지 않음
녹화 시 카메라 없음재부팅 시 인덱스 변경 또는 하나의 USB 컨트롤러에 두 대의 카메라카메라가 감지되지 않음
훈련이 데이터셋을 거부함ACT는 v3.0을 원하고, GR00T는 v2.1이 필요함데이터셋이 v3으로 거부됨
CUDA 메모리 부족배치 크기가 증가했거나 480p 대신 1080p 프레임훈련 중 메모리 부족
손실은 좋지만, 팔이 아무것도 하지 않음데이터에 작업이 없거나 카메라가 움직였음손실은 감소하지만 정책이 아무것도 하지 않음
불규칙한 움직임 또는 에피소드 중간의 일시 정지훈련 부족, 청크 경계 정지 또는 시간 초과된 추론 호출정책이 움직임 중간에 멈춤

두 가지 항목은 강조할 가치가 있습니다. ACT는 LeRobot v3.0에서 훈련되지만, GR00T의 로더는 이 버전에서 충돌하여 v2.1이 필요하므로, ACT를 훈련하는 데이터셋이 GR00T 실행을 실패하게 할 수 있습니다. 그리고 마지막 항목에는 두 가지 해결책이 있습니다. ACT 개발자들은 불규칙한 움직임에 대해 더 많은 훈련으로 해결한다고 답했지만, n_action_steps 100으로 설정하면 실제 정지는 청크 경계에서 발생하며, 30fps에서 3.3초마다 눈에 띄는 일시 정지가 나타납니다. 추가로 알아야 할 두 가지: 단일 관절이 작동하지 않는 경우는 대개 한 번도 기록되지 않은 서보 ID, 그리고 접근하지만 닫히지 않는 그리퍼는 데모에서 그리퍼 범위가 너무 작다는 것을 의미합니다. 전체 색인: 실패 모드 페이지.

실행 비용

티어모델실행 시간시간당 가격실행당 비용
RTX 4090 / 24 GBACT, SmolVLA2 to 5 hours0.30 to 0.60 USDabout 1 to 3 USD
A100 80 GB / H100GR00T N1.7, GR00T N1.5, Pi0.53 to 6 hours1.20 to 2.00 USDabout 4 to 12 USD

나중에 VLA를 원하더라도 ACT로 시작해야 하는 이유입니다. 실패한 ACT 실행은 커피 한 잔 값으로 몇 시간 내에 데이터셋에 해당 작업이 포함되어 있는지 알려줍니다. 실패한 GR00T 실행은 동일한 교훈을 얻는 데 4배의 비용이 듭니다. 다음으로 이동하는 것은 GR00T N1.7 또는 SmolVLA 이후에는 재구축이 아닌 형태 변경입니다. 배경: 비전-언어-액션 모델, SO-100 완전 가이드, 첫 번째 정책 훈련하기모방 학습. 로봇 팔이 없나요? 라이브 페이지에 접속하면 가입 없이 실제 SO-100을 조종할 수 있습니다.

SO-100에서 ACT 훈련하기

이 조합에 대한 가이드: 기본 설정, GPU 티어 및 실행 비용. 데이터셋을 선택하면 백엔드가 카드를 대여하고 체크포인트를 작성합니다.

훈련 가이드 열기
대신 미세 조정할 수 있는 사전 훈련된 ACT 모델이 있나요?

아니요. ACT는 기본 모델이 없습니다. 훈련 후에만 존재합니다. 이는 도구의 부족이 아니라 ACT의 본질입니다. 해당 논문은 작업별로 정책을 처음부터 훈련합니다. 공급업체 체크포인트를 사용하려면 GR00T N1.7 또는 Pi0.5를 사용하세요.

에피소드가 실제로 몇 개나 필요한가요?

50개: ALOHA가 작업당 기록한 수(가장 어려운 Thread Velcro의 경우 100개)이자 AY-Robots의 최소값입니다. lerobot은 객체 위치당 약 10개를 권장하며, 카메라는 고정되고 그립은 일관되어야 합니다. 카메라가 움직인 100개의 에피소드보다 50개의 깨끗한 에피소드가 더 좋습니다.

chunk_size를 100에서 변경해야 하나요?

보통은 아닙니다. 어블레이션은 k = 1에서 1%에서 k = 100에서 44%로 증가한 후 감소하므로 100이 상단에 가깝습니다. 로봇 팔이 너무 오래 커밋하는 경우, 대신 n_action_steps를 낮추세요. 30 fps에서 0.8초마다 25번 재질의합니다.

훈련 실행은 얼마나 걸리며, 일찍 중단할 수 있나요?

100000 steps에 대해 24 GB 카드에서 2~5시간이 소요됩니다. 체크포인트는 20000 steps마다 저장되며 --resume=true는 중단된 실행을 다시 시작하므로 일찍 중단해도 안전합니다. 다만 첫 번째 평탄한 구간에서는 중단하지 마세요. 손실이 안정화된 후 부드러움이 향상됩니다.

손실은 줄었지만 로봇 팔이 여전히 실패합니다. 어떻게 해야 하나요?

거의 항상 데이터셋 문제입니다. 로봇 팔에서 기록된 에피소드를 재생해 보세요. 재생이 작업을 수행하지 못하면 데이터에 해당 작업이 포함되어 있지 않은 것입니다. 그런 다음 움직인 것이 있는지, 특히 카메라가 움직였는지 확인하세요. ACT는 사전 지식이 없으므로 episode 21에서 약간의 움직임도 영구적입니다.

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started