TRENDSHIFT DAILY #1 · 2026-07-25 · ABOT-WORLD · 실시간 월드 모델

amap-cvlab/ABot-World 딥다이브
RTX 5090 한 장으로, 내 키보드에 실시간 반응하는 '무한 세계'를 만든다

ABot-World는 데스크탑 GPU 단 한 장으로 돌아가는 액션 조건부 비디오 월드 모델(action-conditioned video world model)이다. 한 문장으로 말하면 "참조 이미지 한 장 + 내 WASD 키 입력을 받아, 720p·16FPS·1.2초 지연으로 끝없이 이어지는 상호작용형 영상 세계를 실시간 생성한다".

이 프로젝트의 급소는 이것이다: 영상을 '다 만들어 놓고 재생'하는 게 아니라, 게임 엔진처럼 '지금 누른 키'에 반응해 다음 장면을 즉석에서 그려낸다. 보통 이런 월드 모델은 대형 GPU 클러스터에서 저해상도로 겨우 돌아가는데, ABot-World는 소비자용 RTX 5090 한 장·VRAM 19GB로 720p 실시간을 실증했다. 비결은 자기회귀(autoregressive) diffusion + 4-step 증류 + FP8 양자화의 조합이다.

(저장소 amap-cvlab/ABot-World · 제작 AMAP CV LAB(알리바바 고德/Amap 계열) · 모델 ABot-World-0.5B-LF(약 0.5B 파라미터) · 언어 Python 3.12 · 라이선스 Apache 2.0 · shallow clone 소스 직접 분석)
목차
  1. 프로젝트 한 줄 요약
  2. 왜 주목받는가 — 클러스터 없이 데스크탑에서
  3. 기술 스택 전체 지도
  4. 아키텍처 심화 분석
  5. 디렉토리 구조 해부
  6. 학습 포인트
  7. 하드웨어 / 시스템 요구사항
  8. 직접 해볼 수 있는 실습 과제
  9. 관련 기술 심화 학습 로드맵
  10. 핵심 키워드 사전
  11. 참고 링크

1프로젝트 한 줄 요약

영상 생성 모델을 '게임 엔진'처럼 실시간으로 조종한다

기존의 AI 영상 생성(예: Sora, Wan)은 "프롬프트 넣고 → 몇 분 기다리면 → 완성된 클립이 나오는" 방식이다. 한 번 만들어지면 끝이고, 중간에 내가 개입할 수 없다. ABot-World는 이 틀을 깬다. 참조 이미지 한 장을 세계의 출발점으로 삼고, 내가 WASD(이동)·IJKL(시점) 키를 누르면 그 입력에 반응해 다음 몇 프레임을 즉석에서 생성한다. 걷고, 돌아보고, 새 방으로 들어가는 것을 실시간으로 조종하는 것이다.

한 줄 비유

'다 찍어놓은 영화'가 아니라 '내가 조종하는 오픈월드 게임'

일반 영상 생성이 극장 상영(정해진 필름을 재생)이라면, ABot-World는 실시간 게임 플레이다. 다만 게임처럼 3D 모델·텍스처·물리엔진을 사람이 만든 게 아니라, 신경망이 매 순간 화면을 상상해서 그린다. 내가 앞으로 가면 없던 복도가 생겨나고, 뒤돌아보면 방금 지나온 방이 (대략) 그대로 있다. 세계가 미리 존재하는 게 아니라 내 움직임에 맞춰 즉석에서 태어난다.

핵심 스펙은 README의 "Key Highlights"에 정리돼 있다. 네 가지가 이 프로젝트의 정체성이다.

