Linux 下从头部署Wan2.2模型(小显存可用)

Linux 下从头部署Wan2.2模型(小显存可用)

Linux 下从头部署Wan2.2模型(小显存可用)

相信节前字节发布的即梦2.0让大家感受到了AI视频生成的威力,但是他毕竟是个闭源模型,还要收费,所以钱包不够充裕或者希望有更多自定义需求的同学,可以选择当前视频生成开源模型中比较强的 Wan2.2 来进行 AI 视频生成,我下面介绍一下手把手的部署方法。

如果需要查看视频教程,查看 wan2.2 部署视频教程

前置条件

首先确保你安装了基础的 python、conda 环境,安装了英伟达显卡驱动。

一、安装 pytorch、cuda 等(可选)

如果你已经有了 pytorch、cuda 等环境,可以忽略此步骤
1、创建一个 python 虚拟环境
为了保证稳定性,将 pip 切换为国内的清华源

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple 

创建一个 conda 环境用于 comfyui

conda create -n comfyui python=3.10 -y conda activate comfyui 
  1. 安装 PyTorch(必须根据你的 CUDA 版本选择)
    先查看你的 CUDA:
nvidia-smi 

看右侧的 Driver 版本对应 CUDA,一般是 11.x 或 12.x。
如果你的 CUDA >= 12.1,都使用 12.1

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121 

如果你的 CUDA = 11.8

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 

下载的东西比较大,一般要等十来分钟

二、安装 Comfyui

1、下载 Comfyui 主仓库
这里我们通过国内 gitee 站点来下载 Comfyui 仓库
PS:如果发现这个仓库太老了,可以用ComfyUI 关键词在 gitee 搜索一下,一般有用户会定时将
github 的仓库同步到 gitee

git clone https://gitee.com/auto-mirrors/comfy-ui.git 

2、安装依赖

cd comfy-ui 
pip install -r requirements.txt 
在这里插入图片描述


这一步一般也要十几二十分钟

在这里插入图片描述


2、先把 ComfyUI 跑起来
在 8188 端口运行 ComfyUI服务

python main.py --listen 0.0.0.0 --port 8188

看到下面的输出代表跑起来了:

在这里插入图片描述

接着就从本地浏览器打开:localhost:8188,可以看到 ComfyUI 成功跑起来了

3、安装 Comfyui GGUF 插件
我们要在小显存下使用 Z-Image 模型,一般要用 GGUF 的模型(什么是 GGUF 就自己问问 AI
吧),那么我们就需要在 ComfyUI 的仓库内再下载 Comfyui GGUF 插件仓库并安装:
1、进入本地 ComfyUI 仓库的 custom_nodes 文件夹

cd custom_nodes 

2、下载Comfyui GGUF 插件仓库
同样我们从 gitee 下载

git clone https://gitee.com/203014/ComfyUI-GGUF.git 

3、安装 gguf 组件

conda activate comfyui cd ComfyUI-GGUF 
pip install gguf 

4、安装 ComfyUI 管理器
安装节点管理器 “ComfyUI-Manager”,以后可以方便地安装节点(Nodes,当然这个是从
github 下载的,有时候要看天)。

cd..git clone https://gitee.com/muchlai/ComfyUI-Manager.git cd ComfyUI-Manager pip install -r requirements.txt 

5、安装其他常用插件
同样是把插件仓库克隆到 custom_nodes 文件夹

cd..git clone https://gitee.com/ai-tutorial/ComfyUI-WanVideoWrapper.git cd ComfyUI-WanVideoWrapper pip install -r requirements.txt cd..git clone https://gitee.com/chenzhaotong/ComfyUI-VideoHelperSuite.git cd ComfyUI-VideoHelperSuite pip install -r requirements.txt cd..git clone https://github.com/raindrop313/ComfyUI-WanVideoStartEndFrames cd ComfyUI-WanVideoStartEndFrames pip install -r requirements.txt 

之后重启 comfyui 即可正常使用。

三、下载模型文件

