OpenVLA: An Open-Source Vision-Language-Action Model

OpenVLA: An Open-Source Vision-Language-Action Model
notion image
  • Task
    • 이미지 + 자연어 instruction을 받아서 로봇 제어 action을 직접 예측하는 VLA(Vision-Language-Action Model)
    • 예: "Put eggplant in bowl" → 로봇의 다음 상대 이동/회전/그리퍼 action 출력
  • 이 논문이 하려는 것
    • 기존 VLM/LLM의 semantic generalization을 로봇 제어에 가져오기
    • closed-source 위주였던 VLA를 오픈소스화
    • 새 로봇/새 환경에 효율적으로 fine-tuning하는 방법까지 제시

왜 필요한가

  • 기존 imitation learning policy의 약점
    • 학습한 환경/물체/배치 밖으로 잘 못 나감
    • distractor가 있으면 흔들림
    • 새로운 instruction/generalization이 약함
  • 저자들의 아이디어
    • 인터넷 규모 데이터로 학습된 vision/language foundation model은
      • 새로운 object
      • 새로운 scene
      • 새로운 instruction
        • 에 대한 일반화 능력이 어느 정도 있음
    • 그러면 이걸 로봇 제어에 직접 쓰면 더 robust한 generalist policy가 될 수 있음
  • VLM을 로봇 action predictor로 fine-tune해서, 텍스트 대신 action token을 생성하게 만든 모델

모델 구조

notion image
  • 입력
    • 현재 이미지 1장
    • 자연어 instruction
  • 출력
    • 7차원 robot action
    • 예: Δx, Δθ, ΔGrip 같은 상대 제어량
  • 전체 구조
    • Vision Encoder
      • SigLIP + DINOv2 feature를 같이 사용
    • Projector
      • vision feature를 language embedding space로 보냄
    • LLM Backbone
      • Llama 2 7B
    • Action De-tokenizer
      • 예측된 action token을 다시 연속 제어량으로 해석

Prismatic?

  • OpenVLA가 베이스로 쓰는 VLM(backbone) 이름
  • OpenVLA는 Prismatic-7B VLM 위에 로봇 action prediction을 얹은 구조
  • Prismatic 자체는
    • SigLIP + DINOv2 visual encoder
    • 2-layer MLP projector
    • Llama 2 7B language model
      • 로 구성된 visually-conditioned language model

DINOv2?

  • DINOv2는 ViT 기반 self-supervised vision foundation model
  • 큰 규모의 curated image data에서 라벨 없이 범용 visual feature를 학습하도록 설계되었고, 큰 teacher 모델을 학습한 뒤 더 작은 모델로 distill한 버전들도 제공한다.
  • 왜 이런 특성이 나오나
    • teacher-student self-distillation 계열이라
    • 같은 이미지의 다른 view/crop에서도 일관된 representation을 학습하도록 유도함
    • 그래서 단순 class label 분류기보다 구조적/spatial feature가 잘 살아나는 편으로 해석
  • OpenVLA에서의 역할
    • semantic alignment용 SigLIP만 쓰지 않고
    • spatial reasoning 보강용 DINOv2를 같이 씀
    • 로봇은 “이게 가지다”뿐 아니라 “어디 있고 어떤 방향이고 어떻게 집어야 하는가”가 중요하기 때문

왜 SigLIP만 안 쓰고 DINOv2까지 붙이냐

  • SigLIP 쪽이 잘하는 것
    • 텍스트와 이미지의 semantic alignment
    • “이 물체가 어떤 개념과 연결되는가”
  • DINOv2 쪽이 보강하는 것
    • spatial / structural detail
    • 위치, 형태, 배치, orientation 쪽 해석 보강
  • 논문 해석
    • fused SigLIP-DINOv2 encoder가 spatial reasoning을 개선했고
    • 그게 language grounding과 조작 성능 향상에 도움 됐다고 본다.