특징내용
액션 조종수동 재생이 아니라 사용자 키 입력에 실시간 반응하는 연속 탐험(Action-Driven World Control)
실시간 데스크탑단일 RTX 5090에서 720p·16FPS·1.2초 지연·19GB VRAM
무한 롤아웃고정 영상 길이의 한계를 넘어 끝없이 이어지는 open-ended 생성
열린 상상프롬프트를 안 바꿔도 롤아웃 도중 새 장면·역학으로 확장(scene lock-in 회피)
TERM
월드 모델 (world model)
환경의 '작동 규칙'을 신경망이 내부에 학습해, 다음에 무슨 일이 벌어질지 예측·시뮬레이션하는 모델. ABot-World는 그중에서도 사용자 액션을 조건으로 받아 다음 영상 프레임을 예측하는 '액션 조건부 비디오 월드 모델'이다. Genie·Oasis·GameNGen 같은 프로젝트와 같은 계열이다.

2왜 주목받는가

"대형 클러스터·저해상도"가 상식이던 월드 모델을, 데스크탑 GPU 1장·720p로

월드 모델 자체는 새롭지 않다. DeepMind의 Genie, Decart/Etched의 Oasis(Minecraft를 신경망이 실시간 렌더링) 등이 이미 화제가 됐다. 하지만 이들은 대부분 대규모 GPU 인프라를 전제하거나, 실시간을 위해 해상도를 크게 낮췄다. ABot-World가 주목받는 이유는 이 "실시간성 × 해상도 × 하드웨어 접근성"의 삼각 트레이드오프를 소비자 GPU 한 장에서 720p로 돌파했다고 주장하기 때문이다.

기존 접근과 무엇이 다른지 정리하면 이렇다.

비교 축흔한 월드 모델ABot-World
하드웨어다중 GPU 클러스터 / 서버단일 소비자 GPU(RTX 5090) 1장, 19GB
해상도·속도실시간을 위해 저해상도(예: 360p) 타협720p·16FPS 실시간, 지연 1.2초
영상 길이고정 길이(수 초) 후 끊김/재시작롤링 KV 캐시로 무한 롤아웃
장면 고착롤아웃 길어지면 한 장면에 갇힘(lock-in)LongForcing 학습으로 새 장면 확장
생성 방식전체 클립을 한 번에 diffusion블록(3프레임) 단위 자기회귀 + 4-step 증류

'실시간'을 가능케 한 엔지니어링이 이 프로젝트의 진짜 볼거리다. 보통 diffusion은 노이즈를 수십 번 반복해서 걷어내야 깨끗한 이미지가 나온다. ABot-World는 DMD(분포 매칭 증류)로 이 과정을 단 4스텝(1000→750→500→250)으로 압축한 '학생 모델'을 쓴다. 여기에 FP8 양자화, Sparse Linear Attention, 경량 스트리밍 VAE(TAEHV)를 얹어 VRAM 19GB·1.2초 지연을 맞췄다. 즉 모델 연구 + 저정밀 추론 엔지니어링이 한 저장소에 다 들어있다.

비유

50번 덧칠 vs 4번 붓질. 일반 diffusion이 유화를 50겹 덧칠해 완성한다면, DMD로 증류한 학생 모델은 스승의 붓놀림을 통째로 배워 4번의 큰 붓질로 비슷한 그림을 낸다. 품질은 약간 양보하지만, 그 대가로 '실시간'이라는 완전히 다른 사용 경험을 얻는다.

제작 주체가 AMAP(고德 지도, 알리바바) CV LAB이라는 점, 그리고 500시간 규모의 액션 주석 학습 데이터셋 공개를 예고했다는 점도 관심을 키웠다. 자율주행·지도 회사가 왜 월드 모델을? — 실제 세계의 이동·공간을 시뮬레이션하는 능력은 지도/내비/로보틱스와 직결되기 때문이다.

3기술 스택 전체 지도

딥러닝 코어 · 저정밀 추론 · 실시간 웹 서빙, 세 층으로 나눠 본다

① 딥러닝 코어 (모델·학습·추론)

기반은 알리바바의 오픈 영상 모델 Wan 2.2다. ABot-World는 이 Wan DiT(Diffusion Transformer)를 자기회귀·블록 단위·로컬 어텐션 구조로 개조했다.

