VDN-H3: MiniMax H3 영상을 재생 시간보다 빠르게 생성하는 하이브리드 어텐션 모델 (단, H3 모델은 한국 사용 불가 주의)

VDN-H3 소개

영상 생성 모델에서 가장 비싼 연산은 어텐션(Attention)입니다. 영상 한 편은 수만 개의 잠재 프레임 토큰으로 펼쳐지고, 소프트맥스 어텐션의 비용은 시퀀스 길이의 제곱으로 늘어납니다. MiniMax가 공개한 옴니모달 영상 생성 모델 MiniMax H3 (:pytorch::kr: MiniMax, 영상과 음향을 함께 만드는 33B 옴니모달 모델 H3 웨이트 공개 (단, 한국 사용 금지🫠))에서는 소프트맥스 어텐션이 전체 실행 시간의 85% 이상을 차지합니다. 대규모 언어 모델 쪽에서는 이 비용을 선형 어텐션(Linear Attention)으로 대체해 왔지만, 영상에서는 인물의 정체성과 장면 배치, 시간축 일관성 같은 전역 특징이 무너지는 문제가 따라왔습니다.

Video DeltaNet(VDN) 은 이 교환 관계를 한쪽만 고르지 않고 둘로 나눈 하이브리드 어텐션 구조입니다. 가까운 프레임끼리는 정확한 소프트맥스 어텐션으로 계산하고, 멀리 떨어진 문맥은 양방향 선형 어텐션이 상태로 요약해 읽습니다. 저자들은 이 구조를 MiniMax H3 백본에 이식해 VDN-Minimax-H3(VDN-H3) 로 공개했습니다. 8장의 NVIDIA B200에서 8스텝 디노이징으로 14.4초 분량 클립을 11.23초에 만들어, 영상을 재생하는 데 걸리는 시간보다 짧게 생성을 끝냅니다.

VDN-H3은 Haocheng Xi 등 11명의 저자가 참여한 독립 아키텍처 연구로, 저장소 하단에 자신을 "Independent architecture study" 로 소개하고 있습니다. 공개 범위는 가중치에서 끝나지 않고, 최적화된 추론(Inference) 스택과 그 학습 코드까지 함께 열려 있습니다. 구현은 PyTorch 2.13과 FlashAttention 4, 그리고 FlexAttention의 Flash 백엔드 위에 올라가 있고, 패치된 Diffusers를 통해 파이프라인이 구성됩니다.

VDN-H3과 기존 방식 비교

같은 백본으로 같은 작업을 돌렸을 때 무엇이 달라지는지가 이 프로젝트를 판단하는 첫 번째 근거입니다. 저자들이 공개한 B200 측정값은 768p 해상도의 14.4초 영상 생성 작업을 기준으로 하며, 모델 로딩과 워밍업, VAE 디코딩과 MP4 인코딩은 제외한 디노이징 구간만 잰 값입니다. 표의 NFE는 신경망 순전파 호출(Number of Function Evaluations) 횟수를 가리킵니다:

구성 GPU 수 NFE당 초 50 NFE 8 NFE
MiniMax H3 밀집 어텐션 (cuDNN) 1 16.74 13.95분 2.23분
VDN-H3 FP8 1 6.41 5.3분 51초
VDN-H3 FP8 분산 8 1.40 1.2분 11.23초

같은 GPU 1장 조건에서 NFE 하나당 16.74초가 6.41초로 줄었고, 8장으로 분산하면 1.40초까지 내려갑니다. 저자들은 8스텝 증류(Distillation) 모델까지 합쳐 밀집 MiniMax H3의 단일 GPU 50스텝 기준 대비 74.5배, 밀집 모델의 8 GPU 기준 대비 10.7배 빠르다고 밝히고 있습니다.

품질 쪽 비교는 성격이 다릅니다. 저자들은 VDN-H3의 결과가 밀집 MiniMax H3와 거의 구별되지 않으며, MiniMax H3를 4스텝으로 희소 증류한 FastVideo 팀의 FastH3보다 품질과 지시 따르기 능력이 낫다고 주장하지만, 이 주장을 받치는 정량 점수나 평가 프로토콜은 함께 공개되지 않았습니다. 프로젝트 블로그의 정성 비교 영상이 현재 확인할 수 있는 근거의 전부이므로, 품질 손실 여부는 직접 렌더해 판단해야 합니다.

VDN-H3은 누구에게 맞는가

