chenfengxu714/StreamDiffusionV2
StreamDiffusion, Live Stream APP
StreamDiffusionV2 – ディフュージョンによるリアルタイム動画生成
何であるか – StreamDiffusionV2 は、ディフュージョンベースの動画生成を ストリーミング プロセスとして実行できるオープンソースライブラリです。完全な動画が生成されるのを待つ代わりに、システムは短い動画チャンクをリアルタイムで処理し、各新しいチャンクが既に完了した作業を再利用できるように、ローリングKVキャッシュを維持します。単一GPU、マルチGPUパイプライン並列、およびインタラクティブな使用向けの軽量Web UIをサポートしています。
なぜ重要か – 伝統的なテキストから動画へのディフュージョンモデルはバッチ処理中心で、遅い(1秒あたり数分)です。StreamDiffusionV2は以下の方法で高フレームレート(リアルタイムまたはニアリアルタイム)を実現しています:
- 動画を重複するチャンクに分割し、リングバッファ型KVキャッシュを用いて潜在状態を再利用。
- 各チャンクごとに柔軟なノイズ除去ステップ数を許可(速度と品質のトレードオフ)。
- オプションの高速化パスを提供:高速な TAEHV-VAEデコーダ、Flash-Attention、TensorRTサポート。
- 単一GPUからマルチGPUパイプライン並列までスケーリング可能。より大きな環境では「schedule-block」オプションでスループットを向上。
主要コンポーネント
| コンポーネント | 役割 |
|---|---|
StreamDiffusionV2Pipeline |
チャンク化、エンコード、ノイズ除去、デコードを処理する高レベルPython API。 |
run_v2v.sh |
オフライン推論用の統合CLIエントリポイント(単一、単一-wo、pipe)。 |
demo/ |
インタラクティブ生成向けの最小限のFastAPI/Gradio Web UI。 |
streamv2v/ |
パイプラインをプログラム的に制御する方法を示す例スクリプト。 |
| KVキャッシュ実装 | 因果的DiTバックボーンの注意機構のキー/バリューを格納するリングバッファ。スライディングウィンドウ注意を可能にする。 |
インストール – パッケージはPyPIに公開されており、オプションのFlash-Attentionサポート付きでインストール可能:
conda create -n streamdiffusionv2 python=3.10 -y
conda activate streamdiffusionv2
pip install streamdiffusionv2 # コア
pip install "streamdiffusionv2[flash-attn]" # より高速な注意(CUDA必須)
# 最新のNVIDIA Blackwell GPU向け
pip install torch==2.11.0 torchvision==0.26.0
ローカルチェックアウトを希望する場合は、pip install . でも同じように動作します。
モデルの取得 – このライブラリは推論コードのみを提供します。チェックポイントをダウンロードする必要があります:
# 1.3Bモデル(デモ用のデフォルト)
huggingface-cli download --resume-download Wan-AI/Wan2.1-T2V-1.3B --local-dir wan_models/Wan2.1-T2V-1.3B
huggingface-cli download --resume-download jerryfeng/StreamDiffusionV2 --local-dir ./ckpts --include "wan_causal_dmd_v2v/*"
# 14Bモデル(より高い品質)
huggingface-cli download --resume-download Wan-AI/Wan2.1-T2V-14B --local-dir wan_models/Wan2.1-T2V-14B
huggingface-cli download --resume-download jerryfeng/StreamDiffusionV2 --local-dir ./ckpts --include "wan_causal_dmd_v2v_14b/*"
オプションで軽量な TAEHV-VAEデコーダを取得:
curl -L https://github.com/madebyollin/taehv/raw/main/taew2_1.pth -o ckpts/taew2_1.pth
簡単なPython例(単一GPU)
import numpy as np
from streamdiffusionv2 import (
StreamDiffusionV2Pipeline,
load_video,
export_video,
)
pipe = StreamDiffusionV2Pipeline(
checkpoint_folder="ckpts/wan_causal_dmd_v2v",
mode="single",
)
pipe.prepare("A dog walks on the grass, realistic")
video = load_video("examples/original.mp4", height=480, width=832)
chunks = []
noise = pipe.noise_scale
for chunk in pipe.chunk_video(video):
enc = pipe.encode_chunk(video, chunk, previous_noise_scale=noise,
initial_noise_scale=pipe.noise_scale)
noise = enc.noise_scale
den = pipe.denoise_chunk(enc)
if den is None:
continue
chunks.append(pipe.decode_chunk(den))
out = np.concatenate(chunks, axis=0)
export_video(out, "outputs/python_single.mp4", fps=16)
同じパイプラインはマルチGPU推論用に pipeline モードで1回の呼び出しで実行可能:
from streamdiffusionv2 import run_video_to_video
run_video_to_video(
mode="pipe",
checkpoint_folder="ckpts/wan_causal_dmd_v2v",
video_path="examples/original.mp4",
prompt="A dog walks on the grass, realistic",
output_path="outputs/python_pipe.mp4",
gpu_ids=[0,1],
num_gpus=2,
)
CLIの使用 – run_v2v.sh スクリプトは同じ手順を抽象化しています:
# 単一GPUストリーミング
./run_v2v.sh single
# ストリームバッチなしの単一GPU(わずかに異なるメモリパターン)
./run_v2v.sh single-wo
# マルチGPUパイプライン
./run_v2v.sh pipe
# プロファイリングを有効化
./run_v2v.sh pipe --profile
# 高速TAEHVデコーダを有効化
./run_v2v.sh single --use_taehv
共通のフラグ(--config_path、--checkpoint_folder、--video_path、--prompt_file_path、--height、--width、--fps、--step、--use_taehv)は環境変数でも指定可能。
Webデモ – Node.js 18をインストール後、以下のコマンドでUIを起動:
cd demo
USE_TAEHV=1 python -m streamdiffusionv2.web_demo # または提供された起動スクリプト
その後、ブラウザで http://localhost:7860 を開いてください。
トレーニング – リポジトリには、CausVidコードベースに基づく別途の user-study ブランチがあります。推論時に使用される因果的DiTバックボーンのトレーニング用スクリプトを提供しています。
ロードマップ – 作者らは、動的スケジューラ、FP8量子化、より深いTensorRT統合などの今後の作業をリストアップしています。
引用 – 研究でこのライブラリを使用する場合、MLSys 2026論文を引用してください(READMEにBibTeXあり)。
StreamDiffusionV2 は、リアルタイムディフュージョン動画生成の実験やデプロイを希望するすべての人にとって、プロダクション対応のツールキットであり、シンプルなPython APIとスケーラブルなマルチGPUバックエンドを両方提供しています。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト