FramePack for ComfyUI工作流Sage-Attention优化效率测试

背景

基于FramePack在ComfyUI工作流和相关插件,进过测试发现KJ大神的默认用统一文件大模型运行Sage-Attention无效果,让我产生的浓厚的测试兴趣,于是恢复用默认大模型文件模式进行了如下测试。

本文讨论的视频生成工作流利用了 Hunyuan Video Transformer 模型,通过四个潜在分区(total_latent_sections: 4)处理潜在表示,生成高质量视频帧。工作流涉及多个模型,包括 AutoencoderKLCLIPVisionModelProjectionHunyuanVideoClipModel_,并使用 --normalvram 模式最大化 GPU 显存使用。

比较了两种注意力机制:

  • Sage-Attention :一种优化的注意力机制(sageattention==1.0.6),专为视频生成任务设计,通过高级内存管理和优化的矩阵运算降低计算开销。
  • SDPA:PyTorch 的默认 Scaled Dot-Product Attention 机制,在未指定特定注意力优化时使用,稳健但对大规模视频模型的优化不足。

比较在 NVIDIA RTX 5090(32GB 显存)上进行,ComfyUI 配置为高性能视频生成。结果显示出显著的性能差异,为优化 ComfyUI 工作流提供了宝贵经验。

比较目标

比较的主要目标包括:

  1. 性能:测量视频生成工作流的总执行时间和每步时间。
  2. 资源利用率:分析 GPU 利用率和显存消耗,了解效率和可扩展性。
  3. 稳定性 :确保工作流无错误运行(例如 ConnectionResetError[WinError 5]),利用 flow2-wan-videoComfyUI-Manager 等自定义节点。
  4. 实用性:提供清晰的命令行指令,便于他人复现结果。

比较原因

注意力机制的选择对扩散模型视频生成的性能有重大影响,原因如下:

  • 计算复杂性 :视频模型处理大型潜在张量(例如 torch.Size([1, 16, 1, 96, 64])),需要高效的注意力机制处理空间和时间依赖。
  • 内存管理:显存接近 32GB 限制时,优化的注意力机制可减少内存开销,避免内存不足错误。
  • 优化技术:Sage-Attention 使用高级技术(例如优化矩阵乘法、减少内存碎片),而 SDPA 依赖 PyTorch 默认实现,可能不适合视频任务。
  • 工作流效率:更快的执行时间可提高迭代速度,对创意和研究工作流至关重要。

命令行指令

以下是运行 ComfyUI 工作流的命令行,以及用于收集性能数据的显存监控命令。

Sage-Attention 模式

  • 命令

    css 复制代码
    python.exe -s ComfyUI\main.py --windows-standalone-build --normalvram --input-directory "E:\AI\Input" --output-directory "E:\AI\Output" --verbose DEBUG --use-sage-attention --fast
  • 显存监控

    css 复制代码
    nvidia-smi --query-gpu=utilization.gpu,utilization.memory,memory.total,memory.free,memory.used --format=csv -l 1 > gpu_usage_sage_workflow.csv
  • 说明

    • --use-sage-attention 启用 Sage-Attention 机制。

    • --fast 激活优化,如 fp16_accumulationfp8_matrix_multcublas_ops

    • 确保安装 sageattention==1.0.6

      ini 复制代码
      pip install sageattention==1.0.6

SDPA 模式

  • 命令

    css 复制代码
    python.exe -s ComfyUI\main.py --windows-standalone-build --normalvram --input-directory "E:\AI\Input" --output-directory "E:\AI\Output" --verbose DEBUG --fast
  • 显存监控

    css 复制代码
    nvidia-smi --query-gpu=utilization.gpu,utilization.memory,memory.total,memory.free,memory.used --format=csv -l 1 > gpu_usage_sdpa_workflow.csv
  • 说明

    • 未指定 --use-sage-attention 时,默认使用 PyTorch 的 SDPA。
    • --fast 应用与 Sage-Attention 相同的优化,确保比较公平。

性能结果

工作流在相同设置(--normalvram--fast)下于 NVIDIA RTX 5090 上执行,处理视频生成任务,包含四个潜在分区(total_latent_sections: 4)。以下是各模式的性能指标。

Sage-Attention 模式

  • 总执行时间:389.16 秒(约 6.49 分钟)

  • 每步时间(每分区 30 步):

    • 分区 1(latent_padding: 3):85 秒(约 2.85 秒/步)
    • 分区 2(latent_padding: 2):83 秒(约 2.80 秒/步)
    • 分区 3(latent_padding: 1):81 秒(约 2.71 秒/步)
    • 分区 4(latent_padding: 0):80 秒(约 2.69 秒/步)
  • 稳定性:无错误报告,尽管显存使用率高,执行流畅。