action을 어떻게 LLM 출력으로 바꾸나

  • 원래 robot action은 연속값
    • 예: Δx = 0.013, Δy = -0.021 같은 실수 벡터
  • 그런데 LLM은 본질적으로 토큰 예측기
    • 그래서 연속 action을 바로 회귀하지 않고
    • 각 action 차원을 따로 256개 bin으로 discretize한다.
  • 의미
    • action 전체를 1차원 숫자로 만드는 게 아님
    • 예를 들어 7차원 action이면
      • Δx용 256 bin
      • Δy용 256 bin
      • ...
      • grip용 256 bin
        • 식으로 각 차원별로 따로 이산화
  • 예시
    • Δx가 자주 나오는 범위가 -0.1 ~ 0.1이라면
    • 그 구간을 256칸으로 자르고
    • 현재 값이 어느 칸에 속하는지를 token ID로 바꿈
    • 예: Δx token = 145, Δy token = 32, ... 같은 식

quantile로 잘랐다?

  • 논문은 min-max 전체 구간을 쓰지 않고
  • 훈련 데이터에서의 1st~99th quantile 사이를 균등분할한다.
    • bin 경계는 학습 데이터의 action 분포를 보고 정함
    • 아주 드문 이상치(outlier)에 끌려가서 bin 해상도가 망가지는 걸 막으려는 것
  • 직관
    • 대부분 값이 -1~1인데 이상치 몇 개가 100 근처에 있으면
    • min-max로 자르면 의미 없는 큰 구간이 생김
    • quantile로 자르면 실제로 자주 나오는 범위에 해상도를 집중할 수 있음

inference는 어떻게 하냐

  • 현재 이미지 + instruction을 넣고
  • 다음 action 한 스텝을 예측
  • 그 action을 적용한 뒤
  • 다음 시점 이미지로 다시 예측
  • closed-loop feedback control 방식
  • 중요한 점
    • 논문은 현재 모델 한계로 single-image observation only를 직접 언급함
    • 즉 observation history, multi-view, proprioception history를 본격 지원하지 않음
  • 따라서
    • 직전 step의 결과는 현재 이미지에 간접 반영되지만
    • 모델이 시계열 히스토리를 길게 직접 입력받는 구조는 아님

제어 주파수와 action의 관계

  • 논문에 나온 setup
    • 어떤 환경은 5Hz non-blocking controller
    • 어떤 환경은 15Hz non-blocking controller
  • 의미
    • 5Hz면 약 200ms마다 action을 새로 내는 셈
    • 15Hz면 약 67ms마다 새 action을 냄
  • 그래서 action vector는 사실상
    • 그 제어 주기 동안 적용될 상대 제어 명령처럼 해석됨
    • 주파수가 바뀌면 같은 action이라도 실제 움직임이 달라질 수 있음
  • 논문에서 왜 중요했나
    • int8 quantization은 추론이 느려져서 control frequency가 무너졌고
    • 그 결과 실제 rollout 성능이 크게 떨어졌다고 해석함

backbone 비교: 왜 Prismatic이 제일 나았나

  • 저자들이 비교한 backbone
    • IDEFICS-1
    • LLaVA
    • Prismatic
  • 결과
    • 단일 객체 task에서는 큰 차이가 덜했음
    • 여러 객체가 있고 instruction으로 target을 골라야 하는 language grounding task에서 차이가 큼
    • LLaVA가 IDEFICS-1보다 좋았고
    • Prismatic이 LLaVA보다도 더 좋았음
  • 논문이 제시한 수치
    • LLaVA는 IDEFICS-1 대비 5개 grounding task 평균에서 절대 성공률 35%p 개선
    • Prismatic은 LLaVA보다 대략 10%p 추가 개선
  • 저자 해석
    • fused SigLIP + DINOv2 덕분에 spatial reasoning이 좋아졌기 때문

