FlashForward가 디노이징 중 KV 캐시를 재사용해 자기회귀 영상 생성을 가속한다
In-Flight KV Cache with Clean Anchors for Faster Autoregressive Video Diffusion
무엇인가
자기회귀 영상 확산 모델은 영상을 시간 청크로 쪼개 청크 단위로 생성하고, 각 청크는 소수의 디노이징 스테이지를 거친다. 문제는 이미 만든 청크를 기억하기 위한 KV 캐시다. Self-Forcing은 청크를 완성한 뒤 clean 출력을 모델에 다시 통과시켜 캐시를 만들고, HiAR은 덜 노이즈한 컨텍스트에 조건화해 세그먼트를 겹쳐 실행하지만 매 디노이징 스테이지마다 재인코딩한다. 두 방식 모두 출력 latent를 진행시키지 않는 '캐시 갱신 전용 forward'를 지불한다. 디노이징 스테이지 수가 몇 개로 줄어든 few-step 설정에서는 이 부가 비용이 상대적으로 더 큰 병목이 된다. 논문은 이를 cross-chunk state contract, 즉 각 청크가 어떤 표현을 어떤 노이즈 수준으로 게시하고 언제 이후 청크가 소비할 수 있는가라는 설계 문제로 정식화한다.
어떻게 동작하나
핵심 관찰은 단순하다. 모든 디노이징 forward가 이미 현재 청크의 in-flight KV를 계산하고 있다는 것. FlashForward는 이 캐시를 그대로 재사용한다. 렌더러 forward는 현재 청크의 노이즈 latent를 입력받아 같은 스테이지의 이전 청크 KV와 근처 앵커의 clean KV를 읽고, velocity를 예측해 latent를 진행시키면서 동시에 자신의 KV를 같은 스테이지 뱅크에 게시한다. 논문의 식 (2)가 이 동작을 그대로 담는다. (v̂, K, V) = F_R(x, c, τ_k; A_Γ(i), B_k^(i))이고, B_k^(i+1) = Tail_H(B_k^(i) ∪ (i, K, V))로 최근 H개 청크만 남긴다. 렌더러 쪽에는 캐시 갱신 전용 forward가 하나도 없다. 같은 스테이지끼리 의존성이 생기므로 스테이지마다 GPU를 하나씩 배정하면 서로 다른 청크가 서로 다른 스테이지에서 동시에 도는 anti-diagonal 웨이브프런트가 형성된다.
무엇과 다른가
대가는 품질이다. 스테이지 매칭 히스토리는 아직 끝나지 않은 노이즈 청크에서 나오므로 외형과 모션의 불확실성을 청크 경계 너머로 전파한다. 그래서 FlashForward는 희소한 보조 clean 앵커를 미리 만든다. 81개 latent 프레임 예시에서 플래너는 {0, 10, ..., 80} 위치의 앵커 9개를 3개씩 먼저 생성하고, 완료된 블록마다 캐시 추출 forward 한 번으로 clean anchor KV를 게시한다. 렌더러 청크 i는 Γ(i)가 고른 좌우 앵커 KV와 최근 H개 청크의 스테이지 매칭 히스토리를 함께 조건으로 받아 81개 위치를 3-latent 청크 27개로 렌더링한다. 두 메모리는 시간 스케일이 다르다. 희소 clean anchor KV는 장거리 조악 구조를, 밀집 stage-matched history는 최근의 세밀한 변화를 담당한다. 플래너 전이 하나가 30 latent를 진행시키는 동안 렌더러 전이는 3 latent만 진행하므로 자기회귀 깊이가 거의 10분의 1로 줄어든다. 실험 설정은 B_P=B_R=3, Δ=10, S=4, 컨텍스트 예산 W_ctx=21, 렌더러 히스토리 H=5, 플래너 히스토리 H_P=6이다.
어떻게 쓰나
학습은 하나의 백본을 플래너와 렌더러 두 역할로 공유하되 역할 임베딩과 LoRA 어댑터로 전문화한다. 1단계 packed 지도 미세조정은 실제 영상에서 두 역할을 함께 학습한다. 플래너 블록은 이전 블록의 clean KV에 causal attention을 하고, 렌더러 타깃은 Γ(i)가 허용한 clean anchor KV와 같은 노이즈 레벨의 이전 H개 청크에 attention한다. 앵커가 희소하므로 클립을 시간 오프셋에서 크롭하는 time-rebase 증강을 쓴다. 2단계 self-rollout 증류는 추론과 같은 자기 생성 컨텍스트에서 플래너 롤아웃 후 전체 클립을 렌더링하며 distribution-matching 증류 목적함수를 적용한다. 이때 렌더러는 청크별 캐시 업데이트가 아니라 블록 causal forward로 구현해 그래디언트가 이후 청크에서 이전 청크로, 다시 렌더러에서 플래너로 흐르게 한다.
전제와 한계
실험은 Wan2.1-T2V-1.3B를 기반으로 생성 캡션이 붙은 256K Shutterstock 영상에서 학습했고, 클립당 81 latent(16 FPS에서 321 RGB 프레임)를 쓴다. SFT 1,800 스텝, 증류 100 스텝, 배치 크기 128이다. 최대 4개 GPU에서 20초 이상 16 FPS 영상 기준으로 HiAR보다 1.16~1.69배, Self-Forcing보다 1.42~2.92배 빠르며, 1.3B와 14B, 480p와 720p의 모든 모델-해상도 조합에서 가장 빠른 자기회귀 스케줄이다. 품질은 1.3B 480p에서 VBench-1.0 Total 0.838로 Self-Forcing 0.805, HiAR 0.821을 앞서고 Quality 점수도 최고이며 Semantic은 증류 자기회귀 기법 중 가장 높다. VBench-Long의 20초, 35초, 65초 구간에서도 모든 길이에서 Total과 Quality 1위를 유지해 길이가 늘어도 품질이 안정적이다.
분석에서 드러나는 설계상의 타협도 흥미롭다. 플래너 앵커를 그대로 출력에 쓰면 더 저렴하지만 앵커 위치에 주기적 이음새가 생긴다. 플래너 앵커 KV를 재사용하든, 앵커 latent를 렌더러 역할에 넣어 렌더러 측 KV를 얻든 비슷한 이음새가 나타난다. 그래서 렌더러가 모든 최종 위치를 다시 생성하고 clean anchor KV는 조건으로만 쓴다. 절제 실험에서 stage-matched history만 쓰면 깜빡임이 너무 심해 VBench가 temporal flickering 차원을 채점하지 못했고, clean history와 future만 쓰면 Self-Forcing의 변형이 되어 드리프트는 완화되지만 지연이 크다. 둘을 결합했을 때만 품질과 속도를 함께 얻는다. time-rebased 지도는 증류 초기화를 개선하고, 역할 전문화는 앵커와 비앵커 경계의 이음새를 줄인다.
한계는 저자들이 명시한다. 이 방법은 다중 GPU에서의 장시퀀스 few-step 생성을 겨냥하며, 플래너와 파이프라인 워밍업 때문에 짧은 영상에서는 이득이 줄고 단일 GPU 추론은 웨이브프런트 병렬성을 전혀 활용하지 못한다. 학습 데이터가 실제 영상뿐이라 사실적 콘텐츠로 편향되어 애니메이션과 스타일화 도메인 성능이 제한될 수 있다. 앵커 스트라이드, 조건 윈도우, 학습 레시피는 고정되어 있고, clean anchor-state 가정 완화와 앵커 선택 적응은 향후 과제다. KV 선택·압축, RoPE 수정, 안티드리프트 기법, 앵커로 구분된 구간의 병렬 생성과의 결합도 열린 문제로 남긴다.
실무 관점에서 이 논문이 주는 교훈은 캐시를 '얼마나 잘 압축하나'보다 '언제 게시하고 언제 소비하나'가 지연을 결정한다는 것이다. 긴 영상 생성 파이프라인에서 캐시 갱신 전용 forward가 병목이라면, 상태 계약을 바꿔 그 forward를 생성 자체에 흡수시키는 접근을 검토할 만하다. 다만 다중 GPU 스테이지 파이프라인과 충분히 긴 출력이 전제이고, 워밍업 비용과 앵커 스트라이드·조건 윈도우 같은 하이퍼파라미터를 자기 워크로드에 맞춰 다시 튜닝해야 한다. 품질 수치는 1.3B 480p에서만 보고되고 14B·720p는 지연만 측정됐다는 점도 도입 전에 확인해야 할 부분이다.