ローカルで動く生成AIにハマって LM Studio や Stable Diffusionを触ってきた。
次は外部と通信しないローカル動画生成を「FramePack」でやってみた。
この記事の要約
torch.OutOfMemoryErrorが出たら、動かすだけならFramePack-nv20のフォーク版に置き換えで動作可能。
インストール
FramePackを知ったのは以下の ascii.jp の記事
以下の記事の通りインストールをしていく。
FramePackのポート番号変更
FramePack起動するときのポート番号は「7860」になっていてStable Diffusionと重複している。
もし7860が使用中なら、7861、7862と自動的にズレるので起動しないことはない。
あえてポート番号を明示的に指定したいなら、environment.batに1行追加すればOKだった。(あとrun.bat に --portを追加してもOK)
set GRADIO_SERVER_PORT=[ポート番号]
torch.OutOfMemoryError が出て困った
上記の記事の通りインストールが終わって動画を作ろうとすると、生成開始直後にエラーが出て止まってしまった。
torch.OutOfMemoryError: CUDA out of memory. Tried to allocate 30.27 GiB. GPU 0 has a total capacity of 12.00 GiB of which 0 bytes is free. Of the allocated memory 36.90 GiB is allocated by PyTorch, and 398.40 MiB is reserved by PyTorch but unallocated. If reserved but unallocated memory is large try setting PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True to avoid fragmentation. See documentation for Memory Management (https://pytorch.org/docs/stable/notes/cuda.html#environment-variables)
Unloaded DynamicSwap_LlamaModel as complete.
Unloaded CLIPTextModel as complete.
Unloaded SiglipVisionModel as complete.
Unloaded AutoencoderKLHunyuanVideo as complete.
Unloaded DynamicSwap_HunyuanVideoTransformer3DModelPacked as complete.
torch.OutOfMemoryError: CUDA out of memory. なので、CUDAのメモリが足りないというエラー
私の環境で使っているGPUが古い(GrForce RTX 2060 12GB)のが原因かもしれない。あるいは、最近のランタイムのアップデートで起きるようになったと書いている人もいた
しかたないので、FramePack-nv20のフォーク版に置き換えて対応した
FramePack-nv20のフォーク版 のダウンロード
ダウンロードしたファイルに置き換え
ダウンロードしたZIPを展開して、エラーが出るFramePackのファイルと置き換える。
置き換えるファイルは「diffusers_helper」フォルダと「demo_gradio.py」ファイルの2つを、「webui」の中のファイルと置き換える。
元々のFramePackのファイルを捨てたり上書きするのがちょっと不安だったので、私は既にあるファイルに「_new」を付けて名前を変えておいて、ダウンロードしたファイルを置くことにした。

run.batの修正
この状態で起動すると、また別のエラーが出るようになった。
usage: demo_gradio.py [-h] [--share] [--server SERVER] [--port PORT]
demo_gradio.py: error: unrecognized arguments: --inbrowser
demo_gradio.py の引数に指定されている「--inbrowser」なんて知らない!というエラーだ。(フォーク版にしたから新しい引数を知らない)
run.bat をテキストエディタで開いて、以下のように「--inbrowser」を消せば解決する。
"%DIR%\python\python.exe" demo_gradio.py --server 127.0.0.1
私は消すのがちょっと不安になる性質なので、既にある行は @remでコメントにしておいた

FramePackで動画作成
上記の操作で無事にFramePackが起動するようになった。
試しにLM Studio+StableDiffusionで作成したサイバーな絵を入れて動かしてみる。
踊る
まずはデフォルトでオススメされているプロンプト
The girl dances gracefully, with clear movements, full of charm.
以下の動画が小さい&粗いのは、mp4をGIFに変換したせい
実際に生成された動画は、元画像と同じサイズで画質も同等だった。

つま先で回る
デフォルトのプロンプトが良かったので、ちょっと変えて回ってもらった。
The girl spinning around on tiptoes, gracefully, with clear movements, full of charm.
最初の半回転で首がモゲそうだったり、最後に逆回転したりしたが、全体としてまあ綺麗だった。
見えていない背中も補完されている。

涙をぬぐって歩く
表情をどれだけ変えられるかやってみた。涙をぬぐって笑顔になる、を歩きながらやってみた。
The girl wipe away tears and smile subtly, walking, gracefully, with clear movements, full of charm.
思った通りか、というとそうでもないが、ちゃんと目をつぶって涙をぬぐう仕草をしている。歩いて、手前に近づいているようにも見える

全体として、ローカルでここまでできるか!という良い驚きでした。


