Abstract

본 연구에서는 OpenVLA를 대표적인 기반 모델로 사용하여, 파인튜닝을 위한 서로 다른 행동 디코딩 방식, 행동 표현, 학습 목적함수와 같은 핵심 VLA 적응 설계 선택들을 연구한다.

실증적 분석은 Optimized Fine-Tuning(OFT) 레시피를 도출한다. 이 레시피는 병렬 디코딩, 행동 청킹(action chunking), 연속적인 행동 표현, 그리고 단순한 L1 회귀 기반 학습 목적함수를 통합하여, 전체적으로 추론 효율성, 정책 성능, 그리고 모델의 입력-출력 명세에 대한 유연성을 향상시킨다.

OpenVLA-OFT는 LIBERO 시뮬레이션 벤치마크에서 새로운 최신 성능(state of the art)을 달성하며, 네 개의 task suite 전반에서 OpenVLA의 평균 성공률을 76.5%에서 97.1%로 크게 향상시키는 동시에, 행동 생성 처리량을 26배 증가시킨다.

양팔 ALOHA 로봇에서 정교하고 높은 주파수의 제어 작업을 성공적으로 수행할 수 있게 한다.

 

 

INTRODUCTION - 

OpenVLA가 잘 연구 되었지만 자기회귀적 행동 생성은 고주파 제어, 즉 25–50Hz 이상에는 여전히 너무 느리며, 3–5Hz 수준이다. 또한 자기회귀적 VLA의 LoRA 및 전체 파인튜닝은 양팔 조작 작업에서 종종 만족스럽지 못한 성능을 보인다.

행동 토큰화 방식을 통해 효율성을 개선하여 [2, 38], 2배에서 13배의 속도 향상을 달성한다. 따라서 만족스러운 속도와 품질을 모두 달성하는 대안적 VLA 적응 접근법을 탐구하는 것은 아직 충분히 연구되지 않은 영역으로 남아 있다.

 

본 연구에서는 대표적인 자기회귀적 VLA인 OpenVLA를 기반 모델로 사용하여, VLA를 새로운 로봇과 작업에 적응시키기 위한 핵심 설계 결정을 연구한다.

 

첫째, 행동 청킹과 함께 사용하는 병렬 디코딩은 추론 효율성을 높일 뿐만 아니라, 다운스트림 작업에서 성공률도 향상시키며, 모델의 입력-출력 명세에서 더 큰 유연성을 가능하게 한다.

둘째, 연속적인 행동 표현은 이산 표현에 비해 모델 품질을 추가로 향상시킨다.

셋째, L1 회귀 목적함수로 VLA를 파인튜닝하는 것은 diffusion 기반 파인튜닝과 비교해 비슷한 성능을 내면서도, 더 빠른 학습 수렴과 추론 속도를 제공한다.

 

PRELIMINARIES - 

OPenVLA- 

저자는 OPenVLA 를 기반으로 한다. 그에 따라서 OPen-X embodiment 데이터 셋을 따른다고 하였다.

Action Chunking - 

이전 연구들은 행동 청킹(action chunking), 즉 중간에 다시 계획하지 않고 미래 행동들의 시퀀스를 예측하고 실행하는 방식이 많은 조작 작업에서 정책 성공률을 향상시킨다는 것을 보여주었다.

그러나 OpenVLA의 자기회귀적 생성 방식은 행동 청킹을 비현실적으로 만든다. NVIDIA A100 GPU에서 단일 timestep 행동 하나를 생성하는 데에도 0.33초가 걸리기 때문이다.

따라서 저자는 효율적인 행동 청킹을 가능하게 하는 병렬 생성 방식을 제시한다.

 

 

STUDYING KEY VLA FINE-TUNING DESIGN DECISIONS - 

 

VLA 파인튜닝 설계 결정 - 

 

VLA를 파인튜닝하는 기존 접근법들은 두 가지 핵심 한계에 직면한다. 첫째, 느린 추론 속도, 즉 3–5Hz 수준으로 고주파 제어에는 적합하지 않다. 둘째, 양팔 조작기에서 신뢰성 있는 작업 수행이 어렵다.

 

이를 해결하기 위해 저자는 세가지 핵심요소를 조사한다.

 

(a) 행동 생성 전략

순차적인 토큰별 처리가 필요한 자기회귀적 생성과, 모든 행동을 동시에 생성하고 효율적인 행동 청킹을 가능하게 하는 병렬 디코딩을 비교한다.

 

(b) 행동 표현 

softmax 기반 토큰 예측을 통해 처리되는 이산 행동, 즉 정규화된 행동을 256개 bin으로 이산화한 방식과, MLP action head에 의해 직접 생성되는 연속 행동을 검토한다.

(c) 학습 목적함수

저자는 이산 행동에 대한 next-token prediction, 연속 행동에 대한 L1 regression, 그리고 연속 행동에 대한 conditional denoising diffusion으로 파인튜닝된 정책들을 비교한다.

 

