国产版Sora复现——智谱AI开源CogVideoX-2b 本地部署复现实践教程

一、CogVideoX简介

智谱AI在8月6日宣布了一个令人兴奋的消息:他们将开源视频生成模型CogVideoX。目前,其提示词上限为 226 个 token,视频长度为 6 秒,帧率为 8 帧 / 秒,视频分辨率为 720*480,而这仅仅是初代,性能更强参数量更大的模型正在路上。先看两个效果(均为个人本次实践复现得出):

CogVideoX生成视频1

CogVideo生成视频2

首先简单介绍下原理,CogVideoX的核心在于它的3D变分自编码器,这项技术能够将视频数据压缩至原来的2%,极大地降低了模型处理视频时所需的计算资源,还巧妙地保持了视频帧与帧之间的连贯性,有效避免了视频生成过程中可能出现的闪烁问题。
在这里插入图片描述
为了进一步提升内容的连贯性,CogVideoX采用了3D旋转位置编码(3D RoPE)技术,使得模型在处理视频时能够更好地捕捉时间维度上的帧间关系,建立起视频中的长期依赖关系,从而生成更加流畅和连贯的视频序列。

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

  • 代码仓库:https://github.com/THUDM/CogVideo
  • 模型下载:https://huggingface.co/THUDM/CogVideoX-2b
  • 技术报告:https://github.com/THUDM/CogVideo/blob/main/resources/CogVideoX.pdf
  • 丹摩智算平台:https://damodel.com/register?source=C4FB0342

本篇博客将详细介绍,使用丹摩服务器部署和初步使用CogVideoX的实践流程

二、CogVideoX部署实践流程

2.1、创建丹摩实例

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

2.2、配置环境和依赖

进入JupyterLab后,打开终端,首先输入git clone https://github.com/THUDM/CogVideo.git,拉取CogVideo代码的仓库,如遇到github连接超时,可以使用本地下载压缩包然后上传到服务器解压,拉取成功后会显示CogVideo-main的文件夹如下:
在这里插入图片描述
其次,cd进入CogVideo-main文件夹,输入pip install -r requirements.txt安装对应依赖:
在这里插入图片描述
其中第一个依赖需要从GitHub仓库中安装特定版本的diffusers包,在安装中可能会出现Running command git clone --filter=blob:non过久:
在这里插入图片描述
这种情况可以选择使用本地下载diffusers-0.30.0.dev0-py3-none-any.whl文件(夸克网盘链接:https://pan.quark.cn/s/67d4bf445556)

再使用pip install diffusers-0.30.0.dev0-py3-none-any.whl安装对应版本的diffusers

然后再删除requirements.txt文件中的git+https://github.com/huggingface/diffusers.git@878f609aa5ce4a78fea0f048726889debde1d7e8#egg=diffusers那一行

最后,继续使用pip安装剩下的依赖:
在这里插入图片描述
以上依赖安装好后,可以在终端输入python,然后输入以下代码进行测试:

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

显示如下状态,没有报错就说明依赖安装成功!
在这里插入图片描述

2.3、上传模型与配置文件

除了配置代码文件和项目依赖,还需要上传CogVideoX模型文件和对应的配置文件。打开huggingface,进入https://huggingface.co/THUDM/CogVideoX-2b/tree/main仓库,找到Files and versions目录,将其中的所有模型和配置文件全部下载到本地。
在这里插入图片描述

一共大概9GB+大小的文件,下载完成后的目录如下:
在这里插入图片描述

然后点击丹摩控制台-文件存储-上传文件,将刚刚下载好的整个CogVideo文件夹上传,上传好后的文件存在实例的/root/shared-storage目录。
在这里插入图片描述
上传完成后,继续打开终端,cd进入/root/shared-storage,输入ls可以看到刚刚上传好的CogVideo的文件夹已经显示在文件目录中。
在这里插入图片描述

2.4、开始运行

上传完成后,在CogVideo-main文件新建一个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/shared-storage/CogVideo", # 这里填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视频:
在这里插入图片描述
最近正好奥运会,我还试着生成了一些比较有难度的运动员的视频,感觉效果还不错,后面再研究研究视频的prompt怎么写。

CogVideo生成视频4

在这里插入图片描述
在这里插入图片描述

最后

💖 个人简介:人工智能领域硕士毕业,某央企AI工程师

📝 关注我:中杯可乐多加冰

🎉 支持我:点赞👍+收藏⭐️+留言📝

评论 39
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

中杯可乐多加冰

请我喝杯可乐吧,我会多加冰!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值