B200이나 H200 여러 장을 쓸 수 있고 영상 생성 지연 자체가 제품의 제약인 팀에게 VDN-H3은 지금 바로 검토할 값어치가 있습니다. 실시간에 가까운 생성이 필요한 스트리밍과 대화형 영상 서비스가 대표적이고, 추론 스택과 학습 코드가 함께 열려 있어 다른 백본에 같은 구조를 이식해 보는 연구도 가능합니다.

반대로 한국에서 서비스나 연구에 쓸 목적이라면 VDN-H3의 가중치는 선택지가 아닙니다. 백본인 MiniMax H3의 배포 조건이 한국을 사용 허용 지역에서 제외하고 있고, VDN-H3의 가중치는 그 조건을 그대로 물려받습니다. 자세한 범위는 아래 라이선스 절에 정리했습니다. 코드만 참고해 다른 백본으로 구조를 재현하는 쪽은 이 제약과 무관합니다.

VDN-H3의 하이브리드 어텐션 구조

VDN-H3은 영상 토큰 사이의 어텐션을 두 갈래로 쪼갭니다. 소프트맥스 갈래는 양방향 슬라이딩 윈도우로 동작하며, MiniMax H3의 원래 구조를 따라 연속한 잠재 프레임 5개를 한 청크로 묶고 각 청크가 자기 자신과 직전, 직후 청크만 봅니다. 여기에 4방향 경계 앵커(boundary anchor) 를 덧붙여 모든 프레임이 첫 프레임과 마지막 프레임의 토큰 전체를 보고, 그 두 경계 프레임도 나머지 모든 프레임을 봅니다. 저자들은 이 앵커가 어텐션 밀도를 3.57%만 늘리면서 장거리 안정성을 크게 개선했다고 설명합니다.

멀리 떨어진 문맥은 양방향 선형 어텐션이 맡습니다. 프레임 t 를 기준으로 순방향 상태 S_t^{\rightarrow} 는 슬라이딩 윈도우 앞쪽 프레임들을, 역방향 상태 S_t^{\leftarrow} 는 뒤쪽 프레임들을 요약합니다. 두 상태가 담당하는 구간은 서로 겹치지 않고 슬라이딩 윈도우와 경계 프레임이 이미 처리한 구간도 포함하지 않으므로, 질의 q_t 가 양쪽 상태를 읽어 더해도 같은 프레임이 두 번 세어지지 않습니다. 텍스트 프롬프트는 초기화 시점에 두 상태에 각각 1/2로 나누어 기록되어, 두 읽기값을 합쳤을 때 텍스트 기여가 정확히 한 번만 반영됩니다.

두 갈래의 출력은 크기 자체가 달라 그냥 더할 수 없습니다. VDN-H3은 각 갈래에 내용 의존 시그모이드 게이트를 걸고 갈래마다 별도의 출력 투영을 통과시킨 뒤 잔차 스트림에 더합니다. 두 게이트가 하는 일은 서로 다릅니다. 소프트맥스 갈래는 정규화 항이 좁은 지역 윈도우만 합산하기 때문에 키 위치 대부분이 제거된 상태에서도 어텐션 질량을 가까운 프레임에 전부 재분배해 지역 문맥을 과대평가할 수 있고, 게이트가 그 정도를 보정합니다. 선형 갈래에서는 Gated DeltaNet과 Kimi Delta Attention을 따라 RMSNorm 뒤에 원소별 시그모이드 게이트를 걸어 출력 크기를 맞춥니다.

선형 갈래의 계산 단위를 토큰에서 프레임으로 옮긴 것이 이 프로젝트의 핵심 기여입니다. 고전적인 델타 규칙은 토큰을 하나씩 처리하므로, 한 프레임 안의 공간 토큰들이 비슷한 키에 서로 다른 목표를 쓰려 할 때 서로를 보지 못한 채 중복된 근거를 그대로 누적합니다. VDN-H3의 Video Delta Attention(VDA)은 프레임 단위의 정규 방정식을 직접 풉니다. 가중 키 그램 행렬 A 와 값 쓰기 행렬 B, 감쇠된 상태 \bar S 를 두면 새 상태는 S_t = (\bar S + B)(I + A)^{-1} 로 한 번에 결정됩니다. A \succeq 0 이면 전이 (I+A)^{-1} 의 연산자 노름이 1을 넘지 않으므로, SANA-WM이 안정성을 위해 키에 곱했던 프레임 크기 스케일 1/\sqrt U 없이도 상태가 프레임을 거치며 증폭되지 않습니다.