저자는 OpenVLA [를 기반 모델로 사용하여 연구를 수행하며, 상대적으로 작은 학습 데이터셋을 사용하기 때문에 LoRA 파인튜닝 을 통해 이를 적응시킨다. 여기서 데이터셋 규모는 사전학습의 100만 demonstration과 대비되는 500 demonstration이다.

 

즉 여기까지 저자들의 생각을 정리해보자면, 

1. OpenVLA는 느리다

왜냐면 OpenVLA는 7개의 action을 순차 생성 하기 때문에 (롤,피치,요.... 이런식으로 ) 굉장히 느리다. 그래서 저자들은 한번에 병렬 decoding을 통해 한번에 이 action token을 만들어내자는 것이다.

기존에는 causal attention mask 때문에 뒤쪽 token이 앞쪽 token을 볼 수 없었는데, 저자들은 이를 bidirectional attention으로 바꾼다. 그래서 action 자리들이 서로 정보를 공유하면서 한 번에 예측될 수 있다.

 

2.  Action chunking

보통 로봇 정책은 이렇게 작동한다.

현재 관측 o_t → 현재 action a_t 예측 → 실행
다음 관측 o_{t+1} → 다음 action a_{t+1} 예측 → 실행
...
 

그런데 action chunking은 이렇게 한다.

현재 관측 o_t → [a_t, a_{t+1}, ..., a_{t+K-1}] 한 번에 예측 → 순서대로 실행
 

즉 매 timestep마다 모델을 다시 부르지 않고, 미래 K개 action을 한꺼번에 만든다.

여기에는 두가지 장점이 있는데 , 

첫째, inference가 빨라진다. 왜냐하면 모델 호출 횟수가 줄어들기 때문이다.
둘째, action이 더 부드러워질 수 있다. 한 번에 연속된 행동을 예측하므로 시간적 일관성이 생긴다.

그런데 기존 OpenVLA의 autoregressive 방식에서는 action chunking이 너무 비싸다.

예를 들어 action dimension이 D=7D=7, chunk size가 K=8K=8이면, 기존 방식은 총 K×D=56K \times D = 56개의 action token을 순차적으로 생성해야 한다.

8 timestep × 7 action dimension = 56번 순차 생성
 

이건 너무 느리다.

반면 병렬 디코딩을 쓰면 56개 action 값을 한 번의 forward pass로 만들 수 있다.

그래서 이 논문에서 병렬 디코딩과 action chunking은 거의 세트이다.

 

3. 연속 행동

기존 지금까지 포스트 한 논문들을 토대로 보면 

Discrete action vs Continuous action

기존 OpenVLA는 action 값을 그대로 예측하지 않는다. 각 action dimension을 [−1,1][-1, 1] 범위로 정규화한 다음, 이를 256개 bin으로 나눈다.

예를 들어 어떤 action 값이 연속값으로는 0.137이라고 해보자.
그러면 이 값을 가장 가까운 bin 번호로 바꾼다.

0.137 → 146번 token
 

이렇게 하면 action 예측이 언어 모델의 next-token prediction과 비슷해진다.

다음 단어 token을 맞혀라
다음 action token을 맞혀라
 

장점은 VLM/LLM 구조를 거의 그대로 쓸 수 있다는 것.
단점은 정밀도가 떨어질 수 있다는 것.

 

이산화하면 원래 연속적인 action이 256개 칸 중 하나로 뭉개진다. 그래서 세밀한 조작에서 손해가 날 수 있다.

Continuous action

저자들은 action token을 예측하지 말고, 그냥 연속값을 직접 예측하자고 한다. 즉 언어 모델의 출력층을 그대로 쓰지 않고, 마지막 hidden state 뒤에 작은 MLP action head를 붙여서 실제 action 값을 바로 뽑는다.

예를 들면:

hidden state → [0.12, -0.03, 0.45, ...]
 

이렇게 실제 로봇 action 벡터를 직접 예측한다.

Learning objective

여기서 저자들은 세 가지 학습 목적함수를 비교한다.

1) Next-token prediction

기존 OpenVLA 방식이다.

이산 action token을 정답 token으로 두고, cross-entropy loss로 학습한다.

정답 action token = 146
모델이 146번 token 확률을 높이도록 학습
 

이 방식은 언어 모델 학습과 잘 맞지만, action이 이산화되어야 한다.


2) L1 regression

저자들이 최종적으로 선택한 방식이다.

모델이 연속 action 값을 직접 예측하고, 정답 action과의 L1 차이를 줄인다.

예를 들어:

예측 action: [0.12, -0.03, 0.45]
정답 action: [0.10, -0.01, 0.50]
차이: |0.12-0.10| + |-0.03+0.01| + |0.45-0.50|
 

L1 regression은 단순하다. 그런데 저자들은 이 단순한 방식이 diffusion 방식과 비슷한 성능을 내면서도 더 빠르다고 주장한다.

Diffusion objective

Diffusion Policy처럼 action에 noise를 넣고, 그 noise를 제거하는 방식으로 학습한다.

학습할 때는 action에 noise를 섞는다.

clean action → noisy action
 

모델은 이 noise를 예측하거나 제거하는 법을 배운다.

