動画生成AIと言えば、OpenAIのSoraが圧倒的な存在となっています。
しかし、2024年4月時点でSoraは一般公開されていません。
そんなSoraをオープンソースにしようという動きがあります。
それが、Open-Sora-Planです。
この記事では、Open-Sora-Planをローカル環境で利用する方法を解説しています。
本記事の内容
- Open-Sora-Planとは?
- Open-Sora-Planのシステム要件
- Open-Sora-Planのインストール
- Open-Sora-Planの動作確認
それでは、上記に沿って解説していきます。
Open-Sora-Planとは?
Open-Sora-Planは、Soraのオープンソース版を目指して進められているプロジェクトです。
Soraは、OpenAIが開発したテキストから動画を生成するAIモデルです。
主な特徴は以下になります。
- ユーザーが入力したテキストの指示に基づいて、最大1分間の高品質な動画を生成できる。
- 物理世界における複雑なシーンやキャラクターの動きを理解し、正確にシミュレーションできる。
- 言語を深く理解し、テキストプロンプトを正しく解釈して、感情豊かなキャラクターを生成できる。
- 1つの動画内で複数のショットを作成し、キャラクターや視覚的スタイルを一貫して維持できる。
- 芸術家やデザイナー、映画製作者などのフィードバックを得ながら、クリエイティブな専門家に役立つモデルを目指している。
- 動画生成における物理シミュレーションや因果関係の理解などにまだ弱点がある。
- 誤情報や有害コンテンツのリスクを最小限に抑えるため、専門家によるテストやポリシーの整備を行っている。
- 拡散モデルとトランスフォーマーアーキテクチャを採用し、DALL·E 3の画像キャプション生成技術なども活用している。
要するに、Soraは自然言語の指示から高品質で創造的な動画を生成できる先進的なAIモデルで、
将来的にAGI(汎用人工知能)の実現に重要な基盤となることを目指しているようです。
「自然言語の指示から高品質で創造的な動画を生成できる先進的なAIモデル」
Open-Sora-Planは、おそらく動画生成にフォーカスしていると思われます。
Open-Sora-Planのシステム要件
Open-Sora-Planのシステム要件は、主に以下となります。
- Python
- PyTorch
- GPU
Pythonのバージョンが極端に古い場合は、アップグレードしておきましょう。
PyTorchは、GPU版をインストールします。
GPU版でないと、Open-Sora-Planはまともに動きません。
したがって、事前にGPU版PyTorchをインストールしておきます。
最新バージョンでも問題ありません。
GPUメモリのサイズに関しては、特に情報を見つけることができませんでした。
私の環境(24GB)では、Open-Sora-Planが動くことを確認できています。
Open-Sora-Planのインストール
Open-Sora-PlanのWeb UI版がデモとして公開されています。
これをそのままインストールしましょう。
git clone https://huggingface.co/spaces/LanguageBind/Open-Sora-Plan-v1.0.0
まずは、クローンします。
そして、リポジトリルートに移動しておきます。
cd Open-Sora-Plan-v1.0.0
ここでrequirements.txtを確認できます。
requirements.txt
torch==2.1.2 torchvision==0.16.2 transformers==4.39.1 accelerate==0.28.0 albumentations==1.4.0 av==11.0.0 decord==0.6.0 einops==0.7.0 fastapi==0.110.0 gdown==5.1.0 h5py==3.10.0 idna==3.6 imageio==2.34.0 matplotlib==3.7.5 numpy==1.24.4 omegaconf==2.1.1 opencv-python==4.9.0.80 opencv-python-headless==4.9.0.80 pandas==2.0.3 pillow==10.2.0 pydub==0.25.1 pytorch-lightning==2.2.1 pytorchvideo==0.1.5 PyYAML==6.0.1 regex==2023.12.25 requests==2.31.0 scikit-learn==1.3.2 scipy==1.10.1 six==1.16.0 test-tube==0.7.5 timm==0.9.16 torchdiffeq==0.2.3 torchmetrics==1.3.2 tqdm==4.66.2 urllib3==2.2.1 uvicorn==0.27.1 diffusers==0.24.0 scikit-video==1.1.11 imageio-ffmpeg==0.4.9 sentencepiece==0.1.99 beautifulsoup4==4.12.3 ftfy==6.1.3 moviepy==1.0.3 wandb==0.16.3 tensorboard==2.14.0 pydantic==2.6.4 deepspeed==0.12.6
Windowsの場合は、必ず以下をコメントにしましょう。
#torch==2.1.2 #torchvision==0.16.2
コメントにしないと、CPU版に上書きされてしまいます。
あと、OS問わずにGradioを追加する必要があります。
gradio
requirements.txtを修正できたら、次のコマンドを実行します。
pip install -r requirements.txt
処理が完了するまでには、そこそこ時間がかかります。
Open-Sora-Planの動作確認
最初にapp.pyから、Spaces関連のコードを無効にしておきます。
ダウンロードしたリポジトリは、Hugging FaceのSpacesで動く前提となっています。
そのため、app.pyでSpaces関連のコードを無効にします。
Web UIの起動には、次のコマンドを用います。
python app.py
初回起動時には、いろいろとモデルをダウンロードします。
正常に起動できれば、次のように表示されます。
Running on local URL: http://127.0.0.1:7860 To create a public link, set `share=True` in `launch()`.
上記URLにアクセスして、デモと同じ画面を確認できればOK。
あとは、プロンプトを入力して動画を作成するだけです。
ただし、私の環境では次のようなエラーが出ました。
RuntimeError: Input type (float) and bias type (struct c10::Half) should be the same
エラーは、次の箇所で発生しているようです。
/Lib/site-packages/torch/nn/modules/conv.py
エラーは、入力テンソルのデータ型とバイアステンソルのデータ型が異なるという内容になります。
そのため、統一する必要があります。
- バイアスをfloat型に変換する
- 入力をHalf型に変換する
上記のどちらでもよいのですが、ここでは「入力をHalf型に変換する」で対応します。
input = input.to(dtype=torch.half) # 入力のデータ型をHalfに変換 return F.conv3d( input, weight, bias, self.stride, self.padding, self.dilation, self.groups )
ただし、この修正はアドホックであることを認識しておきましょう。
torchを更新するとconv.pyは、上書きされてしまいますからね。
本来なら、app.pyを修正することで対応できればよいのでしょうけど。
所詮はデモなんで、そこまで手間をかける必要もないと言えます。