구성요소선택역할
프레임워크PyTorch 2.8.0 + cu129CUDA 12.9 빌드 (최신 Blackwell 대응)
diffusiondiffusers 0.31.0스케줄러·파이프라인 유틸
트랜스포머transformers 4.57.3umt5-xxl 텍스트 인코더 로딩
어텐션 가속flash_attn 2.8.1, sageattention 2/3고속·저메모리 어텐션 커널
양자화torchao 0.17.0 + AngelSlimFP8/INT8/NVFP4 등 저정밀 추론
기타einops, omegaconf, sentencepiece텐서 조작·설정·토크나이저

② 실시간 웹 서빙

브라우저에서 키를 누르면 화면이 흘러나오게 하는 계층이다. gradio 5.49 + flask + flask-socketio(WebSocket)로 저지연 프레임 스트리밍을 구현한다. 프론트엔드는 프레임워크 없는 순수 HTML/CSS/JS(js/main.js, key_handler.js)로, WASD/IJKL 입력을 잡아 서버로 보내고 HUD를 그린다.

③ 미디어 I/O

opencv-python, imageio(+ffmpeg, libx264), av로 프레임을 인코딩·스트리밍한다. 실행 환경은 conda python=3.12, 검증 환경은 Ubuntu 22.04 · CUDA 13.3 · RTX 5090이다.

TERM
DiT (Diffusion Transformer)
이미지·영상 diffusion의 백본으로 U-Net 대신 트랜스포머를 쓰는 구조. Sora·Wan·Flux 등 최신 생성모델의 표준이 됐다. ABot-World는 여기에 '인과성(causal)'을 넣어, 미래 프레임이 과거만 참조하도록 만들어 자기회귀 생성을 가능케 했다.

4아키텍처 심화 분석

참조 이미지 + 텍스트 + 키 입력이 한 프레임으로 합쳐지는 파이프라인

전체 파이프라인

[참조 이미지 example.png] ──────────────┐ [텍스트 프롬프트] ─ umt5-xxl(T5) 인코더 ─┤ [키보드 8키: W A S D I J K L] ─ SimpleAdapter ─┤ ▼ 노이즈 latent 블록 ──► Causal DiT (Wan2.2 개조, KV-cache 자기회귀) │ 4-step DMD 디노이즈: 1000 → 750 → 500 → 250 │ 블록당 3 latent 프레임 · 로컬 어텐션(최근 21프레임) ▼ Wan2.2 VAE(인코딩) / TAEHV taew2_2(고속 스트리밍 디코딩) ▼ 704×1280 프레임 스트림 ─► 큐 ─► 브라우저 (16 FPS)

핵심 설계 ① — 자기회귀 diffusion + KV 캐시 (무한 롤아웃의 비결)

이게 프로젝트의 심장이다. 보통 영상 diffusion은 클립 전체를 한꺼번에 만든다. 그러면 길이가 고정되고, 길어질수록 메모리가 폭발한다. ABot-World는 Wan DiT를 인과적(causal)으로 개조해, 블록(3프레임 latent) 단위로 순차 생성하고 이전 블록들은 KV 캐시로 저장해 재사용한다. GPT가 토큰을 하나씩 이어 붙이며 앞 문맥을 캐시하는 것과 똑같은 원리를 영상에 적용한 것이다.

비유

영화 통편집 vs 만화 연재. 일반 영상 생성이 2시간짜리 영화를 통으로 렌더링한다면, ABot-World는 만화를 한 컷씩 연재한다. 이번 컷을 그릴 때 앞 컷들의 '기억'(KV 캐시)만 참고하면 되니, 연재가 아무리 길어져도 한 컷 그리는 비용은 일정하다. 그래서 '무한' 롤아웃이 가능하다.

핵심 설계 ② — 로컬 어텐션으로 비용 상한 고정

무한히 길어지는 시퀀스에서 모든 과거를 다 보면 결국 비용이 무한대가 된다. ABot-World는 local_attn_size=21최근 21프레임 창만 어텐션한다. 시퀀스가 아무리 길어져도 연산·메모리 상한이 고정된다(max_attention_size = 21 × 880). 오래된 프레임은 잊고 최근 문맥에 집중하는 '슬라이딩 윈도우'다.

