一、项目概述

本次测试目标是在海光 DCU K100-AI 单卡环境下,使用 ComfyUI 跑通 Wan2.2 图生视频工作流,并验证 INT8 权重加载、LightX2V LoRA 加速、以及第二轮热启动后的生成耗时。

结果为:

Prompt executed in 00:13:17

也就是约797秒。

ComfyUI 原生 Wan 节点
+ wan_offline_int8_loader
+ Wan2.2 INT8 high/low noise 权重
+ LightX2V 4-step LoRA
+ 单卡 K100-AI

二、测试环境

2.1 机器与容器

项目 配置
节点 192.168.217.66
容器 ID 9b4637fb8077
加速卡 海光 DCU K100-AI
测试卡数 单卡
使用设备 cuda:0 K100_AI : native
显存 65520 MB
主机内存 193093 MB
PyTorch 2.9.0
ROCm (6, 3)
ComfyUI 0.3.56
ComfyUI 路径 /root/ComfyUI_DEMO/ComfyUI
数据路径 /data
日志路径 /data/profiles

日志中确认的信息:

Total VRAM 65520 MB, total RAM 193093 MB
pytorch version: 2.9.0
AMD arch: gfx928:sramecc+:xnack-
ROCm version: (6, 3)
Device: cuda:0 K100_AI : native
ComfyUI version: 0.3.56

三、使用的工作流

对应的 UI 工作流是:

/data/图生视频(video_wan2_2_14B_i2v)_modi_int8_optim.json

实际 API prompt 记录文件是:

/data/profiles/wan22_int8_optim_r2_prompt.json

对应运行日志:

/data/profiles/comfy_8189_int8_optim_timing.log

四、模型文件准备

4.1 INT8 high / low noise 权重

本次使用两份 Wan2.2 INT8 权重:

wan2.2_i2v_high_noise_14B_int8_lightx2v.safetensors
wan2.2_i2v_low_noise_14B_int8_lightx2v.safetensors

容器中的路径为:

/root/ComfyUI_DEMO/ComfyUI/models/diffusion_models/wan2.2_i2v_high_noise_14B_int8_lightx2v.safetensors
/root/ComfyUI_DEMO/ComfyUI/models/diffusion_models/wan2.2_i2v_low_noise_14B_int8_lightx2v.safetensors

这两个文件实际是 /data 下权重的软链接:

/root/ComfyUI_DEMO/ComfyUI/models/diffusion_models/wan2.2_i2v_high_noise_14B_int8_lightx2v.safetensors -> /data/wan2.2_i2v_high_noise_14B_int8_lightx2v.safetensors

/root/ComfyUI_DEMO/ComfyUI/models/diffusion_models/wan2.2_i2v_low_noise_14B_int8_lightx2v.safetensors -> /data/wan2.2_i2v_low_noise_14B_int8_lightx2v.safetensors

如果需要重新创建软链接,可以执行:

ln -sf /data/wan2.2_i2v_high_noise_14B_int8_lightx2v.safetensors \
  /root/ComfyUI_DEMO/ComfyUI/models/diffusion_models/wan2.2_i2v_high_noise_14B_int8_lightx2v.safetensors

ln -sf /data/wan2.2_i2v_low_noise_14B_int8_lightx2v.safetensors \
  /root/ComfyUI_DEMO/ComfyUI/models/diffusion_models/wan2.2_i2v_low_noise_14B_int8_lightx2v.safetensors

4.2 LightX2V 4-step LoRA

本次工作流还使用了 high / low noise 两个 LoRA:

/root/ComfyUI_DEMO/ComfyUI/models/loras/wan2.2_i2v_lightx2v_4steps_lora_v1_high_noise.safetensors

/root/ComfyUI_DEMO/ComfyUI/models/loras/wan2.2_i2v_lightx2v_4steps_lora_v1_low_noise.safetensors

工作流中 LoRA 强度为:

strength_model = 1.0

4.3 VAE

使用 VAE:

wan_2.1_vae.safetensors

节点配置:

"vae_name": "wan_2.1_vae.safetensors"

4.4 文本编码器

使用文本编码器:

umt5_xxl_fp8_e4m3fn_scaled.safetensors

节点配置:

"clip_name": "umt5_xxl_fp8_e4m3fn_scaled.safetensors",
"type": "wan",
"device": "default"

五、INT8 Loader 安装

这条路线依赖:

wan_offline_int8_loader

自定义节点安装位置:

/root/ComfyUI_DEMO/ComfyUI/custom_nodes/wan_offline_int8_loader

启动日志里可以看到:

Wan offline INT8 loader custom node installed.

在运行时,loader 成功替换了 Wan 模型里的 Linear 层:

Wan offline INT8 loader: replaced 400 Linear layers.

这是这条单卡 INT8 路线的关键点。

六、启动 ComfyUI 服务

进入容器后,建议先加载环境:

source /opt/dtk/env.sh

如果只跑单卡,可以指定:

export HIP_VISIBLE_DEVICES=0

然后启动 ComfyUI:

cd /root/ComfyUI_DEMO

python ComfyUI/main.py \
  --disable-cuda-malloc \
  --use-pytorch-cross-attention \
  --port 8189 \
  --listen 0.0.0.0 \
  > /data/profiles/comfy_8189_int8_optim_timing.log 2>&1

如果要后台启动:

cd /root/ComfyUI_DEMO

nohup python ComfyUI/main.py \
  --disable-cuda-malloc \
  --use-pytorch-cross-attention \
  --port 8189 \
  --listen 0.0.0.0 \
  > /data/profiles/comfy_8189_int8_optim_timing.log 2>&1 &

服务启动后检查:

curl http://127.0.0.1:8189/system_stats