vision encoder를 freeze하면 왜 안 좋았나

  • VLM 쪽에선 vision encoder freeze가 종종 괜찮지만
  • OpenVLA에서는 vision encoder fine-tune이 중요했다고 한다.
  • 저자 해석
    • 인터넷 사전학습 feature만으로는
      • grasp point
      • orientation
      • 세밀한 위치 관계
        • 같은 로봇 제어용 fine-grained spatial detail이 부족할 수 있음
    • 그래서 로봇 데이터에 맞게 visual feature도 같이 적응시켜야 함
  • parameter-efficient fine-tuning 결과도 같은 방향
    • last layer only: 성능 낮음
    • frozen vision: 성능 낮음
    • sandwich FT: 중간
    • LoRA: full FT에 가까운 성능으로 가장 좋은 trade-off

학습 데이터

  • 기본 데이터
    • Open X-Embodiment(OpenX)
    • 다양한 로봇 embodiment와 task를 포함한 대규모 실세계 로봇 데이터셋
  • OpenVLA 최종 학습량
    • 970k real-world robot demonstrations
  • 데이터 정제 방식
    • manipulation dataset만 사용
    • 3rd-person camera가 있는 데이터로 제한
    • single-arm end-effector control로 정렬
    • embodiment/task/scene diversity를 맞추도록 mixture weight 조정

학습 recipe

  • VLM backbone
    • Prismatic-7B 위에서 robot action prediction으로 fine-tune
  • action objective
    • next-token prediction
    • loss는 action token 위치에 대해서만 cross-entropy 계산
  • 중요한 실험적 선택
    • 입력 해상도 224×224 선택
      • 384×384보다 성능 차이는 없고 학습 시간은 3배 더 들었음
    • vision encoder는 freeze하지 말고 같이 fine-tune
    • lr = 2e-5가 가장 좋았고 warmup 이득은 크지 않았음
    • 27 epoch까지 돌렸음

연산량 / 시스템

  • pretraining
    • 64개의 A100 GPU
    • 14일
    • 총 21,500 A100-hours
  • inference
    • bf16 기준 약 15GB VRAM
    • RTX 4090에서 약 6Hz
  • 실시간성
    • 5Hz 수준 task는 어느 정도 가능
    • 15Hz 이상, 특히 50Hz급 dexterous control에는 아직 부족
    • 논문도 throughput을 한계로 직접 인정함
  • 어디서 돌리나
    • 로컬 GPU에서도 가능
    • 원격 VLA inference server도 제공해서 서버에서 추론 후 action stream을 보내는 방식도 지원

실험 1: out-of-the-box generalist policy 성능

  • 평가 플랫폼
    • WidowX / BridgeData V2
    • Google robot
  • 비교 대상
    • RT-1-X
    • Octo
    • RT-2-X
    • OpenVLA
  • 보는 축
    • visual generalization
    • motion generalization
    • physical generalization
    • semantic generalization
    • language grounding
  • 결과 요약
    • BridgeData에서는 전체적으로 최고 성능
    • Google robot에서는 RT-2-X와 비슷하거나 경쟁적
    • 특히 7B인데 55B RT-2-X와 맞붙는 점이 강함
  • 단, semantic generalization은 RT-2-X가 더 좋음
    • 논문 해석:
      • RT-2-X는 Internet 데이터와 robot 데이터를 같이 co-fine-tune해 웹 지식을 더 잘 보존
      • OpenVLA는 robot data fine-tune 중심이라 semantic generalization은 상대적으로 약할 수 있음

