LeRobot documentation

ACT(트랜스포머를 활용한 액션 청킹)

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

ACT(트랜스포머를 활용한 액션 청킹)

ACT는 경량화되고 효율적인 모방 학습 정책으로, 특히 세밀한 조작 작업에 적합합니다. 학습 시간이 빠르고 계산 요구 사항이 낮으며 성능이 우수하여, LeRobot을 처음 시작할 때 가장 먼저 권장하는 모델입니다.

LeRobot 팀의 이 튜토리얼을 시청하여 ACT가 어떻게 작동하는지 배워보세요: LeRobot ACT Tutorial

모델 개요

Action Chunking with Transformers (ACT)는 Zhao et al.의 논문 Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware에서 소개되었습니다. 이 정책은 저렴한 하드웨어와 최소한의 데모 데이터만으로도 정밀하고 접촉이 많은 조작 작업을 수행할 수 있도록 설계되었습니다.

초보자에게 ACT가 좋은 이유

ACT는 다음과 같은 여러 가지 이유로 훌륭한 시작점으로 두각을 나타냅니다:

  • 빠른 학습: 단일 GPU에서 몇 시간 만에 학습
  • 경량: 약 80M개의 파라미터만 있어 효율적이고 다루기 쉽습니다
  • 데이터 효율성: 데모 50개만으로도 높은 성공률을 달성하는 경우가 많습니다

아키텍처

ACT는 세 가지 주요 구성 요소를 갖춘 transformer 기반 아키텍처를 사용합니다:

  1. 비전 백본: ResNet-18이 여러 카메라 관점의 이미지를 처리
  2. Transformer Encoder: 카메라 특징, 관절 위치, 학습된 잠재 변수에서 정보를 종합
  3. Transformer Decoder: cross-attention을 사용하여 일관된 동작 시퀀스를 생성

정책은 다음을 입력으로 받습니다:

  • 여러 개의 RGB 이미지 (예: 손목 카메라, 전면/상단 카메라에서 가져온 것)
  • 현재 로봇 관절 위치
  • 잠재 스타일 변수 z(학습 중에 학습되며, 추론 중에 0으로 설정됨)

k개의 미래 동작 시퀀스 청크를 출력합니다.

설치 요구 사항

  1. LeRobot은 설치 가이드를 참고하여 설치하세요.
  2. ACT는 기본 LeRobot 설치에 포함되어 있어 추가적인 의존성이 필요하지 않습니다!

ACT 학습

ACT는 표준 LeRobot 학습 파이프라인과 완벽하게 호환됩니다. 데이터셋에서 ACT를 학습하는 완전한 예제는 다음과 같습니다:

lerobot-train \
  --dataset.repo_id=${HF_USER}/your_dataset \
  --policy.type=act \
  --output_dir=outputs/train/act_your_dataset \
  --job_name=act_your_dataset \
  --policy.device=cuda \
  --trackio.enable=true \
  --policy.repo_id=${HF_USER}/act_policy

학습 팁

  1. 기본값으로 시작: ACT의 기본 하이퍼파라미터는 대부분의 작업에서 잘 작동합니다
  2. 학습 시간: 단일 GPU에서 100k 학습 스텝을 수행하는 데 몇 시간이 걸릴 것으로 예상됩니다
  3. 배치 크기: 배치 크기 8로 시작하여 GPU 메모리에 따라 조정하세요

Google Colab을 사용하여 학습

로컬 컴퓨터에 고성능 GPU가 없다면 ACT 학습 노트북을 따라 Google Colab을 활용하여 모델을 학습할 수 있습니다.

ACT 평가

학습이 완료되면 lerobot-rollout를 사용하여 로봇에서 ACT 정책을 평가할 수 있습니다. 아래 명령어는 아무것도 기록하지 않고 정책을 60초 동안 실행합니다 (ACT의 경우 --task는 생략할 수 있습니다). 평가 에피소드를 기록하는 전략에 대해서는 정책 배포를 참고하세요.

lerobot-rollout \
  --strategy.type=base \
  --policy.path=${HF_USER}/act_policy \
  --robot.type=so101_follower \
  --robot.port=/dev/ttyACM0 \
  --robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}}" \
  --display_data=true \
  --task="Your task description" \
  --duration=60
Update on GitHub