SDPA 模式

  • 总执行时间:686.61 秒(约 11.44 分钟)

  • 每步时间(每分区 30 步):

    • 分区 1(latent_padding: 3):158 秒(约 5.30 秒/步)
    • 分区 2(latent_padding: 2):156 秒(约 5.23 秒/步)
    • 分区 3(latent_padding: 1):158 秒(约 5.28 秒/步)
    • 分区 4(latent_padding: 0):156 秒(约 5.22 秒/步)
  • 稳定性:无错误,但因注意力计算效率较低,速度明显较慢。

性能洞察

  • 速度优势:Sage-Attention 比 SDPA 快约 43.3%(389.16 秒 vs. 686.61 秒),每步时间减少约 2.4-2.6 秒。
  • 一致性:Sage-Attention 在各分区的时间略有下降(2.85 秒/步 到 2.69 秒/步),可能得益于缓存或优化效果。
  • 适用场景 :Sage-Attention 适合迭代视频生成工作流(如使用 Video Combine 处理帧序列),显著提高生产效率。

显存监控数据

使用 nvidia-smi 监控工作流执行期间的显存使用情况。RTX 5090 总显存为 32607 MiB(约 32GB)。以下是各模式的关键指标。

Sage-Attention 模式(gpu_usage_sage_workflow.csv

  • 峰值显存使用量:30768 MiB(约 30.0GB)

  • 平均显存使用量:22877 MiB(约 22.3GB)

  • 最小可用显存:1334 MiB(约 1.3GB)

  • 显存波动(标准差) :8417 MiB(约 8.2GB)

  • GPU 利用率

    • 平均:41%
    • 峰值:100%
  • 显存控制器利用率

    • 平均:15%
    • 峰值:38%
  • 使用阶段

    • 初始阶段(0-30 秒) :约 4.9-6.8GB(加载 AutoencoderKL)。
    • 模型加载(30-60 秒) :约 6.8-15.3GB(HunyuanVideoClipModel_)。
    • 工作流执行(60-360 秒) :约 29.5-30.0GB(DynamicSwap_HunyuanVideoTransformer3DModelPacked)。
    • 模型卸载(360-370 秒) :约 30.0-20.2GB。
    • 解码阶段(370-390 秒) :约 5.1-5.4GB(重新加载 AutoencoderKL)。

SDPA 模式(gpu_usage_sdpa_workflow.csv

  • 峰值显存使用量:30224 MiB(约 29.5GB)

  • 平均显存使用量:20818 MiB(约 20.3GB)

  • 最小可用显存:1865 MiB(约 1.8GB)

  • 显存波动(标准差) :9968 MiB(约 9.7GB)

  • GPU 利用率

    • 平均:67%
    • 峰值:100%
  • 显存控制器利用率

    • 平均:13%
    • 峰值:22%
  • 使用阶段

    • 初始阶段(0-30 秒) :约 5.1-7.5GB(加载 AutoencoderKL)。
    • 模型加载(30-60 秒) :约 7.5-15.4GB(HunyuanVideoClipModel_)。
    • 工作流执行(60-650 秒) :约 29.7-30.0GB(DynamicSwap_HunyuanVideoTransformer3DModelPacked)。
    • 模型卸载(650-660 秒) :约 30.0-5.5GB。
    • 解码阶段(660-686 秒) :约 5.5-6.1GB(重新加载 AutoencoderKL)。

显存洞察

  • 峰值使用量:两种模式均接近 RTX 5090 的显存上限(约 30.0GB),反映视频模型的高内存需求。
  • 平均使用量:Sage-Attention 的平均显存使用量略高(约 22.3GB vs. 20.3GB),可能因其内存分配策略不同。
  • 稳定性:Sage-Attention 的显存波动较小(8.2GB vs. 9.7GB),表明其内存管理更优。
  • GPU 利用率:SDPA 的平均 GPU 利用率更高(67% vs. 41%),但性能未提升,反映计算效率较低。
  • 显存控制器:Sage-Attention 的峰值显存控制器利用率更高(38% vs. 22%),表明其内存访问模式更密集但效率更高。

表格比较

指标 Sage-Attention SDPA
总执行时间 389.16 秒(约 6.49 分钟) 686.61 秒(约 11.44 分钟)
平均每步时间 2.76 秒/步 5.26 秒/步
分区时间 85秒, 83秒, 81秒, 80秒 158秒, 156秒, 158秒, 156秒
峰值显存使用量 30768 MiB(约 30.0GB) 30224 MiB(约 29.5GB)
平均显存使用量 22877 MiB(约 22.3GB) 20818 MiB(约 20.3GB)
最小可用显存 1334 MiB(约 1.3GB) 1865 MiB(约 1.8GB)
显存波动(标准差) 8417 MiB(约 8.2GB) 9968 MiB(约 9.7GB)
平均 GPU 利用率 41% 67%
峰值 GPU 利用率 100% 100%
平均显存控制器利用率 15% 13%
峰值显存控制器利用率 38% 22%
命令行 python.exe -s ComfyUI\main.py --normalvram --use-sage-attention --fast python.exe -s ComfyUI\main.py --normalvram --fast
稳定性 高(无错误) 高(无错误)

给从业者的建议

  1. 选择 Sage-Attention 用于视频工作流

    • 其 43.3% 的速度提升使其成为迭代视频生成任务的理想选择,例如使用 Video Combine 处理帧序列。
    • 安装 sageattention==1.0.6 并使用 --use-sage-attention 以获得最佳效果。
  2. 监控显存使用

    • 两种模式均将显存推至约 30GB。使用 nvidia-smi 监控,并定期清理缓存以避免内存问题:

      bash 复制代码
      rmdir /s /q E:\AI\ComfyUI\ComfyUI.cache
  3. 优化工作流

    • 通过调整工作流节点减少模型卸载(例如 AutoencoderKL),将模型保留在显存中。
    • 尝试 --fast 的子选项(例如 fp8_matrix_mult)以进一步降低显存和时间开销。
    • 考虑降低工作流中的帧分辨率或帧数以减轻显存压力。
  4. 确保稳定性

    • 禁用可能引发问题的自定义节点,如 ComfyUI-Managerflow2-wan-video

      arduino 复制代码
      move E:\AI\ComfyUI\ComfyUI\custom_nodes\ComfyUI-Manager E:\AI\ComfyUI\ComfyUI\custom_nodes\ComfyUI-Manager.bak
      move E:\AI\ComfyUI\ComfyUI\custom_nodes\flow2-wan-video E:\AI\ComfyUI\ComfyUI\custom_nodes\flow2-wan-video.bak
    • 添加 Windows 事件循环兼容性:

      arduino 复制代码
      import asyncio
      import sys
      if sys.platform == "win32":
          asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
  5. 验证依赖版本

    • 确保兼容版本:

      ini 复制代码
      pip install aiohttp==3.10.11 numpy==2.0.0 opencv-python sageattention==1.0.6

结论

Sage-Attention 在 ComfyUI 的视频生成工作流中显著优于 SDPA,执行时间减少约 43.3%(389.16 秒 vs. 686.61 秒),显存使用量相当(约 30.0GB)。其优化的内存管理和计算效率使其成为 RTX 5090 等高性能 GPU 上视频生成的首选。通过遵循提供的命令和建议,从业者可以复现这些结果,优化工作流,实现更快、更高效的视频生成。

如果有同学用KJ的插件和工作流用一体大数据模型也能加速成功的话欢迎分享经验哈!

相关推荐
阿杜杜不是阿木木21 小时前
开始 ComfyUI 的 AI 绘图之旅-Stable Diffusion图生图之局部重绘(Inpaint)和扩图(Outpaint)(三)
人工智能·ai·ai作画·aigc·图生图
阿杜杜不是阿木木21 小时前
开始 ComfyUI 的 AI 绘图之旅-Stable Diffusion图生图(二)
人工智能·ai·ai作画·aigc·图生图
墨风如雪1 天前
AI赛场新黑马:阿联酋K2-Think,小身板藏着大智慧!
aigc
不大姐姐AI智能体1 天前
公众号AI 明星漫画怎么制作?Coze智能体一键生成,保姆级教程
aigc
算家计算1 天前
一张图+一段音频=电影级视频!阿里Wan2.2-S2V-14B本地部署教程:实现丝滑口型同步
人工智能·开源·aigc
阿杜杜不是阿木木1 天前
开始 ComfyUI 的 AI 绘图之旅-Flux.1文生图(全网首发,官网都没有更新)(七)
人工智能·ai·ai作画·aigc·图生图
杀生丸学AI1 天前
【三维重建】3R-GS:优化相机位姿的3DGS最佳实践
人工智能·3d·aigc·三维重建·视觉大模型·高斯泼溅
iThinkAi智能体1 天前
Coze智能体工作流一分钟生成10w+爆款魔性灵魂画手视频,无需剪辑
aigc
一泽Eze1 天前
AI 不懂「疯狂星期四」
aigc·openai
Liquidliang1 天前
用Claude Code构建AI创意工作流:连接nano banana与veo3
前端·aigc