inblog logo
|
kjyong

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

    바세린용자 (yongja)'s avatar
    바세린용자 (yongja)
    Apr 20, 2026
    OpenVLA: An Open-Source Vision-Language-Action Model
    Contents
    왜 필요한가모델 구조Prismatic?DINOv2?왜 SigLIP만 안 쓰고 DINOv2까지 붙이냐action을 어떻게 LLM 출력으로 바꾸나quantile로 잘랐다?inference는 어떻게 하냐제어 주파수와 action의 관계backbone 비교: 왜 Prismatic이 제일 나았나vision encoder를 freeze하면 왜 안 좋았나학습 데이터학습 recipe연산량 / 시스템실험 1: out-of-the-box generalist policy 성능실험 2: 새 로봇/새 환경에 적은 데이터로 적응되나Diffusion Policy가 뭐냐실험 3: parameter-efficient fine-tuningLoRA 할 때 Llama 자체는 안 건드리냐quantization
    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
    Contents
    왜 필요한가모델 구조Prismatic?DINOv2?왜 SigLIP만 안 쓰고 DINOv2까지 붙이냐action을 어떻게 LLM 출력으로 바꾸나quantile로 잘랐다?inference는 어떻게 하냐제어 주파수와 action의 관계backbone 비교: 왜 Prismatic이 제일 나았나vision encoder를 freeze하면 왜 안 좋았나학습 데이터학습 recipe연산량 / 시스템실험 1: out-of-the-box generalist policy 성능실험 2: 새 로봇/새 환경에 적은 데이터로 적응되나Diffusion Policy가 뭐냐실험 3: parameter-efficient fine-tuningLoRA 할 때 Llama 자체는 안 건드리냐quantization

    kjyong

    RSS·Powered by Inblog