핵심 설계 ③ — 4-step 증류(DMD) + 피라미드 디노이징

실시간의 물리적 조건. config long_forcing_dmd.yamldenoising_step_list: [1000, 750, 500, 250]가 보여주듯, 스승 모델의 수십 스텝을 단 4스텝으로 증류한 학생 생성기를 쓴다. 여기에 피라미드 디노이징(초기 스텝은 낮은 해상도로 처리)까지 얹어 초반 연산을 더 아낀다.

핵심 설계 ④ — 액션 조건화 (키 입력을 latent에 심는 법)

8개 키를 어떻게 신경망이 알아듣게 할까? pipeline/causal_inference.pyset_act + SimpleAdapter가 담당한다.

TERM
KV 캐시 (Key-Value cache)
트랜스포머가 이미 계산한 과거 토큰의 Key·Value 텐서를 저장해 두고 재활용하는 기법. 다시 계산하지 않아 자기회귀 생성이 빨라진다. ABot-World는 이걸 '프레임'에 적용해, 지나간 프레임을 매번 다시 안 그려도 되게 만든다.

핵심 설계 ⑤ — 참조 슬롯으로 '세계를 기억'

ref_num_slots: 5 — 참조 이미지의 latent를 5개 슬롯에 캐시해, 장면이 바뀌어도 세계의 일관성을 유지하는 메모리 역할을 한다. 슬롯마다 별도 RoPE(위치 인코딩)를 부여해, 장면 고착(lock-in) 없이 새 장면을 확장할 수 있게 한다.

5디렉토리 구조 해부

'모델 코어(wan/)'와 '실시간 데모(web_client/)'가 두 기둥
ABot-World/ ├── configs/ │ ├── long_forcing_dmd.yaml ★ 메인 설정(디노이즈 스텝·로컬어텐션·참조슬롯) │ └── default_config.yaml VAE(taew2_2)·FP8 GEMM·양자화 타입 ├── pipeline/ │ └── causal_inference.py ★ CausalInferencePipeline: KV캐시 자기회귀 스트리밍(822줄) ├── wan/modules/ Wan2.2에서 벤더링/개조한 모델 코어 │ ├── causal_model.py ★ CausalWanModel: causal DiT(2605줄) │ ├── model.py WanModel 원본 + SimpleAdapter(액션 어댑터) │ ├── attention.py flash/sage attention 래퍼 │ ├── sla_attn.py / sla_kernel.py Sparse Linear Attention triton 커널 │ ├── vae2_2.py Wan2.2 VAE(인코더) │ ├── taehv.py TAEHV 경량 스트리밍 VAE(디코더) │ └── t5.py / tokenizers.py umt5-xxl 텍스트 인코더 ├── quantizer/ AngelSlim(Tencent) 기반 DiT 양자화 │ └── quant/ fp8/int8/mxfp4/nvfp4 양자화 함수 ├── utils/ │ ├── wan_wrapper.py 모델/텍스트/VAE 래퍼 │ ├── memory.py DynamicSwapInstaller(VRAM 스왑) │ └── scheduler.py / misc.py ├── scripts/inference.py CLI 벤치/추론(15종 양자화 비교) ├── web_client/ ★ Gradio+Flask 실시간 데모 │ ├── app.py / run.sh 진입점(포트 2233) │ ├── inference.py 워커 스레드·프레임 큐·콜백 │ ├── pipeline_loader.py 파이프라인 로드, 블록→프레임 디코드 │ ├── keyboard.py / state.py │ └── scene_presets.yaml 참조이미지+프롬프트 프리셋 ├── index.html / js / css 랜딩 페이지 └── requirements.txt · LICENSE(Apache 2.0) · NOTICE