VDN-H3의 3단계 학습 방식

무작위로 초기화한 선형 갈래를 이미 잘 조정된 소프트맥스 경로 옆에 그냥 끼워 넣고 처음부터 끝까지 함께 학습시키면 생성 품질이 쉽게 무너집니다. 저자들은 그래서 밀집 모델을 얼린 상태에서 시작하는 3단계 학습에 증류 단계를 하나 더한 순서를 제안합니다. 각 단계는 앞 단계의 마지막 체크포인트에서 이어집니다:

단계 학습 대상 스텝
A1 새 선형 어텐션 갈래를 밀집 모델에 계층별로 정렬 200
A2 같은 파라미터를 전체 디노이저에서 종단간 학습 500
B QKV와 O 투영의 LoRA와 선형 갈래를 함께 학습 2,000
DMD DMD2로 8스텝 turbo LoRA 학습 (생성적 적대 신경망(GAN) 미사용) 250

A1과 A2 단계에서는 소프트맥스 갈래와 QKVO 투영, FFN을 모두 얼려 선형 갈래의 효과만 분리합니다. 소프트맥스 게이트도 이 두 단계 내내 얼려 두는데, 선형 갈래가 아직 제대로 학습되지 않은 상태에서 게이트를 열어 두면 최적화기가 선형 갈래를 학습하는 대신 소프트맥스 갈래를 억누르는 더 쉬운 경로로 손실을 줄이기 때문입니다. 게이트는 선형 갈래가 의미 있는 신호를 낼 수 있게 된 B 단계에서 비로소 학습됩니다.

마지막 DMD 단계는 텍스트 행만 있으면 되는 데이터 없는(data-free) 학습입니다. 커뮤니티가 공개한 larryvrh/MiniMax-H3-Turbo-Lora에서 출발해 DMD2로 이어 학습해 8스텝 어댑터를 얻습니다. 저자들은 4스텝처럼 더 공격적인 설정을 일부러 피하고 품질과 지연의 교환에서 8스텝을 골랐다고 밝히고 있습니다.

VDN-H3 벤치마크

속도 이득이 어디에서 나오는지는 블록 단위 측정에 드러납니다. B200 한 장에서 밀집 MiniMax H3 블록 하나는 332.5ms가 걸리는데, Video Delta Attention과 슬라이딩 윈도우 소프트맥스를 적용하면 192.1ms로 줄고, 전용 커널과 캐싱, FP8 선형 계층까지 넣으면 125.3ms가 되어 2.65배 빨라집니다. 50스텝 기준 전체 생성 시간으로는 13.95분에서 5.34분으로 내려갑니다:

같은 그림의 아래쪽은 밀집 MiniMax H3의 어텐션 경로 내부를 쪼갠 것으로, cuDNN SDPA 소프트맥스 커널 하나가 어텐션 시간의 81.1%를 쓰고 RoPE가 7.9%, QKV 투영이 5.7%를 차지합니다. 어텐션 안에서도 소프트맥스 커널 하나가 압도적이라는 이 분포가 하이브리드 구조를 고른 이유를 그대로 설명합니다.

병렬화 단계에서 저자들은 표준 Ulysses 병렬화를 그대로 쓰지 않았습니다. 8장 모두가 두 갈래를 동시에 실행하는 대신 QKV 투영 이후 불균등 all-to-all로 헤드를 모아 5장은 소프트맥스 갈래, 3장은 VDA 갈래를 맡게 나눕니다. 이 배분은 프로파일링 결과로 정한 값이고, 두 갈래가 끝나면 역방향 all-to-all로 원래의 시퀀스 분할 배치로 되돌립니다. 그 결과 NFE당 지연이 1.405초가 되어 표준 Ulysses보다 13.3% 낮아졌습니다.

VDN-H3 설치와 사용

환경 구성은 PyTorch 2.13.0과 CUDA 12.9 조합을 권장하며, FlexAttention의 Flash 백엔드를 쓰기 때문에 FlashAttention 4가 필요합니다. 사전 릴리스 의존성이 섞여 있어 --prerelease=allow 를 붙여야 합니다:

git clone https://github.com/OpenVDN/vdn-minimax-h3.git
cd vdn-minimax-h3

conda create -n vdn python=3.12 -y
conda activate vdn
pip install uv

