CogView3环境搭建&推理测试

引子

        清华智谱的开源模型也写了很多个了 。盘一下,发现少了文生图的模型,刚好CogView3发布,一看只有3B参数,好嘞,就它了。OK,我们开始吧。

一、模型介绍

        CogView是一个文生图的开源大模型,它需要强大的生成模型和跨模态理解。CogView-3-Plus 在 CogView3(ECCV'24) 的基础上引入了最新的 DiT 框架,以实现整体性能的进一步提升。CogView-3-Plus 采用了 Zero-SNR 扩散噪声调度,并引入了文本-图像联合注意力机制。与常用的 MMDiT 结构相比,它在保持模型基本能力的同时,有效降低了训练和推理成本。CogView-3Plus 使用潜在维度为 16 的 VAE。

        下表显示了智谱团队目前提供的文本生成图像模型列表及其基础信息。

编辑

        算法分为三个阶段:

第一阶段:利用标准扩散过程生成 512x512 低分辨率的图像。

第二阶段:利用中继扩散过程,执行 2 倍的超分辨率生成,从 512x512 输入生成 1024x1024 的图像。

第三阶段:将生成结果再次基于中继扩散迭代,生成 2048×2048 高分辨率的图像。

        在实际效果上,CogView3 在人工评估中比目前最先进的开源文本到图像扩散模型 SDXL 高出 77.0%,同时只需要 SDXL 大约 1/10 的推理时间。

二、环境搭建

模型下载:

pip install modelscope

modelscope download --model ZhipuAI/CogView3-Plus-3B

代码下载:

git clone GitHub - THUDM/CogView3: text to image to generation: CogView3-Plus and CogView3(ECCV 2024)

docker run -it --rm --gpus=all -v /datas/work/zzq:/workspace python:3.10.11 bash

cd /workspace/CogView3/CogView3-main/inference

pip install -r requirements.txt -i Simple Index

pip install git+GitHub - huggingface/diffusers: 🤗 Diffusers: State-of-the-art diffusion models for image and audio generation in PyTorch and FLAX.

三、测试推理

from diffusers import CogView3PlusPipeline
import torch

pipe = CogView3PlusPipeline.from_pretrained("CogView3-Plus-3B", torch_dtype=torch.float16).to("cuda")

# Enable it to reduce GPU memory usage
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=7.0,
    num_images_per_prompt=1,
    num_inference_steps=50,
    width=1024,
    height=1024,
).images[0]

image.save("cogview3.png")

python test.py

python cli_demo.py --model_path "CogView3-Plus-3B" --prompt "A beautiful sunset over a mountain" --width 1024 --height 1024

 

posted @ 2024-10-28 09:10  要养家的程序猿  阅读(26)  评论(0编辑  收藏  举报