Open Soraを使っておうちのWindowsで動画生成する

Open-Soraという、オープンな動画生成モデルのバージョン1.2が6/17に出ていたのでWindowsで試してみました。
GPUメモリほしい。
GitHub - hpcaitech/Open-Sora: Open-Sora: Democratizing Efficient Video Production for All

Open-Soraのアーキテクチャとかはこちらが詳しい
【次世代動画生成】Open-Sora徹底解説【OSS版Sora?】

Windowsの場合、SpacesというモジュールがForkProcessesというモジュールを使っていて、これがUNIX系OSじゃないと動かないのでWSLを使う必要があります。

ということでWSLへのCUDAのインストール。11.8を使うことにします。ここの手順どおり。
https://developer.nvidia.com/cuda-11-8-0-download-archive?target_os=Linux&target_arch=x86_64&Distribution=WSL-Ubuntu&target_version=2.0&target_type=deb_local

wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin
sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda-repo-wsl-ubuntu-11-8-local_11.8.0-1_amd64.deb
sudo dpkg -i cuda-repo-wsl-ubuntu-11-8-local_11.8.0-1_amd64.deb
sudo cp /var/cuda-repo-wsl-ubuntu-11-8-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda

リポジトリのclone

git clone https://github.com/hpcaitech/Open-Sora.git
cd Open-Sora

venvとか作っておくほうがいいですね。

python -m venv opensora
source opensora/bin/activate

依存のインストール

pip install -v .

CUDA11.8を使う場合は、xformersは自分でインストールします。

pip install -U xformers --index-url https://download.pytorch.org/whl/cu118

PyTorch 2.3.0を入れてくるので、改めて2.3.1を入れなおし。 https://pytorch.org/get-started/locally/

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

flash_attnも必要

pip install flash_attn --no-build-isolation

あと、ffmpegが必要です。なくてもいいけど、SORAのロゴを入れるのに使います。

sudo apt-get install ffmpeg

入れなくても動くけど、もしapexを入れるならpython.hがないというエラーを回避するためにpython-devが必要です。バージョンはインストールされているPythonにあわせてください。

sudo apt install python3.11-dev

apexを入れる場合のインストールはこう。

pip install -v --disable-pip-version-check --no-cache-dir --no-build-isolation --config-settings "--build-option=--cpp_ext" --config-settings "--build-option=--cuda_ext" git+https://github.com/NVIDIA/apex.git

そしたら起動

python gradio/app.py

360p 2秒 30ステップでRTX 4060 Ti 16GBだと2時間半かかりました。プロンプトは「2 cats are fignting」

画像を指定してやってみます。
「the man drinking beer」だけど、そうくるかーという感じw

数時間かかるのは、モデルがGPUに乗り切れてなくてCPUにオフロードしてるからです。
動画が安定しないのは、どうやら360p以下ではまともな絵が生成できないっぽい。
144pで「cat is dancing on the shibuya street」ではこんな感じになりました。

それではと、480pの動画を作ろうと思ったら、2時間たっても1stepも進まないので絶望。

GPUメモリは24GBでも足りないみたいなので、家庭用GPUでは無理そうですね。4060 Ti 16GBを2枚挿すといけるのかも?

追記: Google Colabに課金して動かす手順をまとめました。あとdancingとか動きを指定するとダメぽく、sittingとするなど静止画の背景を動かすくらいでやるとよさそうです。
Open SoraをGoogle Colabで動かして高速動画生成 - きしだのHatena