我们需要下载三个模型:视频生成模型、Text Encoder 模型、vae 模型。
我选用国外大神整合的 wan2.2-rapid-mega-aio 模型,这个mega模型把文生视频和图生视频合
成一个模型,我找到了他的 量化版本,以跑在小显存的电脑上,模型仓库可以查看:

https://huggingface.co/befox/WAN2.2-14B-Rapid-AllInOne-GGUF 

但是,经过我多次测试,即使从 hugging-face 的镜像 hf-mirror,下载速度也不是最快最稳的,而视频模型通常都非常大,所以我直接在阿里的 modelscope 上下载。

  1. 下载视频生成模型
    我的电脑有 12G 显存,我选择 wan2.2-rapid-mega-aio-v12.1-Q5_K.gguf 的版本,大家可以根据自己的显存大小选择不同的版本,

GGUF模型仓库

cd..cd ./models/unet wget https://www.modelscope.cn/models/befox/WAN2.2-14B-Rapid-AllInOne- GGUF/resolve/master/Mega-v12/wan2.2-rapid-mega-aio-v12-Q5_K.gguf 
  1. 下载 Clip 模型
    同样使用 modelscope 的下载地址,文件保存在 ComfyUI/models/clip/
cd..cd ./clip wget https://www.modelscope.cn/models/city96/umt5-xxl-encoder- gguf/resolve/master/umt5-xxl-encoder-Q5_K_M.gguf 

3、下载 vae 模型
我们使用 wan_2.1 的 vae 模型(没错,wan2.2 也是用的 wan2.1 的 vae 模型)

cd..cd ./vae wget https://modelscope.cn/models/Comfy- Org/Wan_2.1_ComfyUI_repackaged/resolve/master/split_files/vae/wan_2.1_vae. safetensors 

四、开始炼丹!

经过了那么多步骤,终于可以开始生图了
1、重启一下 comfyui

cd../../ python main.py --listen 0.0.0.0 --port 8188

2、导入工作流
我做好了最基本的图生视频工作流,大家只要保存这个文件,然后拖入到浏览器的 comfui 窗口
中,就能把工作流自动导入:

图生视频工作流下载

拖入后变成:

在这里插入图片描述

3、上传首帧图片
在这里上传视频的首帧图片

在这里插入图片描述

4、提示词
在这里写正面提示词:

在这里插入图片描述
动漫少女,人物特征严格保持与图片一致。她正在跳一段充满活力的K-pop女团舞蹈,动作流畅有节 奏感,背景是干净的练习室。镜头围绕她做缓慢的环绕运动。动漫风格,高清,动作一致性好。 负面提示词可写可不写 

5、生成视频
点击运行,等待 3-20 分钟就能获得视频了(取决于你显卡的给力程度)
下面是生成的最终视频文件:

视频文件

五、一些常见的问题

Q1:如何设置生成的视频长度?
A:在 Number of Frame 节点上可以设置视频的总帧数。
如果你要设置时长为 5 秒,帧率为 16,则总帧数 5 x 16 = 80
Q2:如何给一个结束帧参考?
A:右键点击StartFrame节点,克隆,重命名为 EndFrame,然后连到 end_image

Q3:如何调整生成后视频的画质和文件大小?
A:调整 CRF — Constant Rate Factor(恒定质量因子)。这是视频压缩编码器(比如
x264/x265/AV1/VVC 等)里常用的一个参数,用来控制 视频质量与文件大小之间的平衡。

我是新手,想一键使用

我想一键使用!
不会或者不想折腾环境的同学,我直接做好了可以一键运行的镜像:

wan2.2一键镜像

Read more

C++11新特性(下)----《Hello C++ Wrold!》(26)--(C/C++)

C++11新特性(下)----《Hello C++ Wrold!》(26)--(C/C++)

