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

news2024/11/23 10:36:30

目录

  • 一、CogVideoX简介
  • 二、CogVideoX部署实践流程
    • 2.1、创建丹摩实例
    • 2.2、配置环境和依赖
    • 2.3、上传模型与配置文件
    • 2.4、开始运行
  • 最后

一、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=1D5686A0

本篇博客将详细介绍,使用丹摩服务器部署和初步使用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工程师

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1986810.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2020C题 中小微企业的信贷决策论文分析复现笔记

比赛题目: 在实际中,由于中小微企业规模相对较小,也缺少抵押资产,因此银行通常是依据信贷政策、企业的交易票据信息和上下游企业的影响力,向实力强、供求关系稳定的企业提供贷款,并可以对信誉高、信贷风险…

“MySQL中的空间索引技术深度解析:利用Spatial Key优化地理空间数据查询“

目录 简介 空间数据类型 GEOMETRY(抽象基类) POINT LINESTRING POLYGON MULTIPOINT MULTILINESTRING MULTIPOLYGON GEOMETRYCOLLECTION 总结 函数 ST_GeomFromText() ST_X ST_Y ST_AsText 空间函数 总结 坐标系 WGS 84坐标系&#x…

03 LVS+Keepalived群集

3.1 Keepalived 双机热备基础知识 Keepalived 起初是专门针对 LVS 设计的一款强大的辅助工具,主要用来提供故障切换(Failover)和健康检査(HealthChecking)功能--判断LVS 负载调度器、节点服务器的可用性,当 master 主机出现故障及时切换到 backup 节点保…

(二十二)【Jmeter】深入刨析监听器:常用监听器常用使用场景、优缺点及操作实例

简述 在Jmeter中,监听器(Listener)是一个重要的组件,用于收集和显示测试结果。监听器的作用包括: 收集测试结果:监听器可以实时收集JMeter测试执行过程中的数据,包括请求和响应的各种信息。显示测试结果:监听器可以将收集到的测试结果以不同的方式展示出来,例如以树状…

【第七节】python多线程及网络编程

目录 一、python多线程 1.1 多线程的作用 1.2 python中的 threading 模块 1.3 线程锁 二、python网络编程 2.1 通过socket访问网络 2.2 python2.x中的编码问题 2.3 python3的编码问题 一、python多线程 1.1 多线程的作用 多线程技术在计算机编程中扮演着重要的角色&a…

五大避坑要点,让你轻松避开99%的雷区!随身wifi京东口碑排行榜,随身wifi推荐第一名!

在数字浪潮中,随身WiFi成为我们不可或缺的伴侣,但市场纷繁复杂,如何挑选成为难题。以下五大避坑要点,让你轻松避开99%的雷区! 1.避小就大,信赖旗舰店:远离无名小品牌,选择知名品牌的…

Javacript 高级程序设计(系统学习)

以下为阅读 《Javacript 高级程序设计》部分笔记,待继续完善,后续会进行章节拆分。 第1章 什么是 javascript 历史回顾js 实现 / es / dom / bomjs 版本 javascript 最初为什么设计为单线程? JavaScript 最初设计为单线程的主要原因是出于简…

体验 Whisper ,本地离线部署自己的 ASR 语音识别服务

需求背景 最近看视频,过几天后经常忘记内容,所以有了把重点内容总结提炼到自己知识库的需求,这涉及到了提取视频中的音频数据、离线语音识别等功能。 提取视频中的音频数据,可以使用格式工厂或 FFmpeg 等工具, FFmpe…

详细解析socket

我最近开了几个专栏,诚信互三! > |||《算法专栏》::刷题教程来自网站《代码随想录》。||| > |||《C专栏》::记录我学习C的经历,看完你一定会有收获。||| > |||《Linux专栏》&#xff1…

书生大模型实战营第三期——入门岛——Git基础知识

