Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 15 additions & 16 deletions _posts/2025-11-10-pi0-fast.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
layout: post
title: "π0 & π0-FAST: 범용 로봇 제어를 위한 Vision-Language-Action 모델"
author: hyojung
categories: [Robotics, Ai, Community]
categories: [Robotics, AI, Community]
image: assets/images/blog/posts/2025-11-10-pi-fast/thumbnail.png
---
* TOC
Expand All @@ -15,26 +15,25 @@ _이 글은 Hugging Face 블로그의 [π0 and π0-FAST: Vision-Language-Action

우리는 **Hugging Face LeRobot**에 최초의 **로봇 파운데이션 모델**을 공개했습니다! **Physical Intelligence**에서 개발한 **π0**와 **π0-FAST** 모델이 이제 **LeRobot repository**를 통해 제공되며, 이를 통해 범용 로봇 지능(Generalist Robotic Intelligence)이 Hugging Face 생태계에 새롭게 도입되었습니다. 만약 Vision-Language-Action(VLA) 모델이 Vision-Language Model(VLM)과 어떻게 다른지, 그리고 행동(action)이 어떤 방식으로 표현되는지 궁금하다면, 이 블로그 포스트를 끝까지 읽어보세요!

모델 컬렉션과 PyTorch 버전의 모델의 아래에서 확인할 수 있습니다:
모델 컬렉션과 PyTorch 버전의 모델은 아래에서 확인할 수 있습니다:
[Huggingface의 Pi0 모델 컬렉션](https://huggingface.co/collections/lerobot/pi0-models-67a0f92dc62e52ace7220eba) | [Huggingface의 Pi0+FAST 모델 컬렉션](https://huggingface.co/collections/lerobot/pi0fast-models-67eab97cc139d6f20513ff4a) | [LeRobot repo](https://github.com/huggingface/lerobot/tree/main)

---

## Introduction


Robert Heinlein은 다재다능한 사람이란 하나의 분야에만 전문화된 사람이 아니라, 지적·육체적으로 폭넓은 과제를 수행할 수 있는 사람이라고 말했습니다. 이 개념을 기계 지능(machine intelligence)에 비유해보면, AI 시스템은 매우 다양한 형태로 존재하지만, 인간 지능은 다재다능함에서 두드러집니다 — 즉, 다양한 과제와 환경, 예기치 않은 상황에 유연하게 적응할 수 있습니다. 대형 언어 모델(LLM)과 비전-언어 모델(VLM)은 큰 가능성을 보여주고 있지만, 여전히 물리적 세계와의 상호작용 능력이 부족합니다. 이 격차를 해소하기 위해서는 로봇 데이터를 기반으로 학습된 모델이 필요합니다. 이러한 범용 로봇 모델(generalist robot models)은 다양한 데이터를 활용해 적응력을 높이고, 일반화 성능과 견고성을 향상시킬 수 있습니다. 즉, 개별 작업(task)별로 모델을 따로 학습시키는 대신, LLM과 유사한 방식으로 다양한 로봇 데이터를 pre-training하면 학습 효율과 성능을 모두 크게 향상시킬 수 있습니다.
Robert Heinlein은 다재다능한 사람이란 하나의 분야에만 전문화된 사람이 아니라, 지적·육체적으로 폭넓은 과제를 수행할 수 있는 사람이라고 말했습니다. 이 개념을 기계 지능(machine intelligence)에 비유해보면, AI 시스템은 매우 다양한 형태로 존재하지만, 인간 지능은 다재다능하다는 점에서 특히 뛰어납니다. 즉, 인간 지능은 다양한 과제와 환경, 예기치 않은 상황에 유연하게 적응할 수 있습니다. 대형 언어 모델(LLM)과 비전-언어 모델(VLM)은 큰 가능성을 보여주고 있지만, 여전히 물리적 세계와의 상호작용 능력이 부족합니다. 이 격차를 해소하기 위해서는 로봇 데이터를 기반으로 학습된 모델이 필요합니다. 이러한 범용 로봇 모델(generalist robot models)은 다양한 데이터를 활용해 적응력을 높이고, 일반화 성능과 견고성을 향상시킬 수 있습니다. 즉, 개별 작업(task)별로 모델을 따로 학습시키는 대신, LLM과 유사한 방식으로 다양한 로봇 데이터를 사전 학습(pre-training)하면 학습 효율과 성능을 모두 크게 향상시킬 수 있습니다.

범용 로봇 정책(generalist robot policies) 또는 로봇 파운데이션 모델(robot foundation models)을 개발하기 위해서는
다음과 같은 세 가지 주요 과제가 존재합니다:
범용 로봇 정책(generalist robot policies) 또는 로봇 파운데이션 모델(robot foundation models)을 개발하기 위해서는 다음과 같은 세 가지 주요 과제가 존재합니다:

1. **대규모 연구의 필요성** — pre-training의 이점을 최대한 활용하기 위해서는 방대한 데이터와 실험을 기반으로 한 대규모 연구가 필요합니다.
1. **대규모 연구의 필요성** — 사전 학습(pre-training)의 이점을 최대한 활용하기 위해서는 방대한 데이터와 실험을 기반으로 한 대규모 연구가 필요합니다.
2. **모델 아키텍처 설계** — 다양한 데이터 소스를 통합하면서도 복잡한 물리적 상호작용을 포착할 수 있는 아키텍처를 설계해야 합니다. 이와 관련된 중요한 도전 과제는 **크로스 임바디먼트 학습(cross-embodiment training)**입니다. 이는 로봇의 구조, 제어 공간, 그리고 행동 표현이 서로 다른 다양한 로봇 유형들로부터 모델이 학습해야 하는 과정을 의미합니다.
기존 접근법들은 다음과 같은 방식으로 이를 해결하고자 합니다:
- **다양한 로봇 플랫폼의 멀티모달 데이터셋을 결합**하여 일반화 능력을 향상시키는 방법
- **공유 표현(shared representations)**을 활용하여 단일 팔(single-arm), 양팔(dual-arm), 모바일 매니퓰레이터(mobile manipulator) 등 서로 다른 형태의 로봇 간 격차를 줄이는 방법

3. **효율적인 학습 레시피 개발** — 최근 NLP와 비전 분야의 발전이 세밀한 pre-training 및 post-training 전략에 크게 의존한 것처럼, 로봇 모델에서도 이에 상응하는 학습 절차를 정립하는 것이 중요합니다.
3. **효율적인 학습 레시피 개발** — 최근 NLP와 비전 분야의 발전이 세밀한 사전 학습(pre-training)사후 학습(post-training) 전략에 크게 의존한 것처럼, 로봇 모델에서도 이에 상응하는 학습 절차를 정립하는 것이 중요합니다.

이 글에서는 이러한 도전 과제를 해결하기 위해 **Physical Intelligence**가 개발한 **π0와 π0-FAST** — 두 개의 프로토타입 모델 및 학습 프레임워크를 소개합니다.

Expand All @@ -46,9 +45,9 @@ Robert Heinlein은 다재다능한 사람이란 하나의 분야에만 전문화
[논문](https://www.physicalintelligence.company/download/pi0.pdf) | [Jax 코드](https://github.com/Physical-Intelligence/openpi)

**π0 (Pi-Zero)**는 [Physical Intelligence 팀](https://www.physicalintelligence.company)이 개발한 **Vision-Language-Action (VLA) 모델**로, **범용 로봇 제어(generalist robot control)**를 위해 설계되었습니다.
이 모델은 **대규모 pretraining**과 **flow matching 기반의 행동 생성**을 결합하여, 다양한 로봇 형태에서 **정교한 조작 작업**을 수행할 수 있도록 합니다.
이 모델은 **대규모 사전 학습**과 **flow matching 기반의 행동 생성**을 결합하여, 다양한 로봇 형태에서 **정교한 조작 작업**을 수행할 수 있도록 합니다.

π0는 **7개의 로봇 플랫폼**과 **68개의 고유한 작업 데이터**로 학습되었으며, **zero-shot** 및 **fine-tuning** 환경 모두에서 우수한 성능을 보여줍니다. 예를 들어, **빨래 개기**, **식탁 정리**, **식료품 포장**, **박스 조립**, **물체 회수** 등 복잡한 실제 작업에서도 뛰어난 결과를 보입니다.
π0는 **7개의 로봇 플랫폼**과 **68개의 고유한 작업 데이터**로 학습되었으며, **빨래 개기**, **식탁 정리**, **식료품 포장**, **박스 조립**, **물체 회수** 등 복잡한 실제 작업에서도 우수한 **zero-shot** 및 **fine-tuning** 결과를 보입니다.

기존의 로봇 정책과 달리, **π0는 flow matching 기법**을 활용하여 **50Hz의 주파수로 부드럽고 실시간 행동 궤적(action trajectories)**을 생성합니다. 이를 통해 실제 환경에서도 **높은 효율성, 정밀성, 적응성**을 달성합니다.
Flow Matching은 원래 연속 정규화 플로우나 diffusion models의 생성 품질을 개선하기 위해 사용된 기법으로, π0에서도 유사한 원리를 적용합니다. 즉, 무작위 노이즈 상태에서 시작해 점진적으로 의미 있는 모터 동작 시퀀스로 수렴해 나가는 디노이징(denoising) 과정을 거칩니다.
Expand Down Expand Up @@ -82,23 +81,23 @@ python lerobot/scripts/train.py \
```

π0 신경망(neural network)을 PaliGemma와 Expert Gemma와 함께 fine-tuning하려면, 다음 명령어를 실행하세요.
이 두 모델은 π0 fine-tuning 이전에 VLM 기본 파라미터로 pre-training된 모델입니다.
이 두 모델은 π0 fine-tuning 이전에 VLM 기본 파라미터로 사전 학습된 모델입니다.

```python
python lerobot/scripts/train.py \
--policy.type=pi0 \
--dataset.repo_id=danaaubakirova/koch_test
```

또한, 아래 코드를 사용하면 LeRobot 학습 프레임워크와 독립적으로 pretrained π0 모델을 직접 사용할 수도 있습니다:
또한, 아래 코드를 사용하면 LeRobot 학습 프레임워크와 독립적으로 사전 학습된 π0 모델을 직접 사용할 수도 있습니다:

```python
policy = Pi0Policy.from_pretrained("lerobot/pi0")
```

## VLM과 VLA의 차이점은 무엇일까?

Vision-Language Models(VLMs)과 Vision-Language-Action Models(VLAs)은 공통적으로 Transformer 아키텍처를 기반으로 합니다.하지만 두 모델의 핵심적인 차이는 행동의 표현 방식에 있습니다. VLM은 이미지와 텍스트를 기반으로 멀티모달 표현을 학습하고 생성하지만, VLA는 여기에 행동과 관찰 상태 토큰을 추가로 통합합니다. 이러한 토큰이 추가되면, 다음으로 중요한 과제는 어텐션(attention)이 어떻게 계산되는지를 이해하는 것입니다.
Vision-Language Models(VLMs)과 Vision-Language-Action Models(VLAs)은 공통적으로 Transformer 아키텍처를 기반으로 합니다. 하지만 두 모델의 핵심적인 차이는 행동의 표현 방식에 있습니다. VLM은 이미지와 텍스트를 기반으로 멀티모달 표현을 학습하고 생성하지만, VLA는 여기에 행동과 관찰 상태 토큰을 추가로 통합합니다. 이러한 토큰이 추가되면, 다음으로 중요한 과제는 어텐션(attention)이 어떻게 계산되는지를 이해하는 것입니다.

## 로봇 정책에서의 어텐션 메커니즘(Attention Mechanisms)

Expand Down Expand Up @@ -170,8 +169,8 @@ Vision-Language Models(VLMs)과 Vision-Language-Action Models(VLAs)은 공통적

### **PyTorch에서 FlexAttention 사용하기**
이 문제는 [FlexAttention](https://pytorch.org/blog/flexattention/)으로 해결할 수 있습니다! FlexAttention은 순수 PyTorch 인터페이스를 제공하며, 두 가지 방법을 시도해볼 수 있습니다:
1. **score_mod를 추가하는 방법**은 어텐션이 비활성화된 위치(즉, 주의를 기울이지 않아야 하는 위치) causal mask에 score_mod를 추가하는 방식입니다. 그러나 단순히 스칼라 값을 더하는 것만으로도 **FlexAttention의 성능이 크게 저하**되었습니다. 그 이유는, 우리의 경우 score_mod가 최적화된 CUDA 커널 외부에서 더해지기 때문입니다.
2. 정확한 접근법은 **causal mask를 인덱싱하여, 그 결과로 얻은 시그니처를 사용해 block mask를 생성하는 것**입니다. 이렇게 생성된 block mask는 어텐션을 실제로 계산해야 하는 위치와 완전히 건너뛸 수 있는 위치를 효율적으로 구분합니다.
1. **`score_mod`를 추가하는 방법**은 어텐션이 비활성화된 위치(즉, 주의를 기울이지 않아야 하는 위치)에서 causal mask에 `score_mod`를 추가하는 방식입니다. 그러나 단순히 스칼라 값을 더하는 것만으로도 **FlexAttention의 성능이 크게 저하**되었습니다. 그 이유는, 우리의 경우 score_mod가 최적화된 CUDA 커널 외부에서 더해지기 때문입니다.
2. 정확한 접근법은 **인과 마스크(causal mask)를 인덱싱하여, 그 결과로 얻은 시그니처를 사용해 block mask를 생성하는 것**입니다. 이렇게 생성된 block mask는 어텐션을 실제로 계산해야 하는 위치와 완전히 건너뛸 수 있는 위치를 효율적으로 구분합니다.

```python
# causal mask를 인덱싱하고 mask_mod를 사용하는 예시
Expand Down Expand Up @@ -248,7 +247,7 @@ VQ는 하이퍼파라미터에 매우 민감하여, 다양한 로봇 설계 간

모든 연산은 가역적(invertible)이기 때문에, 토큰으로부터 행동을 효율적이고 손실 없이 복원할 수 있습니다. FAST의 토크나이제이션 파이프라인은 단 두 개의 하이퍼파라미터만을 가집니다: 반올림 전에 적용되는 스케일링 계수와 BPE vocabulary 크기입니다. 이 두 파라미터는 서로 다른 데이터셋에서도 높은 안정성과 일관성을 유지합니다.

또한, FAST의 범용 버전인 **FAST+**는 단일 팔(single-arm), 양팔(bimanual), 모바일 매니퓰레이터(mobile manipulation) 로봇 등 다양한 형태의 로봇에서 수집된 100만 개의 행동 시퀀스로 학습되었습니다. 따라서 FAST+는 다양한 로봇 환경에 폭넓게 적용할 수 있습니다. FAST+는 **Hugging Face AutoProcessor** 형태로 제공되며, 단 몇 줄의 코드만으로 행동 시퀀스를 손쉽게 토크나이즈할 수 있습니다.
또한, FAST의 범용 버전인 **FAST+**는 단일 팔(single-arm), 양팔(bimanual), 모바일 매니퓰레이터(mobile manipulation) 로봇 등 다양한 형태의 로봇에서 수집된 100만 개의 행동 시퀀스로 학습되었습니다. 따라서 FAST+는 다양한 로봇 환경에 폭넓게 적용할 수 있습니다. FAST+는 **Hugging Face AutoProcessor** 형태로 제공되며, 단 몇 줄의 코드만으로 행동 시퀀스를 손쉽게 토큰화할 수 있습니다.

최적의 압축 성능을 얻기 위해서는, 토크나이제이션 전에 입력 행동을 [-1, 1] 범위로 분위수 정규화(quantile-normalization) 하는 것이 좋습니다. 또한, ``AutoProcessor`` 모듈을 사용하면 사용자 데이터셋에 맞춰 커스텀 FAST 토크나이저를 직접 학습시킬 수도 있습니다.

Expand Down Expand Up @@ -295,4 +294,4 @@ FAST는 **Hugging Face Transformers**에 통합되어 있으며, 로봇 행동
year={2025}
}

```
```