🚀 CogVideoX1.5-5B-I2V
CogVideoXは、QingYingに似たオープンソースのビデオ生成モデルです。このモデルは、画像からビデオを生成する機能を提供し、特定のパラメータや設定に基づいて高品質なビデオを生成できます。
📄 中文で読む |
🤗 Huggingface Space |
🌐 Github |
📜 arxiv
📍 清影 と APIプラットフォーム を訪れて、商用ビデオ生成モデルを体験してください。
✨ 主な機能
モデルの概要
CogVideoXは、オープンソースのビデオ生成モデルです。以下の表に、この世代で利用可能なビデオ生成モデルの情報を示します。
プロパティ |
詳細 |
モデル名 |
CogVideoX1.5-5B、CogVideoX1.5-5B-I2V (現在のリポジトリ) |
ビデオ解像度 |
CogVideoX1.5-5B: 1360 * 768;CogVideoX1.5-5B-I2V: Min(W, H) = 768 768 ≤ Max(W, H) ≤ 1360 Max(W, H) % 16 = 0 |
推論精度 |
BF16 (推奨)、FP16、FP32、FP8*、INT8、INT4はサポートされていません |
シングルGPU推論メモリ消費量 |
BF16: 最小9GB* |
マルチGPU推論メモリ消費量 |
BF16: diffusersを使用して24GB* |
推論速度 (Step = 50, FP/BF16) |
シングルA100: ~1000秒 (5秒のビデオ) シングルH100: ~550秒 (5秒のビデオ) |
プロンプト言語 |
英語* |
最大プロンプト長 |
224トークン |
ビデオ長 |
5または10秒 |
フレームレート |
16フレーム/秒 |
データの説明
diffusers
ライブラリを使用したテストでは、ライブラリに含まれるすべての最適化が有効になっています。このスキームは、非NVIDIA A100/H100デバイスではテストされていません。一般的に、すべてのNVIDIA Ampereアーキテクチャ以上のデバイスで動作するはずです。最適化を無効にすると、VRAMの使用量が3倍になりますが、速度が3 - 4倍になります。特定の最適化を選択的に無効にすることができます。
pipe.enable_sequential_cpu_offload()
pipe.vae.enable_slicing()
pipe.vae.enable_tiling()
- マルチGPU推論では、
enable_sequential_cpu_offload()
の最適化を無効にする必要があります。
- INT8モデルを使用すると、推論速度が低下しますが、低VRAMのGPUの要件を満たし、ビデオ品質の低下を最小限に抑えることができますが、速度が大幅に低下するという犠牲があります。
- PytorchAO と Optimum-quanto を使用して、テキストエンコーダ、Transformer、VAEモジュールを量子化することができ、CogVideoXのメモリ要件を削減し、小さなVRAMのGPUでモデルを実行できるようにします。TorchAOの量子化は
torch.compile
と完全に互換性があり、推論速度を大幅に向上させます。NVIDIA H100以上では FP8
精度が必要で、これには torch
、torchao
、diffusers
、accelerate
のソースインストールが必要です。CUDA 12.4
の使用をお勧めします。
- 推論速度のテストでも上記のVRAM最適化を使用しており、最適化を行わない場合、速度は約10%向上します。
diffusers
バージョンのモデルのみが量子化をサポートしています。
- モデルは英語の入力のみをサポートしています。他の言語は、プロンプト作成時に大規模モデルで英語に翻訳する必要があります。
注意事項
- SAT を使用して、SATバージョンのモデルの推論と微調整を行います。詳細はGitHubを確認してください。
📦 インストール
このモデルは、Hugging Face diffusersライブラリを使用したデプロイをサポートしています。以下の手順に従って始めることができます。
GitHubを訪れて、プロンプトの最適化と変換を確認することをお勧めします。これにより、より良い体験が得られます。
- 必要な依存関係をインストールします。
# diffusers (ソースから)
# transformers>=4.46.2
# accelerate>=1.1.1
# imageio-ffmpeg>=0.5.1
pip install git+https://github.com/huggingface/diffusers
pip install --upgrade transformers accelerate diffusers imageio-ffmpeg
💻 使用例
基本的な使用法
import torch
from diffusers import CogVideoXImageToVideoPipeline
from diffusers.utils import export_to_video, load_image
prompt = "A little girl is riding a bicycle at high speed. Focused, detailed, realistic."
image = load_image(image="input.jpg")
pipe = CogVideoXImageToVideoPipeline.from_pretrained(
"THUDM/CogVideoX1.5-5B-I2V",
torch_dtype=torch.bfloat16
)
pipe.enable_sequential_cpu_offload()
pipe.vae.enable_slicing()
pipe.vae.enable_tiling()
video = pipe(
prompt=prompt,
image=image,
num_videos_per_prompt=1,
num_inference_steps=50,
num_frames=81,
guidance_scale=6,
generator=torch.Generator(device="cuda").manual_seed(42),
).frames[0]
export_to_video(video, "output.mp4", fps=8)
高度な使用法
import torch
from diffusers import AutoencoderKLCogVideoX, CogVideoXTransformer3DModel, CogVideoXImageToVideoPipeline
from diffusers.utils import export_to_video, load_image
from transformers import T5EncoderModel
from torchao.quantization import quantize_, int8_weight_only
quantization = int8_weight_only
text_encoder = T5EncoderModel.from_pretrained("THUDM/CogVideoX1.5-5B-I2V", subfolder="text_encoder",
torch_dtype=torch.bfloat16)
quantize_(text_encoder, quantization())
transformer = CogVideoXTransformer3DModel.from_pretrained("THUDM/CogVideoX1.5-5B-I2V", subfolder="transformer",
torch_dtype=torch.bfloat16)
quantize_(transformer, quantization())
vae = AutoencoderKLCogVideoX.from_pretrained("THUDM/CogVideoX1.5-5B-I2V", subfolder="vae", torch_dtype=torch.bfloat16)
quantize_(vae, quantization())
pipe = CogVideoXImageToVideoPipeline.from_pretrained(
"THUDM/CogVideoX1.5-5B-I2V",
text_encoder=text_encoder,
transformer=transformer,
vae=vae,
torch_dtype=torch.bfloat16,
)
pipe.enable_model_cpu_offload()
pipe.vae.enable_tiling()
pipe.vae.enable_slicing()
prompt = "A little girl is riding a bicycle at high speed. Focused, detailed, realistic."
image = load_image(image="input.jpg")
video = pipe(
prompt=prompt,
image=image,
num_videos_per_prompt=1,
num_inference_steps=50,
num_frames=81,
guidance_scale=6,
generator=torch.Generator(device="cuda").manual_seed(42),
).frames[0]
export_to_video(video, "output.mp4", fps=8)
その他の情報
これらのモデルは、PytorchAOを使用して量子化されたデータ型でシリアル化して保存することができ、ディスクスペースを節約できます。例とベンチマークは以下のリンクで見つけることができます。
📚 ドキュメント
GitHubにアクセスすると、以下の内容が見つかります。
- より詳細な技術説明とコード。
- 最適化されたプロンプトの例と変換。
- モデルの推論と微調整の詳細なコード。
- プロジェクトの更新ログとその他のインタラクティブな機会。
- CogVideoXツールチェーンで、モデルをより良く使用するのに役立ちます。
- INT8モデルの推論コード。
📄 ライセンス
このモデルは、CogVideoX LICENSEの下でリリースされています。
引用
@article{yang2024cogvideox,
title={CogVideoX: Text-to-Video Diffusion Models with An Expert Transformer},
author={Yang, Zhuoyi and Teng, Jiayan and Zheng, Wendi and Ding, Ming and Huang, Shiyu and Xu, Jiazheng and Yang, Yuanming and Hong, Wenyi and Zhang, Xiaohan and Feng, Guanyu and others},
journal={arXiv preprint arXiv:2408.06072},
year={2024}
}