文章目录 * 前言 * lambda表达式 * 可变参数模板 * 展开参数包的方法 * 应用 * 包装器 * fiction包装器 * bind函数 * 作业部分 前言 在 C++11 标准带来的诸多革命性特性中,“简化代码编写” 与 “统一可调用对象管理” 是两大核心目标。lambda 表达式解决了传统仿函数 “定义繁琐、复用性低” 的痛点,让局部场景下的自定义逻辑(如排序规则、回调函数)能以更简洁的匿名函数形式实现;可变参数模板则打破了模板参数数量固定的限制,为 STL 容器(如emplace_back)和通用函数设计提供了灵活的参数处理能力;而 function 包装器与 bind 函数,则进一步整合了函数指针、仿函数、lambda 等不同类型的可调用对象,实现了统一管理与参数适配,甚至让可调用对象存储到容器中成为可能。 这些特性并非孤立存在 ——lambda 的底层依赖仿函数实现,可变参数模板为emplace系列接口提供了技术支撑,

By Ne0inhk
C++日新月异的未来代码:C++11(上)

C++日新月异的未来代码:C++11(上)

文章目录 * 1.统一的列表初始化 * 1.1 普通{ }初始化 * 1.2 initializer_list * 2.声明 * 2.1 auto、nullptr * 2.2 decltype * 3.左值右值 * 3.1 概念 * 3.2 左值引用与右值引用比较 * 3.3 左值引用与右值引用的应用 * 3.4 完美转发 * 希望读者们多多三连支持 * 小编会继续更新 * 你们的鼓励就是我前进的动力! C++11 能更好地用于系统开发和库开发、语法更加泛华和简单化、更加稳定和安全,不仅功能更强大,而且能提升程序员的开发效率,公司实际项目开发中也用得比较多,所以我们要作为一个重点去学习 1.统一的列表初始化 1.1

By Ne0inhk
Re:从零开始的 C++ 入門篇(十一):全站最全面的C/C++内存管理的底层剖析与硬核指南

Re:从零开始的 C++ 入門篇(十一):全站最全面的C/C++内存管理的底层剖析与硬核指南

◆ 博主名称: 晓此方-ZEEKLOG博客 大家好,欢迎来到晓此方的博客。 ⭐️C++系列个人专栏: Re:从零开始的C++_晓此方的博客-ZEEKLOG博客  ⭐️踏破千山志未空,拨开云雾见晴虹。 人生何必叹萧瑟,心在凌霄第一峰 目录 0.1概要&序論 一,布局模型与常见误区解析 1.1C/C++内存布局 1.2内存布局易误解点 二,复习C语言的内存管理方法 2.1malloc 2.2calloc 2.3relloc 2.4free 2.5罗列常见的内存管理错误 三,C++内存管理方法 3.1new/delete管理体系 3.1.1开辟单个空间与释放 3.1.2开辟多个连续的空间与释放

By Ne0inhk
华为OD技术面八股文真题_C++_3

华为OD技术面八股文真题_C++_3

文章目录 * 变量的声明和定义的区别 * 内存泄露是什么意思?怎么避免内存泄露 * 怎么排查内存泄漏,遇到内存泄漏情况,一般怎么解决 * 说一下define和const的区别 * define和typedef的区别 * 宏函数和内联函数的区别 * 类和结构体的区别 * 结构体(struct)和联合体(union)差别 * 静态库和动态库区别 * 介绍一下C++的编译过程 变量的声明和定义的区别 * 变量的声明是告诉编译器变量的名称和类型,不分配存储空间; * 变量的定义会为变量分配存储空间并建立实体。 * 一个变量可以在多个地方声明,但只能在一个地方定义。 使用 extern 修饰的变量通常是声明,表示该变量在其它文件中定义,但 如果 extern 变量带初始化,则该语句仍然属于定义。 内存泄露是什么意思?怎么避免内存泄露 内存泄漏是指程序在动态申请内存后,后续失去对该内存的控制,导致这块内存无法被释放,从而造成内存资源浪费的现象。内存被申请了,却释放不了。 内存泄漏的危害如下: 1. 程序内存占用不断增大,导致系统可用内存减少,性能下

By Ne0inhk