FramePack :動画生成AIとその実行手順 on Paperspace Gradient

近年、テキストから動画を生成するAIの進化は目覚ましく、映像制作・ゲーム開発・シミュレーション分野で注目を集めています。その中でも特に画期的なアプローチを提供しているのが FramePack です。

本記事では、公式説明の背景を踏まえつつ、実際のノートブック実装にもとづいて、FramePackの特徴と導入手順を網羅的に解説します。なお、技術解説の部分は、Githubや論文を元に人工知能が生成したものです。誤りがあると思うので、詳細はFramePackのリポジトリにある論文などをご確認ください。


FramePackとは何か?

FramePackは、動画をフレーム単位で生成するのではなく、セクション単位(next-frame-section)で予測する構造を持つ、次世代の動画生成AIです。単なる「画像の繰り返し」ではなく、時間的に連続した構造を内部的に保持しながら進行的(progressive)に生成するのが最大の特徴です。

主な特徴:

特徴解説
🎞️ 次フレームセクション予測フレーム単体ではなく、セクション(複数フレーム)を一括生成
📦 入力コンテキストを定数長に圧縮動画の長さに関わらず、計算コストが一定
💻 ラップトップGPUでも13Bモデル実行可能モデル設計が非常に軽量・効率的.VRAM 6GBで動くと書いてある。
🚀 学習時のバッチサイズが大きい通常の動画モデルよりも高効率に学習できる
🖼️ 画像拡散モデルのような操作感「画像生成」の感覚で動画が生成できる直感的な設計

FramePackの実行ステップ:ノートブック

アップロードされたノートブックをもとに、FramePackの実行手順を順を追って紹介します。

CUDA・PyTorch環境の整備

FramePack公式ではCUDA 12.6を推奨していますが、CUDA 12.4で動きました。デフォルトのPaperspace Gradientの環境ではCUDA 12.4が上限なので、CUDA12.6を使うにはDockerコンテナーを作成する必要があったので手間が省けました。不要なCUDAを削除して、正しいバージョンを再インストールします。

!sudo apt-get --purge remove "cuda" -y
!wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
!sudo dpkg -i cuda-keyring_1.1-1_all.deb
!sudo apt-get update
!sudo apt-get -y install cuda-toolkit-12-4

インストール後にカーネルをリスタートすると反映されると思います。


ソースコードのクローンと依存ライブラリのインストール

!git clone https://github.com/lllyasviel/FramePack
!pip install torch==2.6.0 torchvision==0.21.0 torchaudio==2.6.0 --index-url https://download.pytorch.org/whl/cu124
!pip install accelerate diffusers transformers gradio sentencepiece pillow av numpy scipy requests torchsde einops opencv-contrib-python safetensors

FlashAttentionとbitsandbytesの手動セットアップ

  • FramePackでは高速演算のため、FlashAttentionを使用できます。他にもxformers, sage-attentionを使えるらしいですが、FlashAttentionを含めオプションです。これらをインストールしなくても 、PyTorch attentionをデフォルトでは使うようです.また、悪影響がある可能性があるので、最初の実行ではこれらのオプションを使わないことが推奨のようです。
  • bitsandbytesは、適切なパッケージが入っていないとプログラムを実行できなかったので必須だと思います。ただ、もしかしたらFlashAttentionを入れていたことが原因かもしれません。
  • 通常のpipではインストールできたことが無いので、今回はFlashAttentionはwhlファイルでインストール、bitsandbytesはソースビルドで導入しています。
!wget https://github.com/Dao-AILab/flash-attention/releases/download/v2.7.4.post1/flash_attn-2.7.4.post1+cu12torch2.6cxx11abiFALSE-cp311-cp311-linux_x86_64.whl
!pip install --no-dependencies --upgrade flash_attn-2.7.4.post1+cu12torch2.6cxx11abiFALSE-cp311-cp311-linux_x86_64.whl

!git clone https://github.com/TimDettmers/bitsandbytes.git
%cd bitsandbytes
!CUDA_VERSION=124 python setup.py install

Gradioで簡易WebUIを起動

