MOVA
MOVA
MOVA는 양방향 cross-attention으로 연결된 비대칭 이중-타워(twin-tower) 모델로 비디오와 오디오를 함께 생성합니다. 가장 강력한 사용 사례는 말하는 주체, 소리가 보이는 이벤트, 그리고 앰비언트 오디오가 나중에 합성되는 대신 화면을 따라야 하는 장면입니다.
출처: 문서
본문
<DiffusionModelTags tags={["video + audio", "joint generation", "lip-sync", "environment sound", "up to 8 seconds"]} />
1. 모델 소개 (Model Introduction)
MOVA는 양방향 cross-attention으로 연결된 비대칭 이중-타워 모델로 비디오와 오디오를 함께 생성합니다. 가장 강력한 사용 사례는 말하는 주체, 소리가 보이는 이벤트, 그리고 앰비언트 오디오가 나중에 합성되는 대신 화면을 따라야 하는 장면입니다.
공개 360p와 720p 체크포인트 모두 최대 8초를 생성합니다. 더 가벼운 배포에는 360p를, 출력 해상도에는 720p를 선택하세요. MOVA는 작업이 장기 연속성이나 H3가 제공하는 더 풍부한 이미지/비디오/오디오 레퍼런스 컨디셔닝을 필요로 할 때는 덜 적합합니다.
| 체크포인트 (Checkpoint) | 가장 좋은 적합 (Best fit) | 출력 제한 (Output limit) |
|---|---|---|
OpenMOSS-Team/MOVA-360p |
더 빠르고 메모리가 낮은 공동 시청각 생성 | 360p에서 최대 8초 |
OpenMOSS-Team/MOVA-720p |
더 높은 해상도의 립싱크와 환경 오디오 | 720p에서 최대 8초 |
2. SGLang-diffusion 설치 (Installation)
SGLang-diffusion은 여러 설치 방법을 제공합니다. 하드웨어 플랫폼과 요구사항에 따라 가장 적합한 방법을 선택할 수 있습니다.
설치 지침은 공식 SGLang-diffusion 설치 가이드를 참조하세요.
3. 모델 배포 (Model Deployment)
이 섹션은 다양한 하드웨어 플랫폼과 사용 사례에 최적화된 배포 구성을 제공합니다.
3.1 기본 구성 (Basic Configuration)
MOVA는 온라인 서빙과 CLI 생성 모드를 모두 지원합니다. 권장 시작 구성은 하드웨어와 해상도에 따라 다릅니다.
대화형 명령 생성기 (Interactive Command Generator): 아래 구성 선택기를 사용해 하드웨어 플랫폼에 적합한 배포 명령을 자동 생성하세요.
3.2 구성 팁 (Configuration Tips)
가속 기능과 런타임 요구사항은 성능 최적화를 참조하세요.
--num-gpus: 사용할 GPU 수--tp: 텐서 병렬 크기(텍스트 인코더 오프로드가 활성화되면 1보다 크면 안 됩니다. 레이어별 오프로드 + 프리페치가 더 빠르기 때문)--ring-degree: USP에서 ring attention 스타일 SP의 정도--ulysses-degree: USP에서 DeepSpeed-Ulysses 스타일 SP의 정도--adjust-frames: 프레임 자동 조정 여부(MOVA에서는false로 설정)--enable-torch-compile: 더 빠른 추론을 위해 torch.compile 활성화
4. API 사용법 (API Usage)
전체 API 문서는 공식 API 사용 가이드를 참조하세요.
4.1 CLI 생성 (sglang generate)
sglang generate \
--model-path OpenMOSS-Team/MOVA-720p \
--prompt "A man in a blue blazer and glasses speaks in a formal indoor setting, \
framed by wooden furniture and a filled bookshelf. \
Quiet room acoustics underscore his measured tone as he delivers his remarks. \
At one point, he says, \"I would also believe that this advance in AI recently wasn't unexpected.\"" \
--image-path "<YOUR-IMAGE-PATH>" \
--adjust-frames false \
--num-gpus 8 \
--ring-degree 2 \
--ulysses-degree 4 \
--num-frames 193 \
--fps 24 \
--seed 67 \
--num-inference-steps 25 \
--enable-torch-compile \
--save-output
4.2 비디오 생성 (Generate a Video)
curl -X POST "http://0.0.0.0:30002/v1/videos" \
-F "prompt=A man in a blue blazer and glasses speaks in a formal indoor setting, framed by wooden furniture and a filled bookshelf. Quiet room acoustics underscore his measured tone as he delivers his remarks. At one point, he says, \"I would also believe that this advance in AI recently wasn't unexpected.\"" \
-F "input_reference=@<YOUR-IMAGE-PATH>" \
-F "size=640x352" \
-F "num_frames=193" \
-F "fps=24" \
-F "seed=67" \
-F "guidance_scale=5.0" \
-F "num_inference_steps=25" \
-o create_video.json
4.3 고급 사용법 (Advanced Usage)
4.3.1 Cache-DiT 가속 (Cache-DiT Acceleration)
SGLang은 Diffusion Transformer(DiT)용 캐싱 가속 엔진인 Cache-DiT를 통합해 최소 품질 손실로 최대 7.4배 추론 속도 향상을 얻을 수 있습니다. SGLANG_CACHE_DIT_ENABLED=True로 활성화할 수 있습니다. 자세한 내용은 SGLang Cache-DiT 문서를 참조하세요.
기본 사용법 (Basic Usage)
SGLANG_CACHE_DIT_ENABLED=true sglang serve --model-path OpenMOSS-Team/MOVA-720p
고급 사용법 (Advanced Usage)
- DBCache 파라미터: DBCache는 블록 수준 캐싱 동작을 제어합니다:
| 파라미터 (Parameter) | 환경 변수 (Env Variable) | 기본값 (Default) | 설명 (Description) |
|---|---|---|---|
| Fn | SGLANG_CACHE_DIT_FN |
1 | 항상 계산할 첫 블록 수 |
| Bn | SGLANG_CACHE_DIT_BN |
0 | 항상 계산할 마지막 블록 수 |
| W | SGLANG_CACHE_DIT_WARMUP |
4 | 캐싱이 시작되기 전 워밍업 스텝 |
| R | SGLANG_CACHE_DIT_RDT |
0.24 | 잔차 차이 임계값 |
| MC | SGLANG_CACHE_DIT_MC |
3 | 최대 연속 캐시 스텝 수 |
- TaylorSeer 구성: TaylorSeer는 Taylor 전개를 사용해 캐싱 정확도를 개선합니다:
| 파라미터 (Parameter) | 환경 변수 (Env Variable) | 기본값 (Default) | 설명 (Description) |
|---|---|---|---|
| Enable | SGLANG_CACHE_DIT_TAYLORSEER |
false | TaylorSeer 교정기 활성화 |
| Order | SGLANG_CACHE_DIT_TS_ORDER |
1 | Taylor 전개 차수 (1 또는 2) |
결합 구성 예시:
SGLANG_CACHE_DIT_ENABLED=true \
SGLANG_CACHE_DIT_FN=2 \
SGLANG_CACHE_DIT_BN=1 \
SGLANG_CACHE_DIT_WARMUP=4 \
SGLANG_CACHE_DIT_RDT=0.4 \
SGLANG_CACHE_DIT_MC=4 \
SGLANG_CACHE_DIT_TAYLORSEER=true \
SGLANG_CACHE_DIT_TS_ORDER=2 \
sglang serve --model-path OpenMOSS-Team/MOVA-720p
4.3.2 CPU 오프로드 (CPU Offload)
--dit-cpu-offload: DiT 추론에 CPU 오프로드 사용. 메모리가 부족하면 활성화.--text-encoder-cpu-offload: 텍스트 인코더 추론에 CPU 오프로드 사용.--vae-cpu-offload: VAE에 CPU 오프로드 사용.--pin-cpu-memory: CPU 오프로드를 위한 메모리 고정. "CUDA error: invalid argument"가 발생할 때만 임시 해결책으로 추가.
5. 벤치마크 (Benchmark)
5.1 속도 향상 벤치마크 (Speedup Benchmark)
5.1.1 비디오 생성 (Generate a video)
테스트 환경:
- 하드웨어: NVIDIA H200 x 8
- git 리비전: 443b1a8
- 모델: OpenMOSS-Team/MOVA-720p
서버 명령 (Server Command):
sglang serve --model-path OpenMOSS-Team/MOVA-720p --port 30002 \
--adjust-frames false --num-gpus 8 --ring-degree 2 --ulysses-degree 4 \
--tp 1 --enable-torch-compile
벤치마크 명령 (Benchmark Command):
python3 -m sglang.multimodal_gen.benchmarks.bench_serving \
--task image-to-video --dataset vbench --num-prompts 1 --max-concurrency 1 \
--port 30002
결과 (Result):
================= Serving Benchmark Result =================
Task: image-to-video
Model: OpenMOSS-Team/MOVA-720p
Dataset: vbench
--------------------------------------------------
Benchmark duration (s): 590.76
Request rate: inf
Max request concurrency: 1
Successful requests: 1/1
--------------------------------------------------
Request throughput (req/s): 0.00
Latency Mean (s): 590.7549
Latency Median (s): 590.7549
Latency P99 (s): 590.7549
--------------------------------------------------
Peak Memory Max (MB): 74996.00
Peak Memory Mean (MB): 74996.00
Peak Memory Median (MB): 74996.00
============================================================
5.1.2 고동시성 비디오 생성 (Generate videos with high concurrency)
서버 명령 (Server Command):
sglang serve --model-path OpenMOSS-Team/MOVA-720p --port 30002 \
--adjust-frames false --num-gpus 8 --ring-degree 2 --ulysses-degree 4 \
--tp 1 --enable-torch-compile
벤치마크 명령 (Benchmark Command):
python3 -m sglang.multimodal_gen.benchmarks.bench_serving \
--task image-to-video --dataset vbench --num-prompts 20 --max-concurrency 20 \
--port 30002