비디오 생성 SOTA

Wan2.2 기술 심층 분석

Diffusion Transformer (DiT)를 기반으로 Flow MatchingMixture-of-Experts (MoE)를 통합한 차세대 비디오 생성 모델.

아키텍처 개요

Wan2.2는 엔드투엔드 비디오 생성 시스템입니다. 기존 U-Net을 버리고 DiT 아키텍처를 채택하여 긴 비디오 시퀀스 토큰을 처리합니다. 파라미터 수는 27B에 달하지만, MoE 희소 활성화 메커니즘 덕분에 추론 시 VRAM 사용량은 14B 모델과 동일합니다.

통합 입력 (VCU)

텍스트, 프레임, 마스크를 통합 인코딩합니다.

효율적인 시공간 압축

Wan-VAE는 4×8×8 압축률을 달성하여 정보 압축 배수 256배에 도달합니다.

다국어 이해

umT5 인코더를 사용하여 중영 이중 언어 프롬프트를 기본 지원합니다.

데이터 흐름 파이프라인

비디오 입력
텍스트 프롬프트
Wan-VAE 인코더
3D Causal Conv
umT5 인코더
Text Embedding
DiT 코어
플로우 매칭
MoE 전환
Wan-VAE 디코더
Reconstruction

시공간 VAE: 압축의 예술

비디오 데이터는 높은 중복성을 포함합니다. Wan-VAE는 3D 컨볼루션을 통해 시공간 차원의 동시 압축을 실현했습니다.
->

핵심 기술 세부 사항:

  • 인과적 3D 컨볼루션 (Causal 3D Conv): 프레임 인코딩이 이전 프레임에만 의존하도록 보장합니다.
  • 하이브리드 손실 함수: L1, KL, LPIPS 및 GAN 손실의 결합.
  • 특징 캐시 (Feature Cache): 이전 타임스텝의 특징을 캐시하여 무한 길이 비디오 생성을 지원합니다.

Flow Matching 원리

시각적 비교: Flow Matching vs. 전통적 확산

Wan2.2는 Flow Matching을 채택했습니다. 생성 궤적은 직선(Optimal Transport Path)이며, 전통적 확산 모델의 "무작위 보행" 경로보다 효율적이고 훈련이 안정적입니다.

입력 Noise
출력 Video
Flow Matching (직선)
전통적 확산 (무작위)

훈련 목표 공식:

모델이 속도 벡터를 직접 예측합니다.

왜 Flow Matching인가?

전통적인 확산 모델(DDPM)은 확률 미분 방정식(SDE)을 시뮬레이션하며 경로가 구불구불합니다. Flow Matching은 노이즈에서 데이터로 가는 결정론적 상미분 방정식(ODE)을 구축합니다. 직선 경로는 더 큰 스텝 크기(20-50 스텝)를 허용합니다.

수학적 정의

  • 1. 보간 경로:
  • 2. 벡터 필드:
  • 3. 손실 함수:

Mixture-of-Experts (MoE) 아키텍처

Wan2.2의 MoE는 어휘 확장을 위한 것이 아니라 노이즈 제거 과정의 시간 차원에 특화되어 있습니다. 비디오 생성 초기(구도)와 후기(세부 사항)에는 서로 다른 능력이 필요합니다.

인터랙티브 데모: MoE 동적 전환

총 파라미터: 27B | 활성: 14B
순수 노이즈 (Input) 생성 비디오 (Output)
초기 노이즈 제거 (High Noise) 정밀화 단계 (Low Noise)
현재 타임스텝 1.00

활성 모델

고노이즈 전문가

집중 작업

전역 레이아웃 및 구조

전환 임계값
t

전역 레이아웃 및 구조

전문가 분업표

구성 요소고노이즈 전문가저노이즈 전문가
활성화 조건낮은 SNR (초기)높은 SNR (후기)
주요 역할큰 움직임, 장면 레이아웃질감, 조명 세부 사항
훈련 전략처음부터 훈련Wan2.1 기반 미세 조정

코드 구현

다음 코드는 Hugging Face `diffusers` 라이브러리를 사용하여 Wan2.2 모델을 로드하고 비디오를 생성하는 방법을 보여줍니다. MoE 가중치 전환은 내부적으로 자동 처리됩니다.

Python 추론 코드 (Diffusers)
import torch
from diffusers import WanPipeline
from diffusers.utils import export_to_video

# 1. 모델 로드 (MoE 가중치 자동 로드)
# 다음 코드는 Hugging Face `diffusers` 라이브러리를 사용하여 Wan2.2 모델을 로드하고 비디오를 생성하는 방법을 보여줍니다. MoE 가중치 전환은 내부적으로 자동 처리됩니다.
pipe = WanPipeline.from_pretrained(
    "Wan-AI/Wan2.2-T2V-A14B-Diffusers",
    torch_dtype=torch.bfloat16
)

# 2. VRAM 절약을 위한 CPU 오프로드 활성화
pipe.enable_model_cpu_offload()

# 3. 비디오 생성 (Flow Matching은 약 50스텝 필요)
prompt = "A cinematic drone shot of a futuristic city with flying cars, neon lights, 4k, high quality."
output = pipe(
    prompt=prompt,
    height=720,
    width=1280,
    num_inference_steps=50,
    guidance_scale=5.0
).frames[0]

# 4. 결과 저장
export_to_video(output, "wan_futuristic_city.mp4")