-1. abstract
- 다중 에이전트
데이터 기반
시뮬레이터
- 유의미한 논문 기여 정리 (아래 3가지가 다임)
- Waymax는 differentiable 시뮬레이터로 구현하여, 주행 정책 학습 알고리즘의 학습 단축시간을 줄이고, global optimal 에 수렴하기 용이하게 만들었다고 함.
- 미분 가능한 시뮬레이터라는 뜻은 아래에서 자세히 설명
- Waymax는 네트워크 학습 뿐만 아니라, 시뮬레이션 환경 구동도 hardware-acceleration 할 수 있음 (JAX로 개발하였기 때문)
- 이는 학습/추론 실행 속도를 향상시킬 수 있다.
- 학습과 시뮬레이션이 호스트 머신을 통한 통신 병목 현상 없이 가속기에서 완전히 수행될 수 있습니다.
- 멀티 에이전트 학습을 실 데이터를 기반으로 빠르게 수행할 수 있는 코드를 잘 짜놓은 것 같음 (논문의 주장과 github star수가 높은걸 보니 그런것 같은데, 확인 필요)
- Waymo Open Dataset의 실제 주행 데이터를 기반으로 구축
- 다른 유명한 데이터셋으로도 쉽게 확장 가능하게 코드 짜놨음
- 다양한 다중 에이전트 시뮬레이션 시나리오를, 데이터셋을 이용해서 초기화하거나 재생(오픈루프를 의미) 하는 기능이 있음
- 자동차 뿐만 아니라, 보행자와 자전거 이용자와 같은 도심 주행에서의 까다로운 장애물을 시뮬레이션했다고 함 (신호등도 포함)
- 하지만 자세히 읽어보니, Waymo Open dataset으로부터 non-interactive하게 play하는 것만 가능한듯
- 자동차를 interactive하게 구현해놓은것은 IDM이 전부임 ㅠㅠ
- 대신, 내가 interactive-model을 개발한 후, 쉽게 바꿔끼울 수 있게 코드를 잘 구조화해서 짜놨다고 주장하고 있다.
0. 개념: 미분가능한 시뮬레이터?
0.1. 미분 불가능한 시뮬레이터 개념
- 전통적으로, 물리 기반 시뮬레이션은 "입력(상태와 행동) → 출력(다음 상태)" 관계를 갖는 블랙박스 형태
- 이러한 시뮬레이션은 주어진 초기 조건과 행동(예: 자동차의 조향각, 가속도, 외부 agent의 변동)에 따라 다음 상태(예: 차량의 위치, 속도, 외부 agent의 변동)를 계산하지만,
- 이 변환 과정은 일반적으로 미분 가능하게 설계되지 않음
- 그 이유는
- 일반적인 물리 시뮬레이션은 충돌, 마찰, 접지 등의 현상에서 비연속적이고 미분 불가능한 특성을 많이 가짐
- 그리고 ego 차량의 움직임에 따른 주변 agent의 움직임도 예측하기 어렵기 때문
- 즉, "지금 상태에서 특정 행동을 했을 때, 결과 상태가 어떻게 변하는가?"에 대한 기울기(미분값)를 쉽게 얻을 수 없는 경우가 대부분입니다.
0.2. 미분 가능한 시뮬레이션을 만드는 이유
0.2.1. 효과 : 정책 최적화와 학습 효율성 개선
- 기존의 RL 기법들은 "정책 파라미터 변화 → 보상 변화" 관계를 명시적으로 알 수 없으므로, 수많은 시뮬레이션을 돌려서 추정치(근사치)를 얻어야 하고, 이 추정치는 노이즈가 많아 불안정합니다.
- 이는 학습 과정에서 시간이 많이 걸리고, 때때로 수렴하기 어려운 상황을 초래
- 시뮬레이션이 미분 가능해지면, 학습 시간이 줄어들고, global optimum으로 수렴하기 용이해집니다.
- 정책 파라미터 변화에 대한 정확한 기울기를 바로 계산할 수 있습니다.
- 그럼 굳이 많은 에피소드를 통해 통계적 평균으로 기울기를 추정할 필요가 줄어들고, 노이즈로 인한 불안정성도 크게 완화됩니다.
0.2.1.1. 미분 불가능한 시뮬레이터에서, RL 알고리즘의 기울기 추정 방식 복습
- Policy gradient, Actor-crtic 모두, "환경과의 상호작용"을 통해 많은 경험(데이터)을 모은 뒤, 그 경험에서 추정한 값으로 기울기를 근사 (시뮬레이터 미분이 불가능하기 떄문)
- 한 번의 에피소드에서 얻은 보상은 매우 변동성이 크고, 특정한 정책 파라미터 변화에 대한 정확한 정보를 주기 어렵습니다.
- 예를 들어, 같은 정책이라도 어떤 초기 조건, 어떤 랜덤 시드에서 시뮬레이션을 돌리느냐에 따라 결과(보상)가 크게 달라집니다.
- 결국 더 많은 에피소드를 모아 평균을 내야 기울기가 어느 정도 안정화되는데, 이것이 바로 학습 과정이 느리고 불안정해지는 원인
- 예시: Policy Gradient 학습 과정