第三关:Git基础知识 任务如下: 任务描述 破冰活动:自我介绍 每位参与者提交一份自我介绍。 提交地址:GitHub - InternLM/Tutorial: LLM&VLM Tutorial 的 camp3 分支~实践项目:构建个人项目 创建一个个人…

PDF发票解析并将信息回填到前端(2)前端页面

本人前端基础薄弱,此处的前端仅仅是一个练习展示 1. 创建一个前端项目 打开终端使用以下命令创建一个基于webpack模板的新项目 vue init webpack my-project输入命令之后一直点击enter知道项目创建完成即可 进入项目,安装并运行 $ cd my-project //…

ExtJS生成日历组件

文章目录 1.添加日历组件代码2.引入日历组件,创建了补签和取消签到,以及翻页显示的事件 1.添加日历组件代码 首先找到自己项目中对应的Ext的目录,并将日历组件添加到calendar这个目录下,我的是KwDatePicker.js 日历组件代码如下: Ext.define(Ext.calendar.KwDatePicker, {ex…

python six模块是什么

six模块是Python2和3兼容性库,它是为了解决Python2和Python3代码兼容性而产生的,众所周知Python2和Python3版本的分裂给Python开发者们带来了很大的烦恼,为了使代码同时兼容两个版本,往往要增加大量的代码,典型的就有u…

著名人工智能新经济数字经济新能源新质生产力讲师培训师教授专家唐兴通分享人工智能社会学商业模式创新人工智能就业工作与教育学习出海跨境数字化转型数字营销数字销售

添加图片注释,不超过 140 字(可选) 2024 年是人工智能在工作中真正应用的一年。根据微软和领英进行的调查(2024年5月),在过去六个月中,生成式人工智能的使用量几乎翻了一番,全球75%的…

领夹麦克风哪个品牌音质最好?八月领夹式麦克风排行榜

随着移动互联技术的飞速发展,视频内容的消费与创作正以前所未有的速度增长。从直播带货的兴起,到短视频平台的火爆,音频质量作为内容体验的重要组成部分,越来越受到创作者的重视。在这一背景下,无线领夹麦克风凭借其小…

6-8 残差网络(ResNet)

随着我们设计越来越深的网络,深刻理解“新添加的层如何提升神经网络的性能”变得至关重要。更重要的是设计网络的能力,在这种网络中,添加层会使网络更具表现力, 为了取得质的突破,我们需要一些数学基础知识。 残差网络…

Web端高效元件库——高端元件,匠心设计

原型设计,不仅是产品从构想到落地不可或缺的桥梁,更是深化用户体验优化策略的核心环节。Axure,作为原型设计领域的领航者,凭借其卓越的交互设计引擎与无与伦比的灵活性,赢得了产品设计师们的广泛赞誉,成为他…

NiFi :1 初识这把“十年一剑”的利器

--->更多内容&#xff0c;请移步“鲁班秘笈”&#xff01;&#xff01;<--- “现在AI和数据处理密不可分&#xff0c;80%的企业可以利用Apache NiFi轻松解决复杂的数据问题&#xff0c;快速完成场景建设。犹如花上百来块钱在家享受一顿不亚于五星级西餐厅的法式大餐。对…

非负数、0和正数 限制最大值且保留两位小数在elementpuls表单中正则验证

一、结构 <el-form-item label="单价:" prop="price"><el-inputv-model.trim="formData.price"placeholder="请输入"@blur="formMethod.fixTwo"><template #append>(元)</template></el-input…

电源芯片测试系统NSAT2000对比传统ATE测试软件有哪些优势?

随着近几年电源芯片的研究和发展&#xff0c;电源芯片向着高度的集成化、智能化的趋势发展&#xff0c;电源芯片想不过去有了更全面的功能&#xff0c;更稳定可靠的优势。相应的市场中电源芯片的测试系统同样也百花齐放&#xff0c;各类ATE测试软件层出不穷。其中纳米软件的NSA…