声明:非广告,为用户使用体验分享

最终效果展示

A panda, dressed in a small, red jacket and a tiny hat, sits on a wooden stool in a serene bamboo forest. The panda's fluffy paws strum a miniature acoustic guitar, producing soft, melodic tunes. Nearby, a few other pandas gather, watching curiously and some clapping in rhythm. Sunlight filters through the tall bamboo, casting a gentle glow on the scene. The panda's face is expressive, showing concentration and joy as it plays. The background includes a small, flowing stream and vibrant green foliage, enhancing the peaceful and magical atmosphere of this unique musical performance..

img

CogVideoX 简介

CogVideoX 是智谱最新开源的一个视频生成模型,目前,其提示词上限为 226 个 token,视频长度为 6 秒,帧率为 8 帧 / 秒,视频分辨率为 720*480,而这仅仅是初代,性能更强参数量更大的模型正在路上

CogVideoX 的核心在于它的 3D 变分自编码器,这项技术能够将视频数据压缩至原来的 2%,极大地降低了模型处理视频时所需的计算资源,还巧妙地保持了视频帧与帧之间的连贯性,有效避免了视频生成过程中可能出现的闪烁问题。

在这里插入图片描述


(图片来自官网)

为了进一步提升内容的连贯性,CogVideoX 采用了 3D 旋转位置编码(3D RoPE)技术,使得模型在处理视频时能够更好地捕捉时间维度上的帧间关系,建立起视频中的长期依赖关系,从而生成更加流畅和连贯的视频序列。

在可控性方面,智谱 AI 研发了一款端到端的视频理解模型,这个模型能够为视频数据生成精确且与内容紧密相关的描述。这一创新极大地增强了 CogVideoX 对文本的理解和对用户指令的遵循能力,确保了生成的视频不仅与用户的输入高度相关,而且能够处理超长且复杂的文本提示。

CogVideoX 部署流程

1. 创建丹摩实例

在这里插入图片描述

由于 CogVideoX 在 FP-16 精度下的推理至少需 18GB 显存,微调则需要 40GB 显存,我们这里可以选择L40S 显卡(推荐)或者4090 显卡,硬盘可以选择默认的 100GB 系统盘和 50GB 数据盘,镜像选择 PyTorch2.3.0、Ubuntu-22.04,CUDA12.1 镜像,创建并绑定密钥对,最后启动。

1. 选择实例配置

在这里插入图片描述

推荐选择 NVIDIA-L40S × 1,显存在 48G,不然后面可能会出现内存不够用的情况。(别问我怎么知道的)

在这里插入图片描述

2. 选择镜像

在这里插入图片描述

选择合适的镜像就可以,平台中的镜像大多都已经预置好了大部分的代码库,都可以开箱即用。

3.创建实例

在这里插入图片描述

点击“创建实例”后,等待创建完即可。

2. 配置环境和依赖

1. 进入实例的JupterLab页面

在这里插入图片描述

点击即可进入对应的 JupterLab 页面。

在这里插入图片描述

2. 打开终端,首先拉取 CogVideo 代码的仓库

在这里插入图片描述

wget http://file.s3/damodel-openfile/CogVideoX/CogVideo-main.tar

在这里插入图片描述

3. 下载完成后解压缩CogVideo-main.tar

tar -xf CogVideo-main.tar

在这里插入图片描述

4. 进入 CogVideo-main 文件夹,输入安装对应依赖

cd CogVideo-main/
pip install -r requirements.txt

在这里插入图片描述

5. 以上依赖安装好后,可以在终端输入 python,然后输入以下代码进行测试

import torch
from diffusers import CogVideoXPipeline
from diffusers.utils import export_to_video

显示如下状态,没有报错就说明依赖安装成功!输入quit()可退出 python。

在这里插入图片描述

3. 模型与配置文件

1. 平台已预置了 CogVideoX 模型,您可内网高速下载

cd /root/workspace
wget http://file.s3/damodel-openfile/CogVideoX/CogVideoX-2b.tar

在这里插入图片描述

2. 下载完成后解压缩CogVideoX-2b.tar

tar -xf CogVideoX-2b.tar

在这里插入图片描述

4. 开始运行

1. 调试

进入CogVideo-main文件夹,运行test.py文件:

cd /root/workspace/CogVideo-main
python test.py

在这里插入图片描述

test.py 代码内容如下,主要使用diffusers库中的CogVideoXPipeline模型,加载了一个预训练的 CogVideo 模型,然后根据一个详细的文本描述(prompt),生成对应视频:

在这里插入图片描述

