CogVideoX 部署实践—DAMODEL平台

CogVideoX 部署实践—DAMODEL平台

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

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

我也是第一次复现智谱AI的视频生成模型,如有步骤不清楚,可以直接通过留言或者平台联系我,谢谢DAMODEL提供的卡来完成”炼丹“全部流程。

一、DAMODEL(丹摩智算)算力平台

DAMODEL(丹摩智算)是一款专为满足高性能计算需求而设计的云端解决方案。提供多款高性能的GPU资源,可以根据自己的需求灵活租赁,无需购买和维护昂贵的硬件设备。炼丹师们可以直接根据需求在上面部署AI大模型的应用,支持模型训练,微调,部署,评测等。目前提供RTX4090、H800SXM、H800PCle、L40S、P40等GPU,并且支持不同深度学习框架的镜像Paddle、TensorRT加速引擎、TensorFlow、PyTorch、ComfyUI、FLUX.1-dev-fp8+ComfyUI。

DAMODEL(丹摩智算)帮助文档:DAMODEL帮助文档

DAMODEL(丹摩智算)控制台:DAMODEL控制台

希望小伙伴们多多支持哦,因为经常会有福利并且GPU折扣的活动的!!!,帮助文档里面包含详细的最佳实践案例,对案例感兴趣的小伙伴可以自己动手复现一下。

二、CogVideoX架构图

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

在这里插入图片描述

三、CogVideoX 部署复现实践详细流程

首先进入控制台,选择 GPU 云实例,点击创建实例:

在这里插入图片描述

实例配置如下:

在这里插入图片描述

丹摩控制台实例,下面直接点击JuPyterLab进入即可:

在这里插入图片描述

配置环境和依赖参考下面的链接:https://github.com/THUDM/CogVideo.git

基于官方配置仓库的佬的解读:https://blog.csdn.net/air__Heaven/article/details/140967138

平台已经搭建好了代码库,可直接开箱即用,进入JuPyterLab后,打开terminal终端,首先拉取 CogVideo 代码的仓库:

wget http://file.s3/damodel-openfile/CogVideoX/CogVideo-main.tar
# 解压
tar -xf CogVideo-main.tar
# cd到指定路径,然后安装requirements.txt里面的依赖环境,时间可能有点久,可以先忙别的事情哈
cd CogVideo-main/
pip install -r requirements.txt
# 安装好了后,我们用python解释器输入代码验证依赖是否安装成功
# 没有报错,就说明安装成功,输入quit()即可退出python解释器
python

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

复现过程截图如下(其实就是根据帮助文档的最佳实践复现巨佬的实践步骤啦):

在这里插入图片描述

在这里插入图片描述

1.提醒提醒

这里我复现的时候,根据流程wget从指定地址下载压缩包,然后解压到当前目录,我前面下载了环境依赖,并且解压安装了,后面下载CogVideoX-2b模型和配置文件的时候,也是在workspace工作目录下解压的,结果,前面CogVideo-main目录不见了,我在JuPyterLab左侧目录看不到,在终端命令使用ls也看不到了,但是我cd上上层目录,然后再cd模型路径的时候,又能进去了,但是JuPyterLab左侧还是只显示了一个目录。后面我就在workspace工作目录下创建了lx目录,后续步骤截图可能会发现路径不一样,就是因为这个原因,希望damodel官方能够支持根目录显示,并且搭建VS code可视化平台,方便更多炼丹师的使用习惯

CogVideoX模型与配置文件如下

官方模型仓库:https://huggingface.co/THUDM/CogVideoX-2b/tree/main

基于官方模型仓库的配置方法的佬的解读:https://blog.csdn.net/air__Heaven/article/details/140967138

执行以下命令:

wget http://file.s3/damodel-openfile/CogVideoX/CogVideoX-2b.tar
# 解压
tar -xf CogVideoX-2b.tar
# 进入到CogVideo-main文件夹,运行test.py脚本文件
cd /root/workspace/CogVideo-main
python test.py

流程截图:

在这里插入图片描述

在这里插入图片描述

简单描述下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/lx/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)

在这里插入图片描述

在这里插入图片描述

注意,上面的模型加载路径我是在/root/workspace/lx/CogVideoX-2b,和最佳实践中的文档不一样。同理,下面还有个启动Gradio_demo.py的文件,里面的路径也要修改成模型文件实际路径。

使用Gradio做个WebUI的demo演示