추론할 때는 random noise에서 시작해서 여러 step에 걸쳐 denoising한다.

noise → 조금 덜 noisy → 더 clean → 최종 action
 

장점은 복잡하고 multimodal한 action distribution을 잘 표현할 수 있다는 것.
단점은 inference가 느리다는 것.

왜냐하면 한 번에 action을 뽑는 게 아니라, 여러 denoising step을 거쳐야 하기 때문이다. 이 논문 구현에서는 50 diffusion step을 사용한다.

그래서 로봇 제어에서는 latency가 문제가 될 수 있다.

그래서 OFT recipe는 뭔일까

이 절에서 저자들이 비교한 결과를 바탕으로 최종적으로 선택한 조합이 바로 OFT, Optimized Fine-Tuning이다.

구성은 다음과 같다.

OpenVLA-OFT =
1. Parallel decoding
2. Action chunking
3. Continuous action representation
4. L1 regression objective

 

기존 OpenVLA는 주로 하나의 third-person camera image를 입력으로 받는다.

그런데 실제 로봇에서는 더 많은 정보가 필요할 수 있다.

예를 들어 ALOHA 같은 양팔 로봇에서는:

1. third-person camera
2. left wrist camera
3. right wrist camera
4. robot joint state
5. language instruction
 

이런 식으로 여러 입력이 들어간다.

저자들은 이를 처리하기 위해 모든 입력을 embedding으로 바꿔서 sequence dimension으로 붙인다.

visual embeddings + robot state embedding + language embeddings + empty action embeddings
 

그리고 decoder가 이 전체 sequence를 보고 action chunk를 예측한다.

병렬 디코딩이 빠르기 때문에, 입력이 늘어나도 어느 정도 감당할 수 있다는 게 저자들의 주장이다.

즉 OFT는 단순히 빠르게 만드는 것뿐만 아니라, 다양한 입력과 출력 구조에 맞게 VLA를 바꿀 수 있게 해준다.


FiLM?

ALOHA 실험에서는 단순 OFT만으로는 언어 grounding이 약해질 수 있었다고 한다.

특히 여러 카메라 view가 있으면 모델이 언어를 제대로 보지 않고, visual shortcut에 의존할 수 있다.

예를 들어 “scoop raisins into bowl”이라는 명령이 있다고 하자.

테이블 위에는 raisins, almonds, pretzels가 있다.
모델은 언어를 보고 raisins를 골라야 한다.

그런데 학습 데이터에서 특정 위치에 raisins가 자주 있었다면, 모델은 언어를 무시하고 “항상 왼쪽 재료를 scoop하면 되겠네” 같은 shortcut을 배울 수 있다.

이게 spurious correlation이다.

그래서 저자들은 FiLM을 사용한다.

 

실험결과

리베로에서 결과 특히 저자들은 LONG에 집중한다. 왜냐하면 action chunking의 효과가 여기서 특히 크게 나타나기 때문이디. 긴 작업에서는 한두 번의 작은 오차가 누적돼서 실패로 이어지기 쉽다. 그런데 action chunking은 여러 timestep의 행동을 한 번에 예측하기 때문에 행동이 더 일관되고 부드러워질 수 있다.

결과 테이블

OpenVLA만을 본다면 특히 다른 것 보다는 LONG에서 약하다는 것을 볼 수 있다. 그리고 저자들이 제안한 pc, ad 만 넣기만 해더라도 성공률이 오르고 여기에 연속까지 넣어준다면 많이 오른다. 

중요한 또다른 결과는 diffusion과 l1 이 큰 차이가 없다는 것이다. Diffusion은 복잡하고 inference도 여러 step이 필요한 방식인데, L1 regression은 매우 단순한 방식이다.  즉 OpenVLA처럼 큰 모델을 잘 fine-tuning하면, 복잡한 diffusion objective 없이도 L1 regression만으로 충분히 좋은 성능을 낼 수 있다. 

 

Table I 중단과 하단: 추가 입력을 넣으면 SOTA까지 간다.

 

 

LIBERO에서 각 OpenVLA 변형의 추론 효율성(inference efficiency)  을 비교한 표

Table II는 7차원 action을 생성할 때, 각 방법이 얼마나 빠른지를 비교한다. 확실히 더 빠르게 된 것을 볼 수 있다. 특히 diffusion은 step 수를 많이 쓰면 성능은 좋지만 느리고, step 수를 줄이면 빨라지지만 성능이 떨어진다. T=1일떄 거의 0이다. 정리를 하자면 

 

기존 OpenVLA는 4.2Hz라 느리고 Long task 성능도 낮다.
Parallel decoding은 속도를 약 4배 올린다.
Parallel decoding + action chunking은 26배 수준의 throughput 향상을 만든다.
Continuous L1은 속도 손실 없이 성능을 올린다.
Diffusion은 성능은 좋지만 denoising step 때문에 latency trade-off가 크다.
추가 입력을 넣어도 OpenVLA-OFT는 여전히 71.4Hz로 충분히 빠르다.

 

 

실제 ALOHA 실험

 

+ Recent posts