%cd /notebooks/FramePack
!python demo_gradio.py --share
  • --shareオプションにより、外部ブラウザでもアクセス可能なURLが生成されます。
  • テキストプロンプトや画像を入力し、数秒~数十秒で動画が生成されます。
  • 以下のような画面が表示されます。詳しくは、本家のGithubの説明を確認いただきたいですが、「Use TeaCache」のチェックは無い方が良い動画は生成されそうです(生成が遅くなるみたいですが)。
  • 静止画をアプロードしてプロンプトを入力し、「Start Generation」を押せば動画生成が始まる。まず1秒程度の動画が生成され、次に2秒の長さ、3秒の長さ・・・、といったように徐々に長い動画が生成されていくのが特徴みたい。
  • 過程で生成した動画を含め、すべての動画はOutputフォルダに保存されてました。

ストレージの最適化(後始末)

生成時に自動でダウンロードされるHuggingFaceモデルデータ(hf_download)は、不要になったら以下で削除できます。削除しないとVolumeを圧迫して容易に50GBをオーバーします。

%rm -r /notebooks/FramePack/hf_download
%rm -r .Trash-0

結果(生成された動画)

まずはFramePackのGithubに書いてあったSanity Checkのための動画生成を行った。ちょっとした環境の違いで生成される動画の結果が変わってしまうらしく、環境構築後にまずこの動画を生成することが推奨されていた。概ね問題なさそう。

オリジナルイメージはこれ.プロンプトは元のサイトにかいてあった「The man dances energetically, leaping mid-air with fluid arm swings and quick footwork.」

とりあえず動作は問題ないようなので、自分の画像で試してみる。まずは犬で、5秒の動画を生成。

使用した画像は以前の記事で使った画像.プロンプトは、「The goofy poodle jumps up and spins in the air with its tongue flapping wildly and tail wagging like a propeller.」
(おバカなトイプードルが舌をバタバタさせながらジャンプし、プロペラのように尻尾を振りつつ空中でくるっと回転する。)

以下の動画は、10秒の動画を生成した例である。おおむね問題ないように見えるが、最初の回転の時に顔が瞬間的に移動しており、一部変な動画である。120秒までの長い動画が作れるようであるが、5秒とかの方が安定するのかもしれない。

10秒の動画を生成.プロンプトは、「The cheerful girl spins with arms wide open, twirling in her red dress as her hair dances in the air.」
(赤いドレスの少女が腕を広げてくるくると回り、髪の毛がふわりと舞う。)
出典は、<画像1/3>『スパイファミリー』おめかししたアーニャとヨルがかわいい! 新作フィギュアは親子揃えたくなるドレス姿 – 電撃オンライン

以下の動画は、明らかに変な動画である。GUIにネガティブプロンプトを入れる場所がなかったので、たまに変なところに足が生えたりしてしまうのかもしれない。

プロンプトは忘れたが、前回と同じプロンプト(「尻尾を振りながらお手をする」みたいな感じ)にしたはず。顔が強制的に変わっている。そして、第5の足が生えてきている。

5秒や10秒の動画が生成できた。Wan2.1で作ったときの方が元の画像の特徴を反映している気もする。これはFramePackが原因というより、サンプルのコードを見た感じHunyuanVideoを使用していることが原因かもしれない。

FramePackは汎用性が売りで、既存の 動画生成AIであるWan や HunyuanVideo をベースにしているらしく、それらのモデルを微調整しているのみであることも特徴の1つらしい。そのため、Wan2.1を使うこともできるのかもしれない。

30fpsの動画が生成されているようなので、割とヌルヌル動く。Wan2.1と比較すると短い時間で生成できる印象がある。


まとめ:FramePackは誰にとって有用か?

FramePackは、次のようなユーザーに特におすすめです:

  • 生成系映像に興味のあるクリエイター
  • 学術的に動画生成を研究する研究者
  • 計算リソースに制限のある個人開発者
  • Stable Diffusionなど画像生成技術に慣れたユーザー

リンク集


今後の応用アイデア

  • 自動アニメーション生成
  • ドキュメンタリー風ナレーション付き映像の生成
  • ゲームのNPCモーションの自動合成
  • 教育や研究用の実験動画の自動可視化

なお、本記事はソースコードを元に生成AIに作成させました。一部情報が間違っていることもあると思います。


コメント

タイトルとURLをコピーしました