VRAM6GBでも動く!動画生成AI「FramePack」のデモを試してみた

AIで動画生成する際に大抵ネックとなるのが、モデルサイズと生成時間だと思います。FramePackは動画生成の軽量化を狙った手法で、30fpsの動画をVRAMが6GBのPCでも生成できる点が一つの売りらしいです。

論文をちょろっと見た感じだと、情報として入力している過去フレームを重要度によって圧縮する(古いものをほぼ無視する)ことで過去フレーム分のメモリサイズを小さくするという手法でしょうか。つまりtransformerに入力するcontextのサイズが一定サイズ以下に抑えられるため、VRAMが最大6GB程度で済むということのような気がします。

FramePack
lllyasviel.github.io
Frame Context Packing and Drift Prevention in Next-Frame-Prediction Video Diffusion Models

We present a neural network structure, FramePack, to train next-frame (or next-frame-section) prediction models for video generation. FramePack compresses input frame contexts with frame-wise importance so that more frames can be encoded within a fixed context length, with more important frames having longer contexts. The frame importance can be measured using time proximity, feature similarity, or hybrid metrics. The packing method allows for inference with thousands of frames and training with relatively large batch sizes. We also present drift prevention methods to address observation bias (error accumulation), including early-established endpoints, adjusted sampling orders, and discrete history representation. Ablation studies validate the effectiveness of the anti-drifting methods in both single-directional video streaming and bi-directional video generation. Finally, we show that existing video diffusion models can be finetuned with FramePack, and analyze the differences between different packing schedules.

arxiv.org

この記事では論文の公式デモを試してみます。実行手順も載せておくので、試してみたい方はインストラクションに沿って実行してみてください。

必要環境

  • RTX 30XX以降のNVIDIA GPU(fp16, bf16がサポートされている必要がある)
    • 2000番台より前は動作確認してないとのこと
  • Linux or Windows
  • 少なくとも6GBのVRAM

実行環境

  • CPU: Intel Core i5-12400
  • GPU: RTX3050(VRAM: 8GB)
  • RAM: 16GB
  • OS: Windows11(WSL2: Ubuntu 24.04)

実行方法(Linux)

基本的には下記リポジトリにある内容をかみ砕いてるだけなので、英語ぱっと読める方はリポジトリ側見た方が間違いがなくて良いかもしれません。

GitHub - lllyasviel/FramePack: Lets make video diffusion practical!

Lets make video diffusion practical! Contribute to lllyasviel/FramePack development by creating an account on GitHub.

github.com

Cudaの導入

自分の場合は導入済だったので申し訳ないですがここでは触れません(正直どうやって導入したか覚えてない)。以下のコマンドで確認できるため、もしコマンドがありません的なメッセージが出たら、調べてインストールしてください

Terminal window
nvidia-smi # GPUが認識されているかの確認
nvcc -V # cudaのバージョン確認

リポジトリをclone

Terminal window
# 任意のworkspaceを作成し移動
mkdir ~/workspace
cd ~/workspace
# 現在のリポジトリにcloneする
git clone https://github.com/lllyasviel/FramePack.git .

依存関係のinstall

任意の方法でpython3.10と依存ライブラリをインストールします。自分はpyenvを使用しましたが、aptとかでも可能です。

Terminal window
# pythonのインストール
pyenv install 3.10
pyenv local 3.10
# 仮想環境を作成(globalで良ければ作らなくてもよい)
python -m venv venv
source venv/bin/activate
# pythonパッケージのインストール
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu126
pip install -r requirements.txt

デモの実行

モデルのダウンロードなどが走るためだいぶ時間がかかりますが、気長に待ちましょう。

Terminal window
python demo_gradio.py

デモアプリへのアクセス

デモの起動が完了すると以下のように表示されるので、ブラウザでアクセスします

Terminal window
* Running on local URL: http://0.0.0.0:7860

表示された!!!

表示された!!! 1
表示された!!! 1

生成結果

設定は全部デフォルトのままで生成してます。1秒分のフレームを生成するのに大体10分ほど。

生成結果1

プロンプト1
プロンプト1

あー、多分最初のポーズが変則的過ぎましたね…あとプリーツも表現しきれてない。

生成結果2

悲しいので別の画像でリベンジ。肖像権とか調べるの面倒になったので以前生成した画像から。

プロンプト2
プロンプト2

今度は動きが小さめ。

最後に

時間はかかりつつも、VRAM8GBでも普通に生成できました。仕組み的に生成フレーム増やしても生成時間が線形的に増えてくだけだと思うので、低スペックで長めの動画生成したいときとか、意外に有用だったりするんじゃないかなと思います。

まあ運悪いと崩れるのは生成AIの宿命ですね…。仕組み上減ることはあってもなくなることはなさそうです。

導入で詰まったとか、何か質問などあれば気軽にコメントください。