浏览器访问:

http://服务器IP:8189

七、工作流关键参数

7.1 基础图生视频参数

工作流中图生视频节点:

"width": 640,
"height": 640,
"batch_size": 1

帧数由表达式计算:

"expression": "floor (a * b + 1)"

其中:

a = 5
b = 16

所以:

floor(5 * 16 + 1) = 81 帧

也就是说本次是:

640 x 640
81 帧
16 FPS

7.2 采样参数

工作流里使用两个 KSamplerAdvanced,分别对应 high noise 和 low noise 阶段。

总 steps:

20

切分点:

10

所以实际表现为两段采样:

high noise:0 -> 10
low noise:10 -> 20

日志中能看到两段进度条,每段都是 10/10

采样器:

euler

调度器:

simple

CFG:

3.5

shift:

5.0

seed:

766384517380855

7.3 high noise 模型节点

"unet_name": "wan2.2_i2v_high_noise_14B_int8_lightx2v.safetensors",
"weight_dtype": "default"

对应 LoRA:

"lora_name": "wan2.2_i2v_lightx2v_4steps_lora_v1_high_noise.safetensors",
"strength_model": 1.0

7.4 low noise 模型节点

"unet_name": "wan2.2_i2v_low_noise_14B_int8_lightx2v.safetensors",
"weight_dtype": "default"

对应 LoRA:

"lora_name": "wan2.2_i2v_lightx2v_4steps_lora_v1_low_noise.safetensors",
"strength_model": 1.0

八、提交工作流

如果通过 Web UI 操作,可以在 ComfyUI 页面里导入:

/data/图生视频(video_wan2_2_14B_i2v)_modi_int8_optim.json

然后点击运行。

如果通过 API 提交,可以使用导出的 API prompt:

/data/profiles/wan22_int8_optim_r2_prompt.json

提交方式大致如下:

curl -X POST http://127.0.0.1:8189/prompt \
  -H "Content-Type: application/json" \
  -d @/data/profiles/wan22_int8_optim_r2_prompt.json

如果需要标准 ComfyUI API 格式,可以包装成:

{
  "prompt": {
    "...": "这里是 workflow prompt 内容"
  },
  "client_id": "your-client-id"
}

九、实测结果

9.1 第一轮结果

第一轮日志:

Prompt executed in 00:14:32

也就是:872秒

第一轮里包含较多加载和初始化开销,例如:

VAE load device: cuda:0, offload device: cpu, dtype: torch.bfloat16
CLIP/text encoder model load device: cuda:0, offload device: cpu, current: cpu, dtype: torch.float16
Wan offline INT8 loader: replaced 400 Linear layers.

第一轮采样日志中能看到两段 10 step:

100%|██████████| 10/10 [06:36<00:00, 39.67s/it]
100%|██████████| 10/10 [05:53<00:00, 35.39s/it]
Prompt executed in 00:14:32

9.2 第二轮结果,也就是 797 秒

第二轮在不关闭服务的情况下继续提交。模型、VAE、文本编码器已经热起来,因此总耗时下降。

日志结果:

Prompt executed in 00:13:17

第二轮采样日志:

100%|██████████| 10/10 [05:54<00:00, 35.47s/it]
100%|██████████| 10/10 [05:53<00:00, 35.39s/it]
Prompt executed in 00:13:17

可以看到第二轮两段采样都稳定在 35 秒左右一段平均 step 时间。

9.3 结果汇总

轮次 状态 耗时
第一轮 成功 00:14:32,约 872 秒
第二轮 成功 00:13:17,约 797 秒

对应日志:

/data/profiles/comfy_8189_int8_optim_timing.log

对应第二轮 prompt:

/data/profiles/wan22_int8_optim_r2_prompt.json

对应第二轮 run 记录:

/data/profiles/wan22_int8_optim_r2_run.json

十、关键日志说明

10.1 单卡确认

日志里显示:

Device: cuda:0 K100_AI : native

说明本次是单卡。

10.2 INT8 loader 生效

日志里显示:

Wan offline INT8 loader custom node installed.
Wan offline INT8 loader: replaced 400 Linear layers.

说明 INT8 权重加载和 Linear 替换生效。

10.3 注意 Flash Attention 日志

日志里有:

Warning: sdpa adopt the new interface of flash-attn

以及:

Using pytorch attention

说明这条路线里 attention 相关实现和当时安装的 FA 包有关,但本次 797 秒结果主要对应的是 INT8 optim 工作流本身。

十一、常见问题

11.1 这条路线用了几张卡?

单卡。

日志中设备是:

cuda:0 K100_AI

如果要强制单卡,启动前设置:

export HIP_VISIBLE_DEVICES=0

11.2 为什么第二轮更快?

第一轮会加载 VAE、CLIP、模型权重,并执行 INT8 Linear 替换。第二轮复用已加载的模型与缓存,所以总耗时更低。

11.3 为什么进度条是两段 10/10?

Wan2.2 I2V 有 high noise 和 low noise 两个模型阶段。工作流里总 steps 是 20,切分点是 10,所以日志上表现为两段:

high noise: 10 steps
low noise: 10 steps

十二、结论

本次在海光 DCU K100-AI 单卡上,使用 ComfyUI 原生 Wan2.2 图生视频工作流,加载 INT8 high/low noise 权重,并通过 wan_offline_int8_loader 替换 400 个 Linear 层,成功完成 640x640、81 帧、20 steps 的图生视频生成。

最终单卡第二轮热启动耗时:

797 秒

整体流程稳定,适合作为单卡 INT8 路线的部署参考。

Logo

免费领 150 小时云算力,进群参与显卡、AI PC 幸运抽奖

更多推荐