같은 노이즈 단계로 히스토리를 정렬해 스트리밍 영상 생성을 안정화한다
Self-Aligned Forcing: Streaming Video Diffusion with Differentiable Noisy History
무엇인가
자기회귀(Autoregressive) 영상 확산은 이전 블록의 키-값(K/V) 표현을 히스토리로 삼아 블록 단위로 영상을 이어 붙이기 때문에, 게임 엔진이나 월드 모델처럼 상호작용이 필요한 스트리밍 생성에 적합하다. 문제는 긴 롤아웃에서 오차가 누적된다는 점이다. Self-Forcing 계열은 모델이 자기 출력을 히스토리로 쓰게 해 학습-추론 간 격차(exposure bias)를 줄이지만, 학습 시 롤아웃 길이가 유한하기 때문에 그보다 훨씬 긴 구간에서 생기는 드리프트는 해결되지 않는다. Rolling Forcing이나 HiAR처럼 히스토리를 부분적으로 노이즈가 낀 상태에서 만드는 방법도 등장했지만, 이들은 히스토리를 그래디언트 계산에서 떼어낸 채(detach) 쓴다.
어떻게 동작하나
논문은 두 가지 관찰을 근거로 삼는다. 첫째, 히스토리 K/V의 노이즈 수준은 화질과 움직임을 맞바꾼다. LongLive 체크포인트로 추론 시 히스토리 노이즈 t_c만 바꿔 실험하면, 노이즈가 충분히 큰 히스토리는 VBench 동적 정도(dynamic degree)를 크게 높이지만 화질(imaging quality)이 떨어진다. 저자들은 노이즈가 많을수록 신호대잡음비(SNR)가 낮아져 히스토리가 현재 블록에 가하는 제약이 약해지고, 그 결과 오차 전파가 억제되는 동시에 움직임이 늘고 시간적 일관성이 줄어든다고 해석한다. 둘째, 히스토리를 detach하면 모델이 미래 블록을 위해 히스토리를 어떻게 인코딩할지 배울 수 없다. 모든 블록을 동시에 처리하는 양방향(bidirectional) 기준과 파라미터 그래디언트를 비교했을 때, 히스토리를 통과하는 그래디언트 경로를 복원하면 코사인 유사도가 0.643에서 0.972로 올라간다. 특히 키 프로젝션 W_k는 detach 상태에서 유사도가 약 0.2까지 떨어져, 모델이 미래 검색을 위한 히스토리 인코딩을 거의 학습하지 못한다는 것을 보여준다.
무엇과 다른가
Self-Aligned Forcing(SAF)의 핵심 설계는 단 하나다. 모든 디노이징 단계에서 히스토리를 현재 블록과 같은 노이즈 수준으로 가져온다. 그러면 블록 i가 읽는 히스토리는 앞선 블록 j가 같은 단계 s에서 자신의 예측을 위해 계산한 K/V와 정확히 같아진다. 덕분에 블록-인과(causal) 마스크 아래에서 한 번의 순전파로 모든 블록의 예측과 히스토리를 동시에 얻는다. 수식으로는 (X̂^(s), KV^(s)) = f_θ(sg(X^(s)), t_s; M_causal, p)이며, sg는 stop-gradient다. 히스토리를 캐시에서 불러오는 게 아니라 계산하기 때문에 파라미터에 대한 그래디언트가 두 항으로 나뉜다. 하나는 현재 블록이 히스토리를 어떻게 쓰는지를 갱신하는 read 항이고, 다른 하나는 앞선 블록이 히스토리를 어떻게 인코딩하는지를 갱신하는 write 항이다. 입력은 detach되어 있으므로 write 항은 샘플링 대상이 아니라 히스토리 인코딩 방식만 바꾼다. 즉 모델이 노이즈 낀 히스토리를 참는 게 아니라 쓰는 법을 배운다.
어떻게 쓰나
학습은 블록 단위가 아니라 단계 단위로 병렬화된다. 각 단계의 입력은 이전 단계 추정값을 다시 노이즈로 덮어 만들어지고(X^(s+1) = Ψ_s(sg(X̂^(s)), ε_s)), 모든 단계의 계산 그래프를 저장하지 않기 위해 Self-Forcing의 확률적 그래디언트 절단을 따른다. 종료 단계 d를 균등분포에서 하나 뽑아 s<d 구간은 그래디언트 없이 돌리고, 단계 d에서만 표준 DMD 목적함수로 손실을 계산한다. 순차 깊이가 블록 수 N이 아니라 단계 수에 비례하므로 블록 단위가 잘아도 비용이 거의 늘지 않는다. 여기에 더해 장면 정체성과 레이아웃을 붙잡아 줄 앵커가 필요한데, 윈도우를 벗어나도 계속 남는 싱크(sink) 블록에는 깨끗한(t=0) 상태를 준다. 싱크 블록을 종료 단계 d까지 그래디언트 없이 순차 롤아웃해 각 단계 입력을 기록해 두고, 매 단계가 이 깨끗한 싱크를 앞에 붙여 같은 순전파 안에서 다시 인코딩한다(싱크 리캐싱). 추론 시에는 영상당 한 번만 싱크를 리캐싱하면 되고, 기존 clean-history 방식처럼 모든 블록을 t=0에서 다시 인코딩할 필요가 없다.
전제와 한계
추론에서는 단계별로 히스토리 K/V 뱅크를 하나씩 두는 멀티뱅크 SAF_M이 기본형이다. 블록 i가 단계 s에 도달했을 때 뱅크가 정확히 학습 때 본 히스토리를 담고 있으며, 각 블록은 S번의 순전파만 필요하다(clean-history 방식은 S+1번). 단계 간 의존성이 latent 전달로만 이어지므로 GPU별로 단계를 하나씩 맡기는 파이프라인이 가능하고, 4개 GPU에서 49.1 FPS를 기록한다. 메모리가 제한된 환경을 위한 단일 뱅크 SAF_S는 블록이 완전히 디노이즈된 뒤 한 단계의 K/V만 공유 뱅크에 커밋하는데, 노이즈 수준 (250, 500, 750)을 확률 (0.5, 0.25, 0.25)로 샘플링하는 Mix 정책으로 움직임과 충실도 사이를 절충한다.
실험은 5초 단일 프롬프트 클립으로 프레임 단위와 청크 단위 두 설정에서 학습하고, VBench(5초), Interactive(10초 6구간, 총 60초), MovieGen-100s(128개 프롬프트, 100초, 학습 길이의 20배)로 평가한다. 비교 대상은 Self-Forcing, LongLive, Causal-Forcing, HiAR, SGF이며 모두 공식 가중치를 동일 시드로 재평가했다. 청크 단위 표에서 SAF_M은 ViCLIP 26.54, Quality 85.18, Smoothness 98.93, Dynamic Degree 64.10, Imaging 71.82를 기록해 단기·상호작용·장기 생성 전반에서 대부분의 집계 지표를 앞선다. LongLive가 Interactive ViCLIP에서 더 높은 점수를 받지만 Interactive Quality와 MovieGen-100s Quality는 SAF가 더 높고, 움직임이 강해질 때 흔히 낮아지는 VBench Semantic에서만 소폭 뒤진다. 학습 효율은 표 4에서 SAF가 청크 단위 메모리 155.18·시간 132.78, 프레임 단위 164.79·137.04로, SGF의 프레임 단위 249.21초 대비 약 1.8배 빠르고 메모리도 낮다.
어블레이션은 히스토리 K/V를 detach했을 때 Quality가 85.18에서 84.64로 소폭 떨어지지만 Dynamic Degree가 64.10에서 51.30으로 크게 줄어 write 항, 즉 미래에서 히스토리로 가는 지도가 중요함을 확인한다. 싱크 리캐싱을 제거하면 Quality 81.70, Dynamic Degree 6.90으로 가장 큰 붕괴가 일어나 거의 정지 영상에 가까워진다. 단일 뱅크에서 노이즈 수준을 고정한 경우 Fixed750이 Quality 84.68·Dynamic 55.60, Fixed500이 84.12·47.10, Fixed250이 83.99·45.70으로, 노이즈가 클수록 역동성은 오르고 매끄러움과 화질은 내려가는 맞교환이 드러난다. 히스토리 노이즈 스케줄을 비교한 실험에서도 정렬된 추론이 모든 정책 중 가장 높은 Quality를 냈고, SAF(0/0/100)가 모든 추론 정책에서 최고 Quality를 기록했다.
실무 관점에서 이 논문이 주는 시사점은 히스토리 표현을 학습 가능한 메모리로 다루라는 것이다. 스트리밍 영상 생성 파이프라인을 직접 만든다면 히스토리 K/V를 detach한 캐시로 두는 대신 같은 노이즈 단계에서 계산해 그래디언트를 흘려보내는 것만으로 장기 안정성과 움직임을 함께 얻을 수 있고, 단계별 뱅크 구조 덕분에 멀티 GPU 파이프라이닝으로 지연을 줄일 수 있다. 다만 저자들이 밝힌 한계도 분명하다. 노이즈 낀 로컬 히스토리는 카메라가 움직이며 새로운 콘텐츠가 프레임에 들어올 때 급격한 변화를 일으킬 수 있다(부록 G). 또한 단일 뱅크 SAF_S는 학습과 추론의 히스토리 노이즈 수준이 어긋나는 train–test 불일치를 안고 있어 SAF_M보다 성능이 약간 낮고 파이프라이닝도 불가능하다.