Emu3: 이미지와 영상 생성을 위한 다음 토큰 예측(Next-Token Prediction for Image and Video Generation)
BAAI의 Emu3(Wang et al., 2024년 9월)는 확산(diffusion) 대 자기회귀(autoregressive) 논쟁을 끝냈어야 할 2024년의 결과입니다. Llama 스타일 디코더 전용 트랜스포머(Llama-style decoder-only transformer) 하나가, 텍스트와 벡터 양자화(Vector Quantization; VQ) 이미지 토큰, 그리고 3D VQ 영상 토큰으로 구성된 통합 어휘(unified vocabulary) 위에서 오로지 다음 토큰 예측(Next-Token Prediction; NTP) 목적함수만으로 학습되어, 이미지 생성에서는 SDXL을 이기고 인지(perception)에서는 LLaVA-1.6을 이겼습니다. CLIP 손실(loss)도 없습니다. 확산 일정(diffusion schedule)도 없습니다. 추론 시 품질 향상을 위해 분류기-자유 가이던스(Classifier-Free Guidance; CFG)를 사용하지만, 핵심 학습 목적함수는 교사 강요(teacher forcing) 기반의 다음 토큰 예측입니다. Nature에 게재되었습니다. 이 lesson에서는 Emu3의 주장(thesis), 즉 더 나은 토크나이저(tokenizer)와 충분한 규모(scale)만 있으면 된다는 명제를 읽고, 확산 접근법과 대비합니다.
유형: Learn
언어: Python (표준 라이브러리, 3D 영상 토크나이저 수식과 자기회귀 샘플러 골격)
선수 지식: Phase 12 · 11 (Chameleon)
예상 시간: 약 120분
학습 목표
- 이미지 품질을 위해서는 확산이 필요하다는 오랜 가정에도 불구하고, Emu3의 단일 손실(single-loss) 기반 다음 토큰 예측 목적함수가 작동하는 이유를 설명할 수 있습니다.
- 3D 영상 토크나이저를 설명할 수 있습니다. 시공간(spatiotemporal) VQ 코드북(codebook)이 어떤 모습이며, 왜 패치(patch)가 시간 축까지 가로지르는지 설명할 수 있습니다.
- Emu3와 Stable Diffusion XL을 학습 연산량(training compute), 추론 비용(inference cost), 품질 한계(quality ceiling) 관점에서 비교할 수 있습니다.
- 같은 Emu3 모델이 수행하는 세 가지 역할을 말할 수 있습니다. 즉 Emu3-Gen(이미지 생성), Emu3-Chat(인지), Emu3-Stage2(영상 생성)입니다.
문제
2024년까지의 통념은 이미지 생성에는 확산이 필요하다는 것이었습니다. 그 논리는 이러했습니다. 이산(discrete) 이미지 토큰은 세부 묘사를 복원하기에 정보 손실이 너무 크고, 자기회귀 샘플링은 수천 개의 토큰을 거치는 동안 오류가 누적된다는 것입니다. Stable Diffusion, DALL-E 3, Imagen, Midjourney는 모두 어떤 형태로든 확산을 사용합니다. Chameleon(Lesson 12.11)은 작은 규모에서 이 주장을 일부 반박했지만, 품질 면에서는 SDXL과 어깨를 나란히 하지 못했습니다.
Emu3는 이 주장에 정면으로 맞섰습니다. 주장은 다음과 같습니다. 더 나은 시각 토크나이저(visual tokenizer)와 충분한 규모, 그리고 다음 토큰 예측 손실이 결합되면, 인지까지 함께 수행하는 같은 모델 안에서 확산을 능가하는 이미지 생성이 가능하다는 것입니다.
발표 당시에는 이 도박이 논쟁적이었습니다. 그러나 2년이 지난 지금, 오픈소스 통합 생성(unified-generation) 계열인 Emu3, Show-o, Janus-Pro, Transfusion은 연구의 기본 경로가 되었습니다. 프로덕션 최전선 모델들도 이 계열의 어떤 변형을 사용하는 것으로 보입니다.
개념
Emu3 토크나이저
핵심 재료는 시각 토크나이저입니다. Emu3는 토큰당 8x8 해상도 축소 비율을 갖는 자체 IBQ(Inverse Bottleneck Quantizer) 계열 토크나이저(SBER-MoVQGAN family)를 학습합니다. 512x512 이미지는 코드북 크기 32768에서 64x64 = 4096개의 토큰이 됩니다.
이는 Chameleon이 K=8192 코드북에서 512x512 이미지당 1024 토큰을 만들던 것보다 큰 수치입니다. 그러나 토큰당 비용은 더 낮습니다. 코드북 조회가 더 작고 코덱(codec)이 더 단순하기 때문입니다. 핵심 지표는 재구성 PSNR 30.5 dB로, Stable Diffusion의 연속 잠재 공간(continuous latent space)이 보여주는 32 dB와 견줄 만한 수준입니다.
영상의 경우 3D VQ 토크나이저가 시공간 패치(4x4x4 픽셀)를 하나의 정수로 인코딩합니다. 8 FPS에서 4초짜리 클립은 32 프레임이며, 256x256 해상도에서 공간 4배, 시간 4배 축소를 적용하면 토큰 수는 (256/4) * (256/4) * (32/4) = 64 * 64 * 8 = 32,768개가 됩니다.
토크나이저의 품질이 곧 천장입니다. Emu3의 기여 가운데 한 축은 "우리가 매우 좋은 토크나이저를 학습했다"는 점입니다.
단일 손실(single-loss) 학습
Emu3는 하나의 목적함수만 사용합니다. 텍스트 토큰, 2D 이미지 토큰, 3D 영상 토큰을 모두 아우르는 공유 어휘(shared vocabulary) 위에서 다음 토큰 예측을 수행합니다. 양식(modality)별 기여도를 균형 맞추기 위해 학습 중 양식별 계수로 가중치를 곱하지만, 손실 함수 자체는 동일합니다.
학습 데이터 구성은 다음과 같이 섞어 사용합니다.
- 이미지 생성:
<text caption> <image> image_tokens </image>
- 이미지 인지:
<image> image_tokens </image> <question> text_tokens
- 영상 생성:
<text caption> <video> video_tokens </video>
- 영상 인지: 위와 유사한 구조입니다.
- 텍스트 전용: 표준 NTP입니다.
모델은 데이터 분포로부터 언제 이미지 토큰을 내보내고 언제 텍스트 토큰을 내보내야 하는지 학습합니다. <image> 태그 뒤에서 이미지 토큰을 예측하는 과정에서 생성(generation) 능력이 자연스럽게 발현됩니다.
분류기-자유 가이던스와 온도
자기회귀 이미지 생성은 추론 시 분류기-자유 가이던스(Classifier-Free Guidance; CFG)를 적용하면 훨씬 좋아집니다. Emu3 역시 이를 사용합니다. 한 번은 전체 캡션으로, 한 번은 빈 캡션으로 두 번 생성한 뒤, 가이던스 가중치(guidance weight)로 두 로짓(logit)을 섞습니다. 일반적인 가중치는 3.0에서 7.0 사이입니다. 이는 확산에서 쓰던 CFG 기법을 자기회귀 설정으로 그대로 가져온 것입니다.
온도(temperature)도 중요합니다. 너무 높으면 아티팩트(artifact)가 생기고, 너무 낮으면 모드 붕괴(mode collapse)가 발생합니다. Emu3가 권장하는 온도는 인지에서는 1.0, 이미지 생성에서는 0.8입니다.
세 가지 역할, 하나의 모델
Emu3는 기능적으로 서로 다른 세 가지 API로 제공되지만, 그 아래에 깔린 가중치(weight) 집합은 단 하나입니다.
- Emu3-Gen. 이미지 생성입니다. 텍스트를 입력받아 이미지 토큰을 출력합니다.
- Emu3-Chat. 시각 질의응답(Visual Question Answering; VQA)과 캡셔닝(captioning)입니다. 이미지 토큰을 입력받아 텍스트를 출력합니다.
- Emu3-Stage2. 영상 생성과 영상 VQA입니다. 텍스트 또는 영상을 입력받아 텍스트 또는 영상을 출력합니다.
태스크별 헤드(task-specific head)는 없습니다. 프롬프트 템플릿(prompt template)만 다를 뿐, 체크포인트(checkpoint)는 같습니다.
벤치마크
Emu3 논문(2024년 9월)에서 보고된 결과입니다.
- 이미지 생성: MJHQ-30K FID에서 SDXL을 앞섭니다(5.4 vs 5.6). GenEval 전체는 0.54 vs 0.55로 통계적으로 비슷합니다. Deep-Eval 종합 평가에서도 유사한 수준입니다.
- 이미지 인지: VQAv2에서 LLaVA-1.6을 이깁니다(75.1 vs 72.4). MMMU에서는 대략 비슷한 수준입니다.
- 영상 생성: 4초 클립 품질에서 Sora 시대에 공개적으로 벤치마크된 모델들과 견줄 만한 FVD(Fréchet Video Distance) 점수를 보입니다.
수치가 모든 항목에서 이기는 것은 아닙니다. Emu3는 어떤 지점에서는 한 점을 얻고 다른 지점에서는 한 점을 잃습니다. 그러나 "다음 토큰 예측만으로 충분하다(next-token prediction is all you need)"는 주장은 여러 양식에 걸쳐 방어할 수 있습니다.
연산 비용
Emu3는 약 3,000억(300B)개의 멀티모달 토큰으로 7B 파라미터 모델을 학습했습니다. 사용된 GPU 시간(GPU-hour)은 Llama-2-7B 사전학습과 대략 비슷한 수준으로, A100급 실리콘 기준 약 2,000~4,000 GPU년(GPU-year) 정도입니다. Stable Diffusion 3 같은 확산 모델도 유사한 예산으로 학습되지만, 별도의 텍스트 인코더(text encoder)와 더 복잡한 파이프라인이 필요합니다.
추론 시에는 이미지 한 장당 Emu3가 SDXL보다 느립니다. 4096개 이미지 토큰을 초당 30 토큰(30 tok/s)으로 생성하면 512x512 한 장에 약 2분이 걸리는 반면, SDXL은 같은 해상도를 2~5초에 만들어냅니다. 추측 디코딩(speculative decoding)과 KV 캐시(KV-cache) 최적화가 격차를 좁히기는 하지만 완전히 없애지는 못합니다. 자기회귀 이미지 생성은 연산이 많이 드는 작업이며, 이는 현재까지 남아 있는 트레이드오프입니다.
왜 중요한가
Emu3의 깊은 기여는 개념적입니다. 다음 토큰 예측이 이미지 생성에서 확산과 맞먹는 수준까지 규모 확장된다면, 통합 모델 경로(unified-model path), 즉 하나의 손실, 하나의 백본(backbone)으로 모든 양식을 처리하는 길이 가능해집니다. 미래의 모델들은 별도의 텍스트 인코더, 별도의 확산 스케줄러(diffusion scheduler), 별도의 VAE를 필요로 하지 않을 수 있습니다. 트랜스포머 하나, 양식별 토크나이저 하나, 그리고 규모 확장만으로 충분해집니다.
Show-o, Janus-Pro, InternVL-U는 모두 이 명제를 계승하거나 도전합니다. 2025년에 이르기까지 중국 연구소들(BAAI, DeepSeek)이 미국 연구소들보다 이 방향으로 훨씬 더 적극적으로 결과를 공개해 왔습니다.
사용해보기
code/main.py는 두 가지 장난감(toy) 예제를 만듭니다.
- 2D 대 3D VQ 토크나이저 토큰 수 계산기입니다.
(해상도, 패치, 클립 길이, FPS)가 주어지면 이미지와 영상의 토큰 수를 계산합니다.
- 분류기-자유 가이던스와 온도를 사용하는 자기회귀 이미지 토큰 샘플러(sampler)입니다.
CFG 구현은 Emu3의 레시피와 동일합니다. 조건부 로짓과 무조건부 로짓을 가이던스 가중치로 섞습니다.
산출물 만들기
이 lesson은 outputs/skill-token-gen-cost-analyzer.md를 만듭니다. 생성 제품 사양(이미지 또는 영상, 목표 해상도, 품질 등급, 지연 시간 예산)이 주어지면 토큰 수, 추론 비용을 계산하고 Emu3 계열과 확산 가운데 하나를 선택합니다.
연습문제
-
쉬움: Emu3는 8x8 축소 비율에서 512x512 이미지당 4096개의 토큰을 만듭니다. 1024x1024와 2048x2048에서의 토큰 수를 계산하세요. 추론 지연 시간에는 어떤 일이 생깁니까?
-
중간: Emu3 논문 3.3절을 읽고, 영상 토크나이저의 3D VQ 패치 형태를 설명하세요. 왜 8x8x1이 아니라 4x4x4 형태인지 설명하세요.
-
중간: 분류기-자유 가이던스 가중치 5.0과 3.0은 어떤 시각적 효과 차이를 만들어냅니까? code/main.py의 수식을 따라가며 설명하세요.
-
어려움: 3,000억 토큰에서 Emu3-7B의 학습 FLOPs를 계산하고 Stable Diffusion 3와 비교하세요. 어느 쪽이 학습에 더 많은 비용이 들었습니까?
-
어려움: Emu3는 FID에서는 SDXL을 이기지만, 전문 시각 언어 모델(Vision-Language Model; VLM) 대비 VQAv2에서는 늘 이기는 것은 아닙니다. 통합 손실(unified-loss) 접근이 벤치마크마다 전문가 모델과 서로 다른 강점을 보이는 이유를 설명하세요.
핵심 용어
| 용어 | 흔한 설명 | 실제 의미 |
|---|
| 다음 토큰 예측(Next-Token Prediction; NTP) | "NTP" | token[0..i]가 주어졌을 때 token[i+1]을 예측하는 표준 자기회귀 손실입니다. 토큰화만 되어 있다면 어떤 양식에도 적용할 수 있습니다. |
| IBQ 토크나이저(IBQ tokenizer) | "Inverse bottleneck quantizer" | 더 큰 코드북(32768 이상)과 Chameleon보다 나은 재구성 품질을 가진 VQ-VAE 계열 토크나이저입니다. |
| 3D VQ | "Spatiotemporal quantizer" | (시간, 행, 열)로 색인되는 코드북이며, 토큰 하나가 4x4x4 픽셀 큐브를 덮습니다. |
| 분류기-자유 가이던스(Classifier-Free Guidance; CFG) | "CFG" | 조건부 로짓과 무조건부 로짓을 감마(gamma) 가중치로 섞어 추론 시 이미지 품질을 끌어올리는 기법입니다. |
| 통합 어휘(unified vocabulary) | "Shared tokens" | 텍스트, 이미지, 영상이 모두 같은 정수 공간에서 뽑히며, 모델은 다음에 올 양식을 직접 예측합니다. |
| MJHQ-30K | "Image gen benchmark" | 3만 개 프롬프트로 구성된 Midjourney 품질 벤치마크이며, Emu3는 여기서 FID를 보고합니다. |
더 읽을거리