简单介绍下Gradio,Gradio是Hugging Face发布的一个简易的webui开发框架,它基于FastAPI和svelte,便于部署AI大模型,是当前热门的非常易于开发和展示机器学习和深度学习的大语言模型和扩散模型的框架。

Gradio 是一个Hugging Face发布的开源Python库,可以为机器学习模型、API或任意Python函数快速构建web可视化界面,并且通过Gradio的内置共享功能快速生成对应的链接,而无需任何JavaScript、CSS或网络托管经验。

感兴趣的小伙伴可自行去查看官网手册了解哈,这里就不cv官方文档啦!

# 进入到最开始下载的CogVideo-main目录
cd /root/workspace/CogVideo-main
# 执行脚本,注意gradio_demo.py里面的模型路径地址根据实际情况修改
python gradio_demo.py

在这里插入图片描述

接下来我们直接回到丹摩的GPU云实例页面,点击操作-更多-访问控制,添加7870端口,直接复制连接地址访问即可。

在这里插入图片描述

在这里插入图片描述

在Web-UI界面的Prompt里面添加你需要生成视频的描述语句即可,我这里直接就是之前test.py生成视频的Prompt开头第一句,然后点击Generate Video即可生成视频啦。

# 提示词
A panda, dressed in a small, red jacket and a tiny hat, sits on a wooden stool in a serene bamboo forest.
# 案例提示词
A street artist, clad in a worn-out denim jacket and a colorful bandana, stands before a vast concrete wall in the heart, holding a can of spray paint, spray-painting a colorful bird on a mottled wall.

2.提醒提醒

这里按照官方帮助文档中的最佳实践——智谱清影 🔥-CogVideoX-2b-部署与使用可能点击Generate Video会产生“pydantic.errors.PydanticSchemaGenerationError: Unable to generate pydantic-core schema for <class ‘starlette.requests.Request’>.“的error错误,这个错误表示Pydantic 无法为 starlette.requests.Request 类型生成模式 ,经过排查,需要你升级一下Gradio的版本即可解决

# 查看Gradio版本信息
pip show gradio
# 升级Gradio
pip install --upgrade gradio

在这里插入图片描述

记住7870端口可能会被占用,记得先查询 ps aux | grep gradio查看Gradio的进程PID后,使用kill -9 xxx(PID)杀死进程即可,然后你在CogVideo-main路径下,执行python gradio_demo.py即可。

下面是正确的视频生成步骤截图:

在这里插入图片描述

在这里插入图片描述

四、CogVideoX-2B模型生成视频效果

生成mp4视频后,同时还会生成一个gif图,下面一起展示出来

在这里插入图片描述

下面是CogVideoX-2B模型根据我们设置的Prompt提示词生成视频连接,可以发现还是生成比较快的。视频原始文件还在审核,大家先看看gif图片哈

提供一个逃课版本的复现流程:

# 在当前目录创建一个文件夹lx,丹摩默认工作目录是workspace
mkdir lx
cd lx
# 安装环境和依赖
wget http://file.s3/damodel-openfile/CogVideoX/CogVideo-main.tar
tar -xf CogVideo-main.tar
cd CogVideo-main/
pip install -r requirements.txt
# 返回上一层lx目录下,下载CogVideoX-2b模型文件,注意修改test.py和gradio_demo.py模型保存的路径,
cd ..
wget http://file.s3/damodel-openfile/CogVideoX/CogVideoX-2b.tar
tar -xf CogVideoX-2b.tar
# 这里解压后可以再JuPyterLab左侧目录结构lx下面看到两个解压后的目录的
cd CogVideo-main/
python gradio_demo.py

上述流程有任何疑问随时留言,我记得好像解压后模型文件,启动Gradio,可能会提示一个./output路径报错,这个我记得好像是清理内存的一个代码功能:删除指定目录中超过10分钟的旧文件,直接注释掉那个 delete_old_files函数即可。

五、总结

整个实践的demo案例非常简单,方便很多小伙伴们都能愉快的玩耍,并且damodel官方文档里面还有丰富的其他最佳实践案例,感兴趣的小伙伴们可以根据CogVideoX-2B模型的特点和调整参数去尝试生成更多精彩的案例。主要是DAMODEL(丹摩智算)平台提供的卡的性能还是很优秀的,希望小伙伴们多多尝试复现其他更大参数的文本模型or多模态模型等,对于本案例中的流程有任何疑问欢迎小伙伴留言或者联系我,对丹摩平台有任何建议也希望大家在群里多多反馈。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值