ラベル LTX-Video の投稿を表示しています。 すべての投稿を表示
ラベル LTX-Video の投稿を表示しています。 すべての投稿を表示

2026年5月12日火曜日

LTX2 を M2 Pro Mac mini で動かす

LTX2 を M2 Pro Mac mini で動かす

概要

MLX 版があるのでそれを使って M2 Pro 上で動作させてみます

環境

  • M2 Pro mac mini (16GB)
  • macOS 26.4.1
  • LTX2-MLX c4f8c44
  • Python 3.12.13

インストール

  • git clone --depth=1 https://github.com/Acelogic/LTX-2-MLX.git
  • cd LTX-2-MLX
  • pyenv local 3.12.13
  • uv sync --all-groups

モデルダウンロード

  • uv run scripts/download_weights.py

注意事項

gemma3 はライセンスに同意する必要がある

  • https://huggingface.co/google/gemma-3-12b-it -> Acknowledge license
  • huggingface のアカウントが必要
  • エラーになった場合は一度 rm -rf weights/gemma-3-12b してから再度 uv run scripts/download_weights.py する

distilled は 43GB あるので動かない場合は distilled-fp8 27GB を変わりにダウンロードし使うこと

  • uv run scripts/download_weights.py 実行時に 3 - Custom - Choose individual weights を選択しダウンロードするモデルを個別に選択する

動画生成(通常)

uv run python scripts/generate.py "A realistic cat riding a skateboard on a street, smoothly moving forward, natural motion, full body visible, cinematic lighting, high detail, 4k, camera tracking shot, shallow depth of field" --height 512 --width 512

おそらくこれは M2 Pro mac mini ではエラーになります

動画生成(fp8版)

uv run python scripts/generate.py "A realistic cat riding a skateboard on a street, smoothly moving forward, natural motion, full body visible, cinematic lighting, high detail, 4k, camera tracking shot, shallow depth of field" --height 512 --width 512 --fp8

画像サイズを下げれば何とかこれでもいけるかもしれませんがおそらくこれも不可能です

動画生成(fp8版+低メモリ)

uv run python scripts/generate.py "A realistic cat riding a skateboard on a street" --height 64 --width 96 --fp8 --low-memory --frames 9

おそらくこれでないと M2 Pro mac mini のスペックでは無理かなと思います
画像サイズとプロンプトの長さ、フレーム数も下げています

動画生成(fp8版+低メモリ+fp16フラグ)

uv run python scripts/generate.py "A realistic cat riding a skateboard on a street" --height 64 --width 96 --fp8 --low-memory --frames 9 --fp16 --pipeline one-stage --cfg 5.0

トラブルシューティング

libc++abi: terminating due to uncaught exception of type std::runtime_error: [METAL] Command buffer execution failed: Impacting Interactivity (0000000e:kIOGPUCommandBufferCallbackErrorImpactingInteractivity)

基本的にはメモリ不足が原因です

There appear to be 1 leaked semaphore objects to clean up at shutdown

これもメモリ不足の場合はほとんどです

最後に

LTX2-MLX を M2 Pro mac mini で動かしてみました
何とか動きますが量子化済みのモデルでないと動かないのと生成する動画サイズもかなり小さく短いものでないと無理でした

本当にギリギリなのでもしかしたら環境によっては動かない可能性もあるのでご了承ください

参考サイト

2025年9月30日火曜日

LTX-Video の inference.py でメモリ使用量を抑えるテクニック

LTX-Video の inference.py でメモリ使用量を抑えるテクニック

概要

基本何もしないと30GBほどは消費します
VRAM の小さいマシンでも動作させるようにする方法を紹介します

環境

  • macOS 15.7
  • Python 3.10.12
  • LTX-Video (main revision: 53d263f31727a0021bf65e3e413d1cb139abb86b)

CPUオフロードをオンにする

  • source env/bin/activate
  • pip install accelerate
  • vim ltx_video/inference.py
     pipeline = LTXVideoPipeline(**submodel_dict)
     pipeline = pipeline.to(device)
+    pipeline.enable_attention_slicing()
+    pipeline.enable_model_cpu_offload()
     return pipeline

288 行目あたりに上記を追加します

distilled なモデルを使う

configs/ltxv-2b-0.9.8-distilled.yaml を使います

生成する動画の長さを短くする

  • num_frames を下げる (デフォルトは121)
  • frame_rate を下げる (デフォルトは30)

でデフォルトは4秒((121-1)/30)の動画になるのですがどちらかを下げて動画の長さを短くしてもメモリ消費量を抑えられます

入力する画像のサイズを小さくする

  • 512x512ではな384x384などにする
  • それでもダメなら256x256にする
  • SD-WebUI に合わせるなら896x1152から256x384に比率を抑えながら解像度を下げて入力画像にする

最後に

Windows なら更に xformers の対応や Q8-Kernels もできます

2025年9月26日金曜日

