文章目录
1 CogVideoX 的背景
CogVideoX 的问世标志着视频生成技术的一次质的飞跃。
过去,许多技术在效率与质量之间常常难以取得平衡,CogVideoX 的 3D 变分自编码器使得视频数据的压缩率高达 2%,显著降低了计算资源的消耗,同时保持了视频帧之间的连贯性。
更为创新的是其引入的 3D 旋转位置编码技术,这一进步让视频中的每个瞬间在时间维度上自然流动,仿佛为生成的内容注入了生命。
用户可以在创作中体验到更加流畅的视觉效果,这对于视频的观看体验无疑是一次提升。
智谱 AI 还开发了一款端到端的视频理解模型,赋予了 CogVideoX 更强大的指令解析能力。
这意味着用户的创作意图能被准确捕捉,从而生成内容丰富、紧密相关的视频。创作者在使用时,能够享受到更大的自由度,灵活应对各种复杂的文本提示。
此外,这一创新不仅增强了 CogVideoX 对文本的理解能力,也使其能够处理更长且复杂的输入,这为内容创作打开了新的大门,确保生成的视频与用户需求高度一致,真正实现个性化创作。
- 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
2 创建丹摩实例
- 进入控制台,选择 GPU 云实例,点击创建实例。
- CogVideoX 在
FP-16
精度下的推理至少需18GB
显存,微调则需要40GB
显存 。
(1)选择L40S 显卡(推荐)或者4090 显卡,硬盘可以选择默认的 100GB 系统盘和 50GB 数据盘。
(2)镜像选择 PyTorch2.3.0、Ubuntu-22.04,CUDA12.1 镜像。
(3)创建登录实例,点击创建密钥对,输入个名称即可创建。
(4)实例创建成功。
3 配置环境和依赖
丹摩平台已预置了调试好的代码库,可开箱即用。
- 进入 JupyterLab 后,打开终端,首先拉取
CogVideo
代码的仓库。
wget http://file.s3/damodel-openfile/CogVideoX/CogVideo-main.tar
- 下载完成后解压缩
CogVideo-main.tar
,完成后进入 CogVideo-main 文件夹,输入安装对应依赖。
- 依赖安装好后,可以在终端输入 python,进入python环境。
进行测试:
import torch
from diffusers import CogVideoXPipeline
from diffusers.utils import export_to_video
没有报错就说明依赖安装成功!输入quit()
可退出 python。
4 模型与配置文件
除了配置代码文件和项目依赖,还需要上传 CogVideoX 模型文件和对应的配置文件。
- 平台已为您预置了 CogVideoX 模型,您可内网高速下载。
cd /root/workspace
wget http://file.s3/damodel-openfile/CogVideoX/CogVideoX-2b.tar
- 下载完成后解压缩
CogVideoX-2b.tar
。
tar -xf CogVideoX-2b.tar
效果图:
5 运行
- 进入
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)
- 运行成功后,可以在 CogVideo-main 文件夹中找到对应 prompt 生成的 output.mp4 视频。
- 模型官方也提供了 webUIDemo,进入
CogVideo-main
文件夹,运行gradio_demo.py
文件。
cd /root/workspace/CogVideo-main
python gradio_demo.py
- 通过丹摩平台提供的端口映射能力,把内网端口映射到公网,进入GPU 云实例页面,点击操作-更多-访问控制。
- 点击添加端口,添加
7870
端口。
- 添加成功后,通过访问链接即可访问到刚刚启动的 gradio 页面。