구조를 읽는 요령: wan/modules/"무엇을 생성하는가"(모델), web_client/"어떻게 실시간으로 서빙하는가"(시스템)다. 연구자는 앞을, 엔지니어는 뒤를 먼저 보면 된다. 두 세계를 잇는 다리가 pipeline/causal_inference.py다.

6학습 포인트

이 저장소 하나로 '생성모델 연구'와 '실시간 추론 엔지니어링'을 동시에 배운다

기술별로 배울 것

주제이 레포에서 배울 수 있는 것
자기회귀 영상 생성KV 캐시 + 블록 단위 생성으로 '무한 스트리밍'하는 실제 구현(generate_next_block)
Diffusion 증류DMD로 diffusion을 4-step까지 압축해 실시간화하는 config·기법
조건 주입이산 키입력을 latent 컨트롤맵으로 바꾸는 PixelUnshuffle+Conv 어댑터 패턴
저정밀 추론FP8 per-token GEMM, PTQ 양자화, Sparse Attention, 경량 VAE로 VRAM 19GB 달성
실시간 서빙워커 스레드 + 프레임 큐 + WebSocket으로 브라우저 저지연 스트리밍
메모리 관리DynamicSwapInstaller로 VRAM 부족 시 모듈을 동적 스왑하는 기법

실습 아이디어(맛보기)

7하드웨어 / 시스템 요구사항

"소비자 GPU 1장"이지만, 그 소비자 GPU가 최상급이라는 점

"데스크탑 GPU 한 장"이라는 말은 사실이지만, 그 한 장이 NVIDIA RTX 5090(Blackwell)이라는 전제가 붙는다. 실측 기준 720p·16FPS·1.2초 지연에 약 19GB VRAM을 쓴다.

항목요구/실측
권장 GPUNVIDIA RTX 5090 (Blackwell) — 검증 환경
VRAM 사용약 19GB (720p·16FPS 실측)
저메모리 대응VRAM 40GB 미만이면 DynamicSwapInstaller 동적 스왑 자동 활성(LOW_MEMORY_THRESHOLD_GB=40)
OS / CUDAUbuntu 22.04 · CUDA 13.3 · torch cu129 빌드
컴파일 필요flash_attn·sageattention(2/3)·triton 커널 — 최신 CUDA/컴파일러 환경
정밀도 커널FP8/NVFP4는 Ada/Hopper/Blackwell급 GPU 전제
체크포인트Wan2.2_VAE·taew2_2·umt5-xxl·diffusion 가중치 5종 다운로드 필요
주의
"단일 GPU"의 함정

이 프로젝트의 "single desktop GPU"는 일반 노트북 GPU가 아니다. FP8/NVFP4 저정밀 커널이 최신 아키텍처(Blackwell)에 최적화돼 있어, 구형 GPU에서는 커널 빌드 자체가 안 되거나 속도가 크게 떨어질 수 있다. VRAM 40GB 미만이면 동적 스왑으로 돌아가긴 하지만 지연이 늘어난다. "내 3060에서도 되겠지"라는 기대는 접는 게 안전하다.

8직접 해볼 수 있는 실습 과제

난이도별로, GPU가 없어도 개념은 따라갈 수 있게
LEVEL 1 · 입문GPU 없이 가능

프론트엔드 디버그 모드로 UI만 돌려보기

ABOTWORLD_DEBUG_FRONTEND=1 bash web_client/run.sh — 모델을 로드하지 않고 웹 UI·키 HUD·WebSocket 구조만 띄운다. 실시간 서빙이 브라우저와 어떻게 통신하는지, 네트워크 탭으로 프레임 스트림 구조를 관찰하자.

LEVEL 2 · 초급

config를 읽고 '실시간 예산'을 계산해 보기

long_forcing_dmd.yaml에서 num_frame_per_block=3, denoising_step_list(4스텝), local_attn_size=21을 찾아, "16FPS를 맞추려면 블록당 몇 ms 안에 생성해야 하는가"를 손으로 계산해 본다. 실시간 시스템의 예산 감각을 익히는 훈련이다.