LTX-Video を M2 mac mini で動かしてみた

LTX-Video を M2 mac mini で動かしてみた

概要

LTX-Video は軽量な動画生成モデルです
今回は M2Pro mac mini 上で動かしてみました

環境

  • macOS 15.7
  • Python 3.10.12
  • LTX-Video (main revision: 53d263f31727a0021bf65e3e413d1cb139abb86b)

環境準備

  • git clone https://github.com/Lightricks/LTX-Video.git
  • cd LTX-Video
  • pyenv local 3.10.12
  • python -m venv env
  • source env/bin/activate
  • python -m pip install -e .\[inference\]
  • pip install av imageio 'imageio[ffmpeg]'

なぜか av と imageio がインストールされていなかったので手動でインストールしました

実行

今回使用するモデルは ltxv-2b-0.9.8-distilled になります
13b もありますが M2 Pro mac mini では動作しないと判断し軽量な 2b を使っています

入力の画像のサイズは 512x512 にしています

プロンプトは画像に合わせてどういう動画にしたいのかを入力する感じです

PYTORCH_MPS_HIGH_WATERMARK_RATIO=0.0 \
python inference.py \
--prompt "A cute domestic short-haired cat riding a skateboard quickly along the street, cinematic, smooth motion, highly detailed, realistic lighting" \
--conditioning_media_paths ./input.png \
--conditioning_start_frames 0 \
--height 512 \
--width 512 \
--num_frames 16 \
--pipeline_config configs/ltxv-2b-0.9.8-distilled.yaml

最初に各種モデルのダウンロードが開始されます
結構いろいろなモデルをダウンロードするので全体で40GBほどあるので注意してください

num_frames を大きくすれば動画の長さも長くなります
ただ消費するメモリと生成時間も長くなるので注意してください
上記で紹介している num_frames=6 で生成までにだいたい20分ほどかかりました
動画のサイズは1秒にも満たない長さです

消費メモリはスワップも含めて30GBほどです
CPUとGPUは70%ほどの使用量で推移していました

生成されたファイルは outputs/2025-09-26/video_output_0_a-cute-domestic-shorthaired-cat_171198_512x512x6_1.mp4 という感じで生成されます

生成する動画の長さ

num_frames / frame_rate オプションで決まります
inference.py だとデフォルトは num_frames=121、frame_rate=30 なので4秒の動画が生成されます

なので今回のサンプルコマンドだと 16/30 なので0.5秒の動画になります
なお num_frames は作成したフレーム数+1するほうがいいようです

ちなみに M2 Pro mac mini で生成した際にデフォルトの値でも生成できました
生成時間は20分ほどでした
使用するメモリやCPU/GPUは変わりませんでした (生成する動画の長さに応じて使用するリソースは変化しないのかも?)

4秒版の動画は今の通りです

ちなみに num_frames=241 にしたところ untimeError: Invalid buffer size: 9.16 GiB が発生したので M2 Pro mac mini では 8 秒の長さが限界かもしれません

追記: 画像のサイズを256x256にし動画のサイズも256x256にしたらnum_frames=241でも生成できました

pip freeze

念の為動作したバージョンをメモしておきます

av==15.1.0
certifi==2025.8.3
charset-normalizer==3.4.3
diffusers==0.35.1
einops==0.8.1
filelock==3.19.1
fsspec==2025.9.0
hf-xet==1.1.10
huggingface-hub==0.35.1
idna==3.10
imageio==2.37.0
imageio-ffmpeg==0.6.0
importlib_metadata==8.7.0
Jinja2==3.1.6
-e git+https://github.com/Lightricks/LTX-Video.git@53d263f31727a0021bf65e3e413d1cb139abb86b#egg=ltx_video
MarkupSafe==3.0.2
mpmath==1.3.0
networkx==3.4.2
numpy==2.2.6
packaging==25.0
pillow==11.3.0
psutil==7.1.0
PyYAML==6.0.3
regex==2025.9.18
requests==2.32.5
safetensors==0.6.2
sentencepiece==0.2.1
sympy==1.14.0
timm==1.0.20
tokenizers==0.21.4
torch==2.8.0
torchvision==0.23.0
tqdm==4.67.1
transformers==4.51.3
typing_extensions==4.15.0
urllib3==2.5.0
zipp==3.23.0

最後に

LTX-Video を M2 pro mac mini 上で動かしてみました
これまで Stable Video Diffusion を試してきましたがそれよりも精度や生成スピードなどいろいろな点が良かった気がします

今回は2bモデルを使いましたが13bモデルのほうが精度はいいはずなので機会があれば試してみたいです (ltxv-13b-0.9.8-distilled)

ちなみに種類としては

  • dev -> 高クオリティ、低スピード、VRAM大量消費
  • mix -> 中クオリティ、高スピード、VRAM中消費
  • distilled -> 低クオリティ、中スピード、VRAM低消費

という感じっぽいです

参考サイト