로봇 에 대한 VLA 모델 을 어떻게 정비 할 수 있습니까?
이동통신 데이터 세트에서 OpenVLA 또는 pi0를 정렬하는 단계별 가이드
이동통신 데이터 세트에서 OpenVLA 또는 pi0를 정렬하는 단계별 가이드
진행된
1. 전제 조건 2. 3. 설치 4. 구성 5. 열 6. 모니터링 7. 평가 8. 양자 9. 배치 10. 반복
전제 조건
- RLDS 형식에서 300+ 고품질 에피소드를 가진 텔레오퍼레이션 데이터 세트 ([데이터 수집 교과서를 참조](
T10 )) - 24 GB+ VRAM (LoRA에 대한 RTX 4090, 완전한 정렬을 위해 A100/H100)
- 파이썬 3.10+ CUDA 12.1+
- 파이토치 및 HuggingFace 트랜스포머에 대한 친숙함
- 웨이츠 & 바이아스 계좌 (목목사, 무료 계층 작업)
- 로봇 기기에 설치된 ROS2 ([설정 안내서를 참조](
T11 ))
당신이 건설할 것은
미리 훈련된 VLA 모델을 (OpenVLA-7B) 취하고, 로봇의 시범 데이터에 미세하게 조정하고, 임시 실험으로 평가하고, 실시간 추론을 위해 양자화하고, 로봇에 ROS2 액션 서버로 배포합니다. 첫 번째 실행에서 분산 작업에서 60~80%의 성공률을 기대하며, 반복적인 데이터 수집으로 개선됩니다.
VLA 미세 조율 파이프라인
RLDS 데이터 세트 300개 이상의 에피소드
→
OpenVLA / pi0 미리 훈련된 7B
→
미세한 음향 로라 또는 풀
→
평가 발급 테스트
→
배포 ROS2 + INT4
1
전제 조건 및 GPU 설정 확인
시작하기 전에 GPU, CUDA 버전, 그리고 사용 가능한 VRAM를 확인하세요. 정렬을 하기 위해서는 방법에 따라 특정 하드웨어가 필요합니다.
| Method | Min VRAM | GPU | Cost Estimate |
|---|---|---|---|
| LoRA fine-tune | 24 GB | RTX 4090, A5000 | $50–150 |
| Full fine-tune | 40 GB | A100 40GB | $150–300 |
| Full fine-tune (multi-GPU) | 2x 40 GB | 2x A100 | $250–400 |
복사# CUDA 및 GPU nvidia-smi python3 -c 확인 "이입 타르치; 인쇄(f'CUDA: {torch.cuda.is_available() }, 장치: {torch.cuda.get_device_name(0) }, VRAM: {torch.cuda.get_device_properties(0).total_mem / 1e9:.1f}GB') " # CUDA 버전을 확인 (제도 12.1+) nvcc --version
** 예산 팁:** 클라우드 GPU 임대용에 [Vast.ai] (
2
OpenVLA 의존성을 설치
OpenVLA를 복제하고 필요한 모든 패키지를 설치해 주세요.
복사# 가상 환경을 생성 python3 -m venv ~/vla_env 소스 ~/vla_env/bin/activate # 클론 OpenVLA git clone
3
데이터 세트를 준비 하십시오
OpenVLA는 특정 형식으로 데이터를 기대합니다. RLDS 데이터 세트 또는 LeRobot 데이터 세트를 OpenVLA 훈련 형식으로 변환합니다.
Copy# RLDS 데이터 세트를 OpenVLA 형식으로 변환합니다 python3 스크립트/convert_rlds_to_openvla.py \ --input-dir=/datasets/openarm_pick_place_rlds \ --output-dir=/datasets/openarm_openvla \ --image-key="observation/image" \ --state-key="observation/state" \ --action-key="action" \ --language-key="language_instruction" \ \"meta\"#\"를 확인합니다 변환된 데이터 세트를 확인합니다 json, osson = json.open.py.odes.exp.exp.dimen/action/arm_open_data_((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
** 데이터 형식 확인:** OpenVLA는 이미지들을 224x224 RGB (내용으로 크기를 변경) 으로, 7D 연속 벡터 (6 DOF + 지착) 으로, 에피소드별 텍스트 언어 명령으로 예상한다. 훈련 전에 이러한 आयाम들을 확인하라
4
훈련 을 구성 하십시오
훈련 구성 YAML를 생성합니다. 이 하이퍼파레머들은 전형적인 단일 작업 미세조정 실행에 맞춰집니다.
복사# 설정된 설정/finetune_openarm.yaml cat > 설정/finetune_openarm.yaml << 'EOF' # OpenVLA 정규 조정 설정
** 하이퍼파라미터 가이드:** 학습 속도 2e-5는 LoRA에 대한 안전한 기본입니다. 완전한 미세조를 위해 1e-5를 사용하십시오. 500 단계 후에 훈련 손실이 감소하지 않으면 5e-5를 시도하십시오. gradient 축적 4의 배트 크기는 32의 효과적인 배트 크기를 제공합니다. 이는 300
5
정렬 을 시작 하십시오
훈련 실행을 시작하십시오. 단일 GPU에 대해
Copy# 단일 GPU (RTX 4090 / A100) python3 스크립트/finetune.py \ --config=configs/finetune_openarm.yaml \ --output-dir=runs/openarm-pick-place-v1 \ # Multi-GPU (2x A100) 토치런 -nproc-per-node=2 스크립트/finetune.py \ config=configs/finetune_openarm.yaml \ --output-dir=runs/openarm-pick-place-v1 \ # 예상 출력: # 10/5000
교육 시간 추정:
| Setup | Steps/sec | Time for 5K steps | GPU Cost |
|---|---|---|---|
| RTX 4090 (LoRA) | ~0.8 | ~1.7 hours | $5–10 |
| A100 40GB (LoRA) | ~1.5 | ~55 min | $2–4 |
| A100 80GB (Full) | ~0.6 | ~2.3 hours | $5–8 |
| 2x A100 (Full) | ~1.0 | ~1.4 hours | $6–10 |
6
훈련 을 감시 하는 것
웨이트&비아이스에서 손실 곡선 및 기하급수 규범을 관찰하십시오.
- ** 손실은 첫 번째 1,000~2,000 단계에 걸쳐 꾸준히 감소해야 합니다**
- 등급 표준은 0.1에서 10.0 사이에 유지되어야 합니다.
- ** 체크포인트**는 500단계마다 저장됩니다
복사# 브라우저에서 wandb 대시보드를 열거나 훈련 로그를 직접 확인하세요 꼬리 -f 실행/openarm-pick-place-v1/training.log # 저장된 체크포인트 목록 ls -la 실행/openarm-pick-place-v1/ 체크포인트/
1.0 이상의 손실 평판이 있는 경우: 데이터 세트의 품질 문제가 있을 수 있습니다. 잘못된 에피소드, 모순적인 행동 스케일 또는 손상된 이미지를 확인하세요. 학습 속도를 5e-5로 증가시키거나 배치를 4으로 줄이는 것을 시도하십시오.
7
체크포인트 를 평가
로보트에 (또는 시뮬레이션에서) 로롤러웃 평가를 실행하여 정비된 모델의 성공률을 측정합니다.
Copy# 최고의 체크포인트 (최저의 밸 손실) Python3 스크립트/evaluate.py \ --checkpoint=runs/openarm-pick-place-v1/checkpoints/step-4500 \ --robot-type=openarm \ --robot-port=/dev/ttyUSB0 \ --num-rollouts=20 \ --task=" 빨간 블록을 들고 녹색 목표 구역에 배치하십시오" # 예상 출력: # Rollout 1/20: SUCCESS (14.2s) # Rollout 2/20: SUCCESS (12.8s) # Rollout 3/20: FAILURE
** 성공률 기준:** 첫 번째 정렬 실행에서 60~80%는 강력한 결과입니다. 50% 이하는 데이터 품질 문제 또는 너무 적은 에피소드를 나타냅니다. 80% 이상은 반복적인 개선으로 모델이 배포에 준비가되어 있음을 의미합니다.
8
배포에 대한 양자
전밀 VLA 모델은 2
Copy# bitandbytes python3 스크립트/quantize.py \ --checkpoint=run/openarm-pick-place-v1/checkpoint/step-4500 \ --quantization=int4 \ --output-dir=runs/openarm-pick-place-v1/quantized # 벤치마크 추론 속도 python3 스크립트/benchmark_inference.py \ --checkpoint=run/openarm-pick-place-v1/quantized \ --num-steps=100 \ # 예상 출력: # 모델 크기가: 4.2 GB (약 14.8 GB) # 인퍼렌스 속도: 18.3 Hz (±1.2 Hz) # 지연시간: 54.6 ms 한 단계
| 정밀도 | Model Size | Inference Hz | Min GPU |
|---|---|---|---|
| FP16 (baseline) | 14.8 GB | 3–5 Hz | 24 GB VRAM |
| INT8 | 7.4 GB | 8–15 Hz | 12 GB VRAM |
| INT4 | 4.2 GB | 15–25 Hz | 8 GB VRAM |
9
ROS2를 통해 로봇에 배치
양자화된 VLA 모델을 실행하고 10
Copy# VLA 추론 노드 cd ~/ros2_ws/src ros2 pkg를 생성하여 ROS2 패키지를 생성합니다. -build-type ament_python vla_inference \ --dependencies rclpy sensor_msgs std_msgs # 추론 노드 (이하의 단순화된 버전) 를 복사합니다. cat > ~/ros2_ws/srcvla_inference/vla_inference/vla_inference\self_node.py.py.py.py.py.py.py.py.py.py.py.py.py.py.py.py.py.py.py.py.py.py.py.py.py.py.py.py.py.py.py.py.py.py.py.py.py.py.py.py.py.py.py.py.py.py.py.py.py.py.py.py.py.py.py.py.py.py.py.py.py.py.py.py.py
복사# 추론 노드 cd를 만들고 실행합니다 ~/ros2_ws 기둥을 구성합니다 --packages-select vla_inference source install/setup.bash # 런치 로봇 + 카메라 + VLA 추론 ros2를 시작하여 openarm _bringup openarm.launch.py & ros2를 실행합니다 vla_inference 추론_node
10
반복: 더 많은 데이터를 수집하고, 재훈련
첫 번째 모델은 실패 모드를 갖습니다. 개선하는 가장 효과적인 방법은 실패 사례에 대한 표적된 시범을 수집하고 재훈련하는 것입니다.
복사# 1. 평가 롤러에서 오류 모드를 식별합니다. 일반적인 오류: 가장자리 위치에서 있는 객체, 비정상적인 방향, 조명 변경, 모델이 보지 못한 객체. 실패 사례에 대한 50-100개의 목표된 시범을 수집합니다. 로봇 기록 \ --robot-type=openarm \ --task="pick_red_block_edge_positions" \ --num-episodes=50 \ --output-dir=~/datasets/openarm_pick_place_v2 # 3. 원래 데이터 세트 python3 스크립트/merge_datasets.py \ --datasets ~/datasets/openarm_pick_place ~/datasets/openarm_pick_place_v2 \ --output /datasets/openarm_pick_place_merged # 4. 파이썬3 스크립트/피네툰.py \ --config=configs/피네툰_openarm.yaml \ --resume-from=runs/openarm-pick-place-v1/checkpoints/step-4500 \ --output-dir=runs/openarm-pick-place-v2 \ --data.dataset_path=/datasets/openarm_pick_place_merged
반복 루프
DAgger (데이터셋 집합) 루프는 각 주기마다 정책 성능을 향상시키는 것으로 입증되었습니다. 배포 → 실패를 식별 → 목표형 데모를 수집 → 재훈련 → 평가. 대부분의 팀은 반복 당 5
문제 해결
훈련 중 CUDA 기억에서 벗어난 (OOM)
훈련 손실은 NAN입니다
일반적으로 학습률이 너무 높거나 데이터를 손상시키는 것을 의미합니다. 학습률을 1e-5로 줄이십시오. 데이터 세트에서 NaN 값을
모델은 일정/동일한 동작을 생성합니다
모델은 평균 동작을 예측하기 위해 붕괴되었을 수 있습니다. 당신의 행동 공간이 정상화되었는지 확인하세요 (허로 평균, 단위 변동). 작업 설명이 데이터 수집 과정에서 사용된 것과 일치하는지 확인하십시오. 훈련 단계 또는 학습 속도를 높이기 위해 노력하십시오.
인퍼런스는 실시간 제어에 너무 느려
INT4 양자화를 적용 (단계 8) 을 사용 하여 20
양자 모델은 훨씬 낮은 성공률을 가지고 있습니다
품질 손실이 예상된다 (1
관련 교과서
[
로봇 훈련 데이터를 수집
전제
[
레로봇 스타트
VLA 모델을 해결하기 전에 보다 단순화된 정책을 (ACT, 방산 정책) 훈련하십시오.
[
ROS2 설정 안내서
로봇 배포 및 추론 노드 개발을 위해 ROS2를 설정하십시오.
[
자주 묻는 질문
VLA 모델을 정비하는 데 얼마나 들리죠?
일반적인 정렬 실행은 Lambda Labs 또는 Vast.ai와 같은 클라우드 제공업체에서 GPU 계산에 150
OpenVLA와 pi0의 차이점은 무엇입니까?
OpenVLA는 스탠퍼드에서 오픈소스 7B 매개 변수 비전 언어 행동 모델로 카메라 이미지 및 언어 지침을 입력 및 로봇 동작으로 내보내게 됩니다. pi0 (물리 지능에서) 는 유능한 조작에 탁월한 흐름 일치 기반 VLA입니다. OpenVLA는 더 쉽게 정렬 할 수 있습니다. pi0는 종종 복잡한 작업에서 더 높은 성공률을 달성합니다.
VLA를 정비하기 위해 몇 개의 시범 에피소드가 필요할까요?
단일 작업에 있어서 300500개의 고품질의 시범이 좋은 출발점이다. 더 복잡한 작업이나 다중 작업 정렬은 8001,200+개의 에피소드가 필요할 수 있다. 양보다 더 중요한 것은 품질이다. 300개의 깨끗한 시범은 1,000개의 노이즈한 시범보다 더 좋은 성능을 발휘한다.
소비자의 GPU에 VLA 모델을 정렬할 수 있나요?
로라 (Low-Rank Adaptation) 를 사용하면 RTX 4090 (24 GB VRAM) 또는 RTX 3090에 OpenVLA를 정렬할 수 있습니다. 완전한 정렬은 40
정비된 VLA 모델에서 어떤 성공률을 기대해야 할까요?
분포 작업 (분포 데이터와 같은 객체, 훈련 데이터와 유사한 위치) 에 대해, 첫 번째 정렬 실행에서 6080%의 성공률을 기대하십시오. 반복적인 데이터 수집 및 재교육 (DAgger 스타일) 으로, 당신은 8595%로 이치를 밀어낼 수 있습니다. 분포 외부 일반화는 크게 다릅니다.
이 설명서가 도움이 되었나요?
👍 네
로봇 기술 에서 앞장서
로봇 배포, 데이터 수집, 물리 AI에 대한 최신 정보를 수신 상자에 전달하십시오.