0.3. 그럼 어떻게 미분 가능하게 만드는가?
- 미분 가능한 시뮬레이터를 만들기 위해서는
- 비연속 요소(충돌, 마찰, 접지 등의 현상, 주변 agent의 움직임 모델)을 부드럽게 근사(smoothing)하거나,
- 적절한 수학적 모델(예: 미분 가능한 충돌 모델, 매끄러운 마찰 모델)을 도입해야 합니다.
- TODO
- Waymax에서는 이를 어떤 방식으로 구현했는지? 그것이 합리적인지? 를 분석해야함
- 논문을 열심히 읽어봤는데, 이 부분이 자세히 설명되지 않은 것 같음
0.3.1. 방법론 예시: Reparameterization / Pass-through Gradients
- 시뮬레이션이 미분 하기 위해서는, 환경 내 확률적 요소나 복잡한 연산을 Reparameterization/Pass-through Gradients 기법을 통해 미분 가능 형태로 만들면 된다.
- 내 생각
- 실제 세계를 잘 모델링한 미분가능한 수학적 모델을 도입해야지, 그냥 미분가능하도록 trick만 쓰는게 무슨 의미가 있나?
Reparameterization
- 재매개화 기법의 핵심은 "랜덤 변수의 샘플링"을 파라미터 θ와 독립적인 랜덤 변수 ϵ을 통해 표현하는 것입니다.
- 이렇게 하면 원래 직접적으로 θ에 의존하는 확률적 과정을, ϵ이라는 기정(given)한 노이즈에 대한 결정론적(de-terministic) 변환으로 바꿀 수 있어, θ에 대한 미분이 용이해집니다.
Pass-through Gradient
- 역전파 과정에서 특정 연산을 단순화하는 방법입니다.
- 즉, 순전파(forward)에서는 어떤 복잡한(또는 비분리) 함수 변환을 수행하지만, 역전파(backward) 시에는 그 변환을 무시하거나 단순화하여 기울기를 '통과(pass through)'시킵니다.
- 이를 통해 역전파 그래프를 간소화하고, 기울기 흐름을 원활히 할 수 있습니다.
1. Introduction
- CARLA [14], Sim4CV [33], SUMMIT [9]와 같은 시뮬레이터는 photo-realistic 렌더링에 중점을 둠
- 자율"주행 PnC" 시뮬레이터에서 중요한 점: 속도와 현실성
다양한 시나리오
와 현실적인 에이전트(예: 차량 및 보행자)
의 동작 생성
- closed-loop의 에이전트 동작 시뮬레이션 제공
- 대규모 모델과 데이터세트를 사용하는 최신 머신러닝 트렌드를 지원할 수 있는 높은 속도와 처리량
2.1. 자율주행 시뮬레이터