실험 2: 새 로봇/새 환경에 적은 데이터로 적응되나

  • setup
    • Franka-Tabletop
    • Franka-DROID
    • task당 10~150 demonstration으로 fine-tuning
  • 비교 대상
    • Diffusion Policy
    • Diffusion Policy (matched)
    • Octo fine-tune
    • OpenVLA fine-tune
    • OpenVLA (scratch)
  • 결과
    • 좁고 단일 instruction인 task에서는 Diffusion Policy가 강함
    • 여러 instruction / 여러 물체 / distractor가 있는 task에서는 OpenVLA가 더 강함
    • 전체 평균은 OpenVLA가 최고
  • 해석
    • generalist pretraining + language grounding prior가 다양한 downstream task에서 이점
    • 하지만 아주 정밀한 trajectory smoothness는 Diffusion Policy가 여전히 강함

Diffusion Policy가 뭐냐

  • 로봇 action을 diffusion model로 생성하는 imitation learning 계열 정책
  • 단순 next-action regression보다
    • trajectory chunk
    • multi-modal action distribution
    • smooth trajectory
      • 를 더 잘 다루는 장점이 있다.
  • 이 논문 각주 기준으로 Diffusion Policy는
    • observation history 사용
    • proprioception 사용 가능
    • 미래 T step action chunk를 예측하고
    • 그중 일부를 open-loop로 실행하는 방식
  • OpenVLA와의 차이
    • Diffusion Policy: trajectory denoising/chunking에 강함
    • OpenVLA: autoregressive action token prediction에 가까움

실험 3: parameter-efficient fine-tuning

  • full fine-tuning
    • 강하지만 비용 큼
  • last layer only
    • 성능 낮음
  • frozen vision
    • 성능 낮음
  • sandwich fine-tuning
    • 일부만 풀어서 학습, 중간 정도
  • LoRA
    • 가장 좋은 성능-메모리 trade-off
  • 논문 Table 1 핵심
    • full FT: 69.7%
    • LoRA rank 32: 68.2%
    • LoRA rank 64: 68.2%
    • trainable parameter는 full FT 대비 크게 줄고 성능은 거의 유지
  • 의미
    • OpenVLA를 새 task에 현실적으로 적응시킬 때
    • LoRA가 제일 실전적이라는 메시지

LoRA 할 때 Llama 자체는 안 건드리냐

  • 일반 LoRA 원리
    • pretrained weight는 freeze
    • 각 linear layer에 저랭크 update를 추가해 학습
    • 즉 “원본 weight를 직접 업데이트하는 것”은 아님 (arXiv)
  • 하지만
    • LoRA가 Llama의 linear layer에 붙으면
    • Llama의 동작은 바뀐다
    • 다만 base weight를 덮어쓰는 게 아니라 adapter를 통해 보정하는 방식 (arXiv)
  • OpenVLA 논문 표현
    • LoRA를 all linear layers of the model에 적용했다고 적음
    • 따라서 Llama 쪽도 적응 대상일 가능성이 높음

quantization

  • 목적
    • inference memory 줄이기
    • 더 작은 GPU에서도 돌리기
  • 결과
    • bf16: 71.3%, 16.8GB
    • int8: 58.1%, 10.2GB
    • int4: 71.9%, 7.0GB
  • 핵심 포인트
    • int8보다 int4가 더 좋게 나옴

왜 int8이 더 나쁠 수 있나

  • quantization은 저장 비트 수를 줄여도
  • 실제 추론 시
    • scale 적용
    • dequant/requant
    • 형변환
    • 특수 커널 호출
      • 같은 추가 비용이 들어갈 수 있음
  • 이게 quantization op overhead다.

왜 int4는 오히려 나을 수 있나

  • int4는 메모리 전송량 감소 이득이 더 큼
  • 그래서 quant overhead를 상쇄하고 throughput이 올라갈 수 있음
  • OpenVLA에서는 이 효과 때문에 int4가 bf16 수준 성능을 유지함

robotics에서는 왜 더 중요하냐

  • 그냥 offline token accuracy가 아니라
  • 실제 control loop frequency가 맞아야 함
  • int8은 너무 느려져서 5Hz 환경의 dynamics를 못 맞췄고
  • 그래서 rollout success가 크게 떨어졌다고 논문은 본다.
Share article