uv pip install torch==2.13.0 --index-url https://download.pytorch.org/whl/cu129
uv pip install --prerelease=allow -e .
bash scripts/setup_diffusers.sh

가중치는 약 82GB이고, 내려받으면 백본과 어댑터가 세 디렉토리로 나뉩니다. h3-base/ 가 공개된 MiniMax H3 본체(트랜스포머와 영상, 음성 VAE, 스케줄러)로 72GB를 차지하고, 50스텝 모델용 stage-b-step-2000/ 이 4.3GB, 8스텝 모델용 stage-dmd-step-250/ 이 5.1GB입니다:

hf download OpenVDN/vdn-minimax-h3 --local-dir ckpts

가장 간단한 시작은 단일 GPU 스크립트입니다. 첫 실행은 커널을 모두 컴파일하므로 수 분이 걸리고, 이후 실행은 캐시를 재사용합니다:

bash scripts/inference/8nfe_tuned_fp8.sh                # GPU 1장
bash scripts/inference/8nfe_tuned_fp8_ulysses_h200.sh   # H200 8장, 단일 노드
bash scripts/inference/8nfe_tuned_fp8_ulysses_b200.sh   # B200 8장, 단일 노드

직접 쓴 프롬프트로 렌더할 때는 두 단계를 거칩니다. 먼저 Qwen3-VL-32B 비전 언어 모델로 프롬프트를 인코딩하고, 그 결과 파일을 확산 모델에 넘깁니다:

python src/inference/encode_prompt.py --prompt "..." --out prompts/mine.pt

python src/inference/infer.py \
  --config configs/inference/8nfe_tuned_fp8.yaml \
  checkpoint=ckpts/stage-dmd-step-250 \
  render.prompt_file=prompts/mine.pt \
  render.out=results/mine.mp4

같은 체크포인트로 첫 프레임과 마지막 프레임을 조건으로 주는 생성도 됩니다. encode_keyframes.py 가 두 이미지를 짧은 변 768 캔버스에 올려 프롬프트와 함께 Qwen3-VL로 통과시키고 조건 잠재를 같은 프롬프트 파일에 넣습니다. 키프레임 조건은 단일 GPU 진입점에서만 지원되고, 다중 GPU Ulysses 스크립트는 텍스트 조건 생성만 처리합니다. 저자들은 프롬프트를 그대로 넣기보다 H3-Context-IR이나 MiniMax의 공식 프롬프트 작성 스킬로 먼저 다시 쓰기를 강하게 권합니다.

VDN-H3의 라이선스

VDN-H3은 코드와 가중치의 조건이 서로 다르므로 두 가지를 따로 확인해야 합니다. 저장소에 담긴 학습과 추론 코드는 Apache-2.0으로 공개되어 개인 및 상업적 목적으로 자유롭게 사용할 수 있습니다.

모델 가중치는 저장소에 들어 있지 않고 이 조건의 적용을 받지 않습니다. VDN-H3은 MiniMax H3의 파생물이므로, 가중치는 Hugging Face에서 MiniMax H3 Community License Agreement로 별도 배포됩니다.

단, 이 계약은 적용 지역을 명시적으로 제한하므로 한국 사용자는 내려받기 전에 조문을 직접 확인해야 합니다. 계약 제1장은 적용 지역을 "제외 지역을 뺀 전 세계"로 정의하고, 제외 지역으로 유럽연합과 영국, 대한민국, 미국을 열거합니다. 제5장은 적용 지역 밖에서 모델과 그 산출물을 사용하거나 복제, 수정, 배포, 전시하는 행위가 허가되지 않는다고 못 박고 있습니다. MiniMax는 제외 지역의 배포 희망자가 별도 협의로 허가를 받을 수 있다고 안내합니다.

:books: VDN-H3의 구조와 벤치마크를 설명한 프로젝트 블로그

:github: VDN-H3 프로젝트 GitHub 저장소

:hugs: VDN-H3 모델 가중치 다운로드

더 읽어보기




이 글은 GPT 모델로 정리한 초안을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 댓글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:south_korea:에서 이런 글들을 계속 정리하고 있습니다. 회원 가입으로 주요 글들을 이메일:love_letter:로, 텔레그램(Telegram)이나 Slack/Discord/Teams/Dooray/GoogleChat 등으로 새 글 알림을 받아보세요! :smiley:

:wrapped_gift: 아래:down_right_arrow:쪽에 좋아요:+1:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck: