概要
stability.aiから発表があった Stable Video Diffusion (SVD) のデモ用プログラム video_sampling.py
を Linux 上で動かす手順です。
ドキュメントがまとまっていなかったようなので、自分の備忘録として書き残します。
- 発表
- Introducing Stable Video Diffusion — Stability AI
https://stability.ai/news/stable-video-diffusion-open-ai-video-model
- Introducing Stable Video Diffusion — Stability AI
- GitHub リポジトリ(おなじみ?の場所ですが
Stable Video Diffusion
の commit がありました- Stability-AI/generative-models: Generative Models by Stability AI
https://github.com/Stability-AI/generative-models
- Stability-AI/generative-models: Generative Models by Stability AI
- モデル(研究用途で利用できます、詳細はドキュメント参照)
設定がうまくいくと、このような UI が立ち上がります。画像を投げると、動画(mp4)に変換してくれます。細かなパラメータを調整できます。ただし、現時点ではテキスト to ビデオの機能は無いようです(参照)。
前提条件
- 動作確認は Ubuntu 22.04.3 LTS で行いました
- Python のバージョンは 3.10.12 です(3.10 以外のバージョンでは失敗するかもしれないという情報もあります)
- NVIDIA の GPU が必要です。コマ数を増やそうとすると VRAM が結構必要になりそうです(参考)
- NVIDIA の GPU ドライバ等 ( CUDA や nvidia-utils などは別途必要です。Ubuntu であれば、次のが参考になるかもしれません)
- モデルのファイルは1つで約10GB近くありますので、ストレージ容量が必要です
手順
手順前半は、公式 Readme.md の Installation: セクションにある手順と同じです。
※本環境は《さくらのクラウド》を利用しましたが、基本的に GPU の積んだ環境であれば、同様の作業で入ると思います(Ubuntu Server 22.04.1 LTS 64bit を apt get update
apt get upgrade
しています)。
ますはじめに、 Stability-AI の generative-models
リポジトリをクローンします。
$ git clone https://github.com/Stability-AI/generative-models.git
$ cd generative-models
以降のコマンド実行は、すべてこのディレクトリ内を基準とします。
次に python3.10-venv
が入っていなければ、入れます。
$ sudo apt install python3.10-venv
PyTorch 2.0 等を入れます。
$ python3 -m venv .pt2
$ source .pt2/bin/activate
$ pip3 install -r requirements/pt2.txt
$ pip3 install .
ファイル scripts/demo/streamlit_helpers.py
を編集します。 61行目 に lowvram_mode = False
(少VRAMモード)が False
になっていますが、これを True
にします。※かなり VRAM が潤沢であれば不要かもしれません。
lowvram_mode = True
次はモデルを格納するディレクトリを作ります。
$ mkdir checkpoints
この中に Hugging Face で公開されているモデルをダウンロードします。
svd.safetensors
svd_image_decoder.safetensors
https://huggingface.co/stabilityai/stable-video-diffusion-img2vid/tree/main
svd_xt.safetensors
svd_xt_image_decoder.safetensors
https://huggingface.co/stabilityai/stable-video-diffusion-img2vid-xt/tree/main
これらは大きいので、 wget <URL> -O 出力先 'ダウンロードするモデルのURL'
のように実行すると楽でしょう。
例: svd.safetensors
の場合
$ wget -O ./checkpoints/svd.safetensors 'https://huggingface.co/stabilityai/stable-video-diffusion-img2vid/resolve/main/svd.safetensors?download=true'
必要なモデルのダウンロードが終われば、あとはデモスクリプトを実行します。
$ PYTHONPATH=. ./.pt2/bin/streamlit run scripts/demo/video_sampling.py
インストールが正常であれば、次のような出力が出ます。
Collecting usage statistics. To deactivate, set browser.gatherUsageStats to False.
You can now view your Streamlit app in your browser.
Network URL: http://<IP_ADDR>:8501
External URL: http://<IP_ADDR>:8501
画面の指示に従って、ブラウザで http://<IPアドレス>:8501/
を開きます。
あとはしばらく待つと、次のような画面に変わります。
Model Version
で使いたいモデルを選択します。ダウンロードしていないモデル名も出ますが、使いたいものしか選べません(エラーになります)。
それから Load Model
をクリックするとモデルが読み込めます。
あとは画面の指示に従って画像をアップロードします。
ページ一番下に「Sample」ボタンがあるので、押すと生成が始まります。
もし VRAM のメモリ不足になるようであれば途中で止まります。 Decode t frames at a time
の数値を小さくすると、メモリの使用量が減ります。コマンド watch -n 1 nvidia-smi
などで状況をモニタリングしながら調整すると良さそうです。
作成された動画等は ./outputs/demo/vid/svd/samples/
ディレクトリ以下に出力されます。
Docker の入っている環境であれば
$ sudo docker run -p 80:80 -v ./outputs/demo/vid/svd/samples:/usr/local/apache2/htdocs -d httpd
このようにして一時的にディレクトリを作れば、ファイルの転送も都度しなくてよいので楽でしょう。ブラウザからファイル群を確認できます。
この .mp4
をダウンロードすると動画化されたファイルを確認できます。
Enjoy!
参考
- Issues · Stability-AI/generative-models
- Stable Video Diffusion | Hacker News
- Stable Diffusion の Discord Server #stable-video-diffusion