はじめに
Stable Diffusion を開発している Stability AI が公開した「Stable Video Diffusion」についての記事を以前書きました。touch-sp.hatenablog.com
最近、Diffusersから使えるようになって環境構築など非常に簡単になりました。
github.com
さっそく使ってみました。
環境構築
Windows 11 CUDA 11.8 Python 3.11.5
Python環境構築は以下の手順です。
pip install torch==2.1.1+cu118 torchvision==0.16.1+cu118 --index-url https://download.pytorch.org/whl/cu118 pip install diffusers[torch] pip install transformers opencv-python
Pythonスクリプト
import torch from diffusers import StableVideoDiffusionPipeline from diffusers.utils import load_image, export_to_video pipe = StableVideoDiffusionPipeline.from_pretrained( #"stabilityai/stable-video-diffusion-img2vid-xt", "stable-video-diffusion-img2vid-xt", torch_dtype=torch.float16, variant="fp16" ) pipe.to("cuda") # Load the conditioning image image = load_image("https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/diffusers/svd/rocket.png?download=true") image = image.resize((1024, 576)) generator = torch.manual_seed(42) frames = pipe( image, decode_chunk_size=8, generator=generator ).frames[0] export_to_video(frames, "generated.mp4", fps=7)
結果
結果はGoogle Bloggerに載せています。support-touchsp.blogspot.com
VRAM消費について
上記スクリプトをそのまま実行すると以下のようなVRAM消費でした。RTX 3080に載っているVRAM 16GBを超えて、共有GPUメモリを使っています。
以前は16GBを超えた時点でOOM(out of memory)のエラーが出たのですが、最近のNVIDA Driverを入れていると共有GPUメモリを使うのがデフォルトになっておりエラーは出なくなっています。
ただし共有GPUメモリを使いだすと極端に動作が遅くなるので可能な限り使わない方が良いです。