- waymax와 가장 가까운 연구는 Nocturne[52], MetaDrive[25], nuPlan[8]
- 위 3가지는
실제 주행 데이터를 사용하여 시나리오와 기록된 행동을 초기화
하는 기능이 있는, 다중 에이전트 자율 주행 시뮬레이터
- 이와 비교하여, Waymax 시뮬레이터가 가지는 장점은
- 주행 학습 뿐만 아니라, 시뮬레이션 환경 구동도 hardware-acceleration 할 수 있음
미분 가능한 시뮬레이션
2.2. 학습 기반 주행 에이전트
- Waymax는 대표적인 closed loop 방법(IL 및 RL baseline 세트)의 구현을 제공하고, Waymax가 정의한 표준 메트릭 세트에 대한 성능을 보고하였음
- 논문에서 제시한 6개 비교군 논문 모두 2022년 이전에 작성되었으며, 인용수가 100을 넘지 않고 github 코드도 없음
- Waymax는
표준 학습 및 평가 워크플로우
와 오픈 및 폐쇄 루프 설정에서 신뢰할 수 있는 벤치마킹
을 제공함
3. 시뮬레이터 기능
- 이 섹션에서 논의된 각 구성 요소는 사용자가 자신의 프로젝트 요구에 맞게 쉽게 수정하거나 교체할 수 있습니다.
3.1. 시나리오 및 데이터셋
- 합성(가상의) 시나리오를 생성하는 시뮬레이터(예: CARLA[14])와 달리,
- Waymax는 실제 주행 로그를 사용하여 주행 시나리오를 인스턴스화하고 고정된 수의 step 동안 실행
- Waymax는 Waymo Open Motion Dataset(WOMD)[15]에 대한 기본 지원을 제공
- 각 트래젝토리 스니펫은 0.1Hz로 기록된 9초
- 트래젝토리에는
자율 주행 차량(AV), 다른 차량, 보행자, 자전거를 포함한 장면의 모든 객체
에 대한 위치 및 속도 정보가 포함
- 각 시나리오에 대해
도로 그래프와 같은 정적 정보
를 가져와
- 로그된 정보의 시작점을 사용하여 동적 객체를 초기화
- 그런 다음,
에이전트 모델(3.5절에서 설명할 것임)
을 사용하여 시뮬레이션 단계를 통해 주변 동적 객체를 제어
- 각 모델은 여러 객체를 제어할 수 있습니다.
3.2. state / observation space
- 자율 주행 제어의 첫 번째 구성 요소는 state space을 정의하는 것
- state에는 두 가지 유형의 데이터가 포함
- 에피소드와 시나리오에 걸쳐 변경될 수 있는
동적 데이터
- 장면의
모든 차량, 자전거 및 보행자
의 위치, 회전, 속도 및 bounding box 치수 + 교통 신호등의 색상(빨강, 노랑, 녹색)
- 에피소드 동안에는 동일하지만 시나리오마다 다를 수 있는
정적 데이터
- "roadgraph"라고 하는, 3D pointcloud로 샘플링된 도로 및 차선 경계
- 자율 주행 차량의
on-route
and off-route
paths (이게 뭔지는 뒤에 나옴)
- 각 에이전트는 사용자 정의 observation 함수를 통해 시뮬레이터 state를 확인하며, 이는 부분 관측 가능성을 구현할 수 있게 함
- waymax에서 제공하는 기본 observation 함수는
- 다른 모든 차량의 위치를 에이전트의 자체 좌표계로 변환하고
- "roadgraph"를 거리에 따라 샘플링
3.2.1. on-Route and off-Route paths
- 자율 주행 차량이
초기 위치에서 취할 수 있는 실행 가능한 paths로 각 시나리오를 증강
- 각 path는 roadgraph의 점의 하위 집합인 일련의 점들로 표시
- 각 경로 candidate는 시작 위치에서 roadgraph의
깊이 우선 탐색
을 수행하여 계산됨
- 만약 path candidate가
- AV’s logged trajectory와 같은 road이면
on-route path
로 정의
- 그 외는
off-route path
로 정의
- 이 2가지가 state space 에 포함된다.
3.3. Object Dynamics
- Waymax는 사용자가 역학 모델을 정의할 수 있도록 하고,
- 시뮬레이션에서 차량의 물리적 역학을 제어하기 위한 몇 가지 사전 정의된 옵션을 제공
- 1) 보행자, 자전거 등: 모든 유형의 객체에 적합한 델타 동작 공간은 두 연속 상태 사이의 위치 차이(델타 항 ∆x, ∆y, ∆θ)를 사용
- 2) 자동차: 그리고 bicycle action space((a, κ))은 가속도와 조향 곡률을 사용
3.4. Metric
- Waymax는
안전성
과 행동의 정확성(교통 규칙 준수, 충돌 방지
등)뿐만 아니라
편안함
과 진행 상황
을 평가하기 위한 메트릭을 제공
- Waymax의 모든 메트릭은 폐쇄 루프 방식으로 계산
- 중요한 내용이 없어서 세부 사항은 생략했음
3.5. Simulated Agent Behavior
- 내가 학습/검증할 AV이외의 다른 agent의 현실적인 행동 구현이 매우 중요함
- Waymax는 다중 에이전트 시뮬레이터로서 사용자가 시뮬레이션에서 모든 객체의 행동을 제어할 수 있는 기능을 제공
- 이를 통해 사용자는
학습된 행동 모델과 같은 원하는 모델로 에이전트를 제어할 수 있습니다.
- 그러나 Waymax는 지능형 운전자 모델(IDM)[51]만을 구현해 놓았습니다.
- Waymax의 IDM 에이전트는 데이터에 기록된 로그된 경로를 따르지만,
- IDM을 사용하여 속도 프로필을 조정하여 충돌을 피하고 자유로운 도로에서 가속합니다.
4. Software API
- 주요 라이브러리는 다음과 같습니다.
- (1) 일반적인 데이터 구조 세트
- (2)
distributed 데이터 로딩 라이브러리
- (3) 메트릭 및 dynamics와 같은 시뮬레이터 구성 요소
- (4) Gym과 유사한 환경 인터페이스
- 각 구성 요소는 수정, 교체 또는 독립적으로 사용할 수 있습니다.
4.1. Environment Interface
state = env.reset(next(dataset))
while not done:
action = policy(env.observe(state))
state = env.step(state, action)
4.2. Hardware Acceleration and In-graph training
- Waymax은
학습과 시뮬레이션을 동일한 계산 그래프 내에서 결합
하는 것을 지원합니다(그래프 내 학습이라고 함).
- 이를 통해 학습과 시뮬레이션이 호스트 머신을 통한 통신 병목 현상 없이 가속기에서 완전히 수행될 수 있습니다.
- 이러한 기능은 Waymax가 전적으로 JAX[5] 라이브러리를 사용하여 작성되었기 때문에 가능
4.2.1. 시뮬레이션 환경을 JAX 라이브러리를 사용하여 구현할 수 있는 이유
- Waymax는 함수형 순수성(functionally pure)을 갖춘 초기화(initialization) 및 전이(transition) 함수를 제공
- 즉, 같은 입력을 주면 항상 동일한 출력을 반환하는 "순수 함수" 형태로 환경을 정의
- 이러한 stateless 설계 덕분에 JAX[5]의 JIT컴파일러와 함수형 라이브러리를 통해 시뮬레이션을 효율적으로 최적화할 수 있습니다. (컴파일 후 GPU에서 빠르게 구동 가능)
- 또한, 이 접근 방식은 사용자가 backtracking 제어 알고리즘(여러 후보 행동 시나리오를 가상으로 미리 시뮬레이션한 뒤 최적의 행동 경로를 선택하는 알고리즘)을 쉽게 구현할 수 있도록 돕습니다.
- 기존의 OpenAI Gym[6]이나 DM Control[32] 같은 환경은 내부적으로 상태를 관리하는 "상태 저장(stateful)" 방식입니다.
- 즉,
reset()
이나 step()
함수를 호출할 때 사용자는 상태를 명시적으로 전달하지 않고, 환경 자체가 내부적으로 상태를 기억합니다.
- 반면 Waymax에서는 사용자가 명시적으로 상태를 관리하고, 매 시뮬레이션 단계에서 이 상태를
transition
함수에 전달하여 다음 상태를 얻는 방식으로 작동합니다.
- 이로 인해 함수형 패러다임에 맞춰 전체 연산을 정의할 수 있고, JAX를 통한 자동미분, 최적화, 가속기(GPU/TPU) 활용이 용이해집니다.
- 정리하자면, Waymax의 함수형 순수성 및 상태를 외부에서 관리하는 설계 방식은
- JAX와 같은 함수형, 자동미분 지원 라이브러리와 궁합이 좋아
- 시뮬레이션을 고성능으로 최적화하고 다양한 알고리즘을 유연하게 구현할 수 있게 합니다.
4.3. Single and Multi-agent Simulation

- Waymax는 아래 2가지를 모두 지원
- MultiAgentEnvironment
- 사용자가 시나리오 내의 임의의 객체를 제어할 수 있는 multi-agent simulation
- 사용자는 장면의
모든 제어 객체에 대한 동시 동작
과 제어해야 하는 객체를 나타내는 마스크
를 제공
- PlanningAgentEnvironment
학습되거나 규칙 기반 모델 혹은 로그 재생을 사용
하여 장면의 다른 차량을 제어하는, single AV 에이전트가 훈련되는 워크플로우
- 자율 주행 차량만 제어하기 위한 인터페이스를 제공
- waymax에서는 하나의 MultiAgentEnvironment에 여러 정책(정책=행동 전략)을 직접 넣는 것은 가능하지만, 유연하지 않다.
- MultiAgentEnvironment를 여러개 만드는게 올바르다.
5. 실험
5.1. 런타임 벤치마크
- CPU(Intel Xeon W-2135@3.7GHz)와 GPU(Nvidia-V100)를 사용하여, Waymax의 런타임 성능을 테스트해봤음
- 다양한 배치 크기로 MultiAgentEnvironment 및 PlanningAgentEnvironment의 성능을 평가
- 매우 빠르다.
- 특히 Waymax가 배치 처리를 지원함
rollout
- 우리는 또한 전체 에피소드(즉, WOD의 경우 80단계) 동안 Actor가 주어진 환경을 롤아웃하는 Rollout 함수를 벤치마크했음
- Rollout 함수:
- 여러 단계(step)를 연속적으로 실행하여 전체 에피소드(시나리오)를 한 번에 처리하는 함수
- 주변 agent와의 상호작용은, step을 한번씩 실행하는 것과 동일하게 일어납니다.
- rollout 함수는 더 빠른 추론과 평가를 제공하는 데 특히 유용
- 이것은 Step 함수를 80번 실행하는 것보다 빠릅니다.
- 더 중요한 것은 GPU에서 실행하면 일관되게 2배의 속도 향상을 볼 수 있다는 것입니다.
5.2. Baseline Planning Agents
Expert
- Wayformer 행동 예측 모델[35]을 계획 설정에 적용
- 원래 Wayformer는 1초의 컨텍스트 히스토리를 주어진 8초 미래 트래젝토리를 여러 개 예측
- 이를 planning setting에 적용하기 위해
- 미래를 예측할 때, 단 한 번에 긴 시간을 예측하는 대신, 짧은 구간씩 예측하고, 그 예측 결과(가장 그럴듯한 미래 경로)를 다시 다음 예측의 입력 정보로 사용하는 방식을 썼음
Behavior Cloning
- Wayformer[35] 모델의 인코더 부분을 그대로 활용하고, 그 뒤에 4층짜리 residual MLP 구조를 붙여서,
- 전문가(실제 운전자) 주행 데이터의 경로와 최대한 일치하도록(로그 우도를 극대화) 모델을 학습시킨다.
Model-free RL - DQN
- We used the Acme [19] implementation of priori- tized replay double DQN [45].
5.3. Planning BenchMark Results
- 요약: IDM을 주변 agent로 두고 자율주행 정책을 훈련하니, IDM의 양보하는 성향을 자율주행 정책이 배워서 악용해버리더라.
- RL 에이전트는 스스로 충돌을 피하는 방법을 배울 동기가 적습니다.
- 그래서 차라리, 주변 agent를 실제 dataset에서 play하여 Non-interactive 하게 학습하는게 더 낫더라.