import torch
from diffusers import CogVideoXPipeline
from diffusers.utils import export_to_video

# prompt里写自定义想要生成的视频内容
prompt = "A panda, dressed in a small, red jacket and a tiny hat, sits on a wooden stool in a serene bamboo forest. The panda's fluffy paws strum a miniature acoustic guitar, producing soft, melodic tunes. Nearby, a few other pandas gather, watching curiously and some clapping in rhythm. Sunlight filters through the tall bamboo, casting a gentle glow on the scene. The panda's face is expressive, showing concentration and joy as it plays. The background includes a small, flowing stream and vibrant green foliage, enhancing the peaceful and magical atmosphere of this unique musical performance."

pipe = CogVideoXPipeline.from_pretrained(
    "/root/workspace/CogVideoX-2b", # 这里填CogVideo模型存放的位置,此处是放在了数据盘中
    torch_dtype=torch.float16
).to("cuda")

# 参数do_classifier_free_guidance设置为True可以启用无分类器指导,增强生成内容一致性和多样性
# num_videos_per_prompt控制每个prompt想要生成的视频数量
# max_sequence_length控制输入序列的最大长度
prompt_embeds, _ = pipe.encode_prompt(
    prompt=prompt,
    do_classifier_free_guidance=True,
    num_videos_per_prompt=1,
    max_sequence_length=226,
    device="cuda",
    dtype=torch.float16,
)

video = pipe(
    num_inference_steps=50,
    guidance_scale=6,
    prompt_embeds=prompt_embeds,
).frames[0]

export_to_video(video, "output.mp4", fps=8)

运行成功后,可以在当前文件夹中找到对应 prompt 生成的 output.mp4 视频:

在这里插入图片描述

2. webUI
模型官方也提供了 webUIDemo,进入CogVideo-main文件夹,运行gradio_demo.py文件:

cd /root/workspace/CogVideo-main
python gradio_demo.py

运行后我们可以看到,访问路径是本地 urlhttp://0.0.0.0:7870:

在这里插入图片描述

此时我们需要通过丹摩平台提供的端口映射能力,把内网端口映射到公网,添加端口,添加7870端口:

在这里插入图片描述

添加成功后,通过访问链接即可访问到刚刚启动的 gradio 页面:

在这里插入图片描述

踩坑记录

1. 运行 test.py 时报错

  1. 缺少 libGL.so.1
    Traceback (most recent call last):
    File "/root/workspace/CogVideo-main/test.py", line 31, in <module>
     export_to_video(video, "output.mp4", fps=8)
    File "/opt/conda/lib/python3.10/site-packages/diffusers/utils/export_utils.py", line 119, in export_to_video
     import cv2
    File "/opt/conda/lib/python3.10/site-packages/cv2/__init__.py", line 181, in <module>
     bootstrap()
    File "/opt/conda/lib/python3.10/site-packages/cv2/__init__.py", line 153, in bootstrap
     native_module = importlib.import_module("cv2")
    File "/opt/conda/lib/python3.10/importlib/__init__.py", line 126, in import_module
     return _bootstrap._gcd_import(name[level:], package, level)
    ImportError: libGL.so.1: cannot open shared object file: No such file or directory
    

在这里插入图片描述

解决办法

sudo apt-get update
sudo apt-get install libgl1-mesa-glx
  1. 缺少 libgthread-2.0.so.0
Traceback (most recent call last):
  File "/root/workspace/CogVideo-main/test.py", line 31, in <module>
    export_to_video(video, "output.mp4", fps=8)
  File "/opt/conda/lib/python3.10/site-packages/diffusers/utils/export_utils.py", line 119, in export_to_video
    import cv2
  File "/opt/conda/lib/python3.10/site-packages/cv2/__init__.py", line 181, in <module>
    bootstrap()
  File "/opt/conda/lib/python3.10/site-packages/cv2/__init__.py", line 153, in bootstrap
    native_module = importlib.import_module("cv2")
  File "/opt/conda/lib/python3.10/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
ImportError: libgthread-2.0.so.0: cannot open shared object file: No such file or directory

在这里插入图片描述

解决办法

sudo apt-get update
sudo apt-get install libglib2.0-0

2. 点击 urlhttp://0.0.0.0:7870/ 访问不了

不要直接点击控制台输出的地址,平台开放端口后会对应的生成一个接口地址,要通过这个地址访问。

在这里插入图片描述

Logo

尧米是由西云算力与CSDN联合运营的AI算力和模型开源社区品牌,为基于DaModel智算平台的AI应用企业和泛AI开发者提供技术交流与成果转化平台。

更多推荐