LEVEL 3 · 중급RTX 5090급 필요

참조 이미지·프롬프트 바꿔 나만의 세계 만들기

web_client/scene_presets.yaml에 새 프리셋(참조 이미지 + 프롬프트)을 추가하고 실행해, 같은 액션이 다른 세계에서 어떻게 해석되는지 비교한다. '앞으로 가기'가 숲에서와 복도에서 어떻게 달라지는지 관찰.

LEVEL 4 · 고급

양자화 벤치마크 돌려 품질↔속도 곡선 그리기

scripts/inference.py는 15종 양자화(FP8·INT8·NVFP4 등)를 비교한다. 각 설정의 FPS·VRAM·화질을 표로 만들어, "어느 양자화가 실시간 예산을 만족하면서 품질 손실이 가장 작은가"를 찾는다.

LEVEL 5 · 심화

액션 어댑터를 새 입력으로 확장하기

SimpleAdapterset_act를 읽고, 8키 외에 '마우스 이동' 같은 연속 입력을 어떻게 32채널 컨트롤맵에 끼워 넣을지 설계해 본다. 조건화 어댑터의 일반화 원리를 체득하는 과제.

9관련 기술 심화 학습 로드맵

주차별로, '영상 생성'에서 '실시간 월드 모델'까지
주차주제핵심 개념
1주차Diffusion 기초노이즈 예측·역확산·스케줄러. DDPM/DDIM 개념
2주차Latent Diffusion + VAE픽셀이 아닌 latent에서 생성하는 이유. VAE 인코더/디코더
3주차DiT & 영상 생성트랜스포머 백본, Wan/Sora 계열, 시공간 어텐션
4주차Diffusion 증류DMD·Consistency·LCM — 스텝 수를 줄여 실시간화하는 법
5주차자기회귀 생성 & KV 캐시causal 마스킹, 로컬/슬라이딩 윈도우 어텐션
6주차월드 모델Genie·Oasis·GameNGen — 액션 조건부 시뮬레이션
7주차저정밀 추론FP8/INT8 양자화, PTQ, Sparse Attention 커널
8주차실시간 서빙스트리밍 파이프라인, WebSocket, 프레임 큐·워커

10핵심 키워드 사전

딥다이브에 나온 용어를 한 줄씩
용어의미
world model월드 모델. 환경의 작동 규칙을 학습해 다음 상태를 예측·시뮬레이션하는 모델
action-conditioned액션 조건부. 사용자 입력(키)을 조건으로 받아 다음 프레임을 생성
autoregressive자기회귀. 과거만 참조해 다음 조각(프레임/토큰)을 순차 생성
KV cache과거 토큰의 Key·Value를 저장·재사용해 순차 생성을 가속하는 캐시
local attention로컬 어텐션. 최근 N프레임(=21)만 참조해 무한 길이에서도 비용 상한 고정
DiTDiffusion Transformer. U-Net 대신 트랜스포머를 쓰는 diffusion 백본
DMDDistribution Matching Distillation. diffusion을 소수 스텝으로 증류하는 기법
infinite rollout무한 롤아웃. 고정 길이 한계 없이 세계를 끝없이 이어 생성
scene lock-in장면 고착. 롤아웃이 길어질수록 한 장면에 갇히는 실패 — LongForcing으로 완화
LongForcingABot-World의 학습 기법. 긴 롤아웃에서도 새 장면 확장을 유도
VAE영상을 저차원 latent로 압축·복원하는 인코더/디코더. TAEHV는 고속 스트리밍 디코더
FP8 quantization가중치·연산을 8비트 부동소수로 낮춰 VRAM·연산을 줄이는 저정밀 추론
SimpleAdapter키 입력을 DiT latent 공간의 컨트롤맵으로 정렬해 주입하는 어댑터 모듈
DynamicSwapInstallerVRAM 부족 시 모듈을 CPU↔GPU 동적 스왑해 큰 모델을 작은 메모리에 올리는 도구

11참고 링크

원문으로 더 파고들기