CogView4 & CogView3 & CogView-3Plus

March 29, 2025 · View on GitHub

Read this in English 阅读中文版

🤗 HuggingFace Space 🤖ModelScope Space 🛠️ZhipuAI MaaS(Faster)
👋 WeChat Community 📚 CogView3 Paper

showcase.png

プロジェクトの更新

  • 🔥🔥 2025/03/24: CogView4-6B-Control モデルをリリースしました!トレーニングコード を使用して、自身でトレーニングすることも可能です。 さらに、CogView4 および CogVideoX シリーズのファインチューニングと推論を簡単に行えるツールキット CogKit も公開しました。私たちのマルチモーダル生成モデルを存分に活用してください!
  • 2025/03/04: diffusers バージョンの CogView-4 モデルを適応し、オープンソース化しました。このモデルは6Bのパラメータを持ち、ネイティブの中国語入力と中国語のテキストから画像生成をサポートしています。オンラインで試すことができます こちら
  • 2024/10/13: diffusers バージョンの CogView-3Plus-3B モデルを適応し、オープンソース化しました。オンラインで試すことができます こちら
  • 2024/9/29: CogView3CogView-3Plus-3B をオープンソース化しました。CogView3 はカスケード拡散に基づくテキストから画像生成システムで、リレーディフュージョンフレームワークを使用しています。* CogView-3Plus* は新たに開発されたDiffusion Transformerに基づくテキストから画像生成モデルのシリーズです。

プロジェクト計画

  • Diffusers ワークフローの適応
  • Cogシリーズのファインチューニングスイート (近日公開)
  • ControlNetモデルとトレーニングコード

コミュニティの取り組み

本リポジトリに関連するいくつかのコミュニティプロジェクトをここにまとめました。これらのプロジェクトはコミュニティメンバーによって維持されており、彼らの貢献に感謝します。

モデル紹介

モデル比較

モデル名 CogView4 CogView3-Plus-3B
解像度 512 <= H, W <= 2048
H * W <= 2^{21}
H, W \mod 32 = 0
推論精度 BF16, FP32 のみサポート
エンコーダ GLM-4-9B T5-XXL
プロンプト言語 中国語、英語 英語
プロンプト長さの制限 1024 トークン 224 トークン
ダウンロードリンク 🤗 HuggingFace
🤖 ModelScope
🟣 WiseModel
🤗 HuggingFace
🤖 ModelScope
🟣 WiseModel

メモリ使用量

DITモデルは BF16 精度と batchsize=4 でテストされ、結果は以下の表に示されています:

解像度enable_model_cpu_offload OFFenable_model_cpu_offload ONenable_model_cpu_offload ON
Text Encoder 4bit
512 * 51233GB20GB13G
1280 * 72035GB20GB13G
1024 * 102435GB20GB13G
1920 * 128039GB20GB14G

さらに、プロセスが強制終了されないようにするために、少なくとも32GBのRAMを持つデバイスを推奨します。

モデル指標

複数のベンチマークでテストを行い、以下のスコアを達成しました:

DPG-Bench

モデル全体グローバルエンティティ属性関係その他
SDXL74.6583.2782.4380.9186.7680.41
PixArt-alpha71.1174.9779.3278.6082.5776.96
SD3-Medium84.0887.9091.0188.8380.7088.68
DALL-E 383.5090.9789.6188.3990.5889.83
Flux.1-dev83.7985.8086.7989.9890.0489.90
Janus-Pro-7B84.1986.9088.9089.4089.3289.48
CogView4-6B85.1383.8590.3591.1791.1487.29

GenEval

モデル全体単一オブジェクト二つのオブジェクトカウント位置色の属性
SDXL0.550.980.740.390.850.150.23
PixArt-alpha0.480.980.500.440.800.080.07
SD3-Medium0.740.990.940.720.890.330.60
DALL-E 30.670.960.870.470.830.430.45
Flux.1-dev0.660.980.790.730.770.220.45
Janus-Pro-7B0.800.990.890.590.900.790.66
CogView4-6B0.730.990.860.660.790.480.58

T2I-CompBench

モデルテクスチャ2D-空間3D-空間数量非空間 Clip複雑な3-in-1
SDXL0.58790.46870.52990.21330.35660.49880.31190.3237
PixArt-alpha0.66900.49270.64770.20640.39010.50580.31970.3433
SD3-Medium0.81320.58850.73340.32000.40840.61740.31400.3771
DALL-E 30.77850.62050.70360.28650.37440.58800.30030.3773
Flux.1-dev0.75720.50660.63000.27000.39920.61650.30650.3628
Janus-Pro-7B0.51450.33230.40690.15660.27530.44060.31370.3806
CogView4-6B0.77860.58800.69830.30750.37080.66260.30560.3869

中国語テキストの正確性評価

モデル精度リコールF1スコアPick@4
Kolors0.60940.18860.28800.1633
CogView4-6B0.69690.55320.61680.3265

推論モデル

プロンプトの最適化

CogView4シリーズのモデルは長文の合成画像説明でトレーニングされていますが、テキストから画像生成を行う前に大規模言語モデルを使用してプロンプトをリライトすることを強くお勧めします。これにより生成品質が大幅に向上します。

例のスクリプトを提供しています。このスクリプトを実行してプロンプトをリファインすることをお勧めします。 CogView4CogView3 モデルのプロンプト最適化には異なるfew-shotが使用されていることに注意してください。区別が必要です。

cd inference
python prompt_optimize.py --api_key "Zhipu AI API Key" --prompt {your prompt} --base_url "https://open.bigmodel.cn/api/paas/v4" --model "glm-4-plus" --cogview_version "cogview4"

推論モデル

BF16 の精度で CogView4-6B モデルを実行する:

from diffusers import CogView4Pipeline
import torch

pipe = CogView4Pipeline.from_pretrained("THUDM/CogView4-6B", torch_dtype=torch.bfloat16).to("cuda")

# GPUメモリ使用量を減らすために開く
pipe.enable_model_cpu_offload()
pipe.vae.enable_slicing()
pipe.vae.enable_tiling()

prompt = "A vibrant cherry red sports car sits proudly under the gleaming sun, its polished exterior smooth and flawless, casting a mirror-like reflection. The car features a low, aerodynamic body, angular headlights that gaze forward like predatory eyes, and a set of black, high-gloss racing rims that contrast starkly with the red. A subtle hint of chrome embellishes the grille and exhaust, while the tinted windows suggest a luxurious and private interior. The scene conveys a sense of speed and elegance, the car appearing as if it's about to burst into a sprint along a coastal road, with the ocean's azure waves crashing in the background."
image = pipe(
    prompt=prompt,
    guidance_scale=3.5,
    num_images_per_prompt=1,
    num_inference_steps=50,
    width=1024,
    height=1024,
).images[0]

image.save("cogview4.png")

より詳しい推論コードについては、以下をご確認ください:

  1. BNB int4 を使用して text encoder をロードし、完全な推論コードの注釈を確認するには、こちら をご覧ください。
  2. TorchAO int8 または int4 を使用して text encoder & transformer をロードし、完全な推論コードの注釈を確認するには、こちら をご覧ください。
  3. gradio GUI デモをセットアップするには、こちら をご覧ください。

ファインチューニング(微調整)

このリポジトリにはファインチューニング用のコードは含まれていませんが、LoRA および SFT を含む以下の 2 つの方法でファインチューニングが可能です:

  1. CogKit:CogView4 および CogVideoX のファインチューニングをサポートする、公式で保守されているシステムレベルのファインチューニングフレームワークです。
  2. finetrainers:低メモリ環境向けのソリューションで、RTX 4090 でのファインチューニングが可能です。
  3. ControlNet モデルを直接訓練したい場合は、トレーニングコード を参考にして自前で訓練することができます。

ライセンス

このリポジトリのコードとCogView3モデルは Apache 2.0 のライセンスの下で提供されています。

コードの貢献を歓迎し、感謝します。貢献ガイドラインは こちら で確認できます。