最近需要长期做企业 LOGO 与品牌图形的自用生成,考虑到素材的保密性和出图的自由度,决定在本地部署一套 ComfyUI + Flux.2 的生图环境。整个过程走下来,最大的收获不是“装好了”,而是排掉了两个非常有代表性的坑:一个是 CUDA 启动即崩溃的驱动级冲突,另一个是 Windows 上源码编译 CUDA 扩展的连环兼容性问题。这篇文章按“部署 → 排障 → 加速 → 应用”的顺序完整记录,给同样在 Windows 上折腾本地生图的朋友做个参考。
一、硬件与选型
- CPU:AMD Ryzen 9 9950X3D
- GPU:NVIDIA GeForce RTX 5090(32GB 显存)
- 系统:Windows 10 22H2
- 生图框架:ComfyUI 便携版 + Flux.2 模型族
Flux.2 是当前质量与可控性平衡很好的开源生图模型族,在 5090 上整个谱系都能跑。我的实际组合:
| 用途 | 模型 | 说明 |
|---|---|---|
| 日常主力 | Flux.2 klein 9B(FP8) | 速度与质量均衡,出草稿和正稿都够用 |
| 质量上限 | Flux.2 dev(Q4 GGUF) | 精修时用,细节更足 |
| 快速草稿 | Flux.2 klein 4B(蒸馏) | 多方案发散时快速过 |
| 文本编码器 | Qwen3-8B | klein 9B 的配套编码器,注意 4B 模型要配 4B 编码器 |
| VAE | flux2-vae | 全家通用 |
另外配套部署了 BiRefNet(抠图透明底)和 4x-UltraSharp(放大导出),形成一条“发散 → 精修 → 抠图 → 放大”的完整流水线。
二、第一个大坑:ComfyUI 启动即崩溃(0xC0000005)
装好之后启动 ComfyUI,进程秒崩,错误是经典的 nvcuda64.dll 0xC0000005(访问冲突)。一开始按常规思路排查:
- 换 PyTorch 版本:2.13、2.11、2.9.1 三版全试,全崩。
- 换显卡驱动:从旧驱动升到最新 WHQL,重启后依然崩。
- 查 DLL 完整性:签名、哈希全部正常。
- 看显存:
nvidia-smi显示 32GB 显存只剩 13MB、BAR1 只剩 29MB,差点以为显存爆了。
前三步全部排除后,偶然发现 nvidia-smi 的显存占用与 Windows 系统计数器严重不一致——系统权威计数器显示 5090 只用了约 3.8GB。查证后确认:这是 WDDM 模式下 nvidia-smi 的已知误报,显存根本不是瓶颈。
于是转向多显示适配器枚举冲突排查:临时禁用 AMD 核显,仍然崩;最后抱着试试的心态禁用了向日葵远程控制软件的虚拟显示器驱动,cuInit 立即返回成功,恢复后立刻崩。实锤:向日葵虚拟显示器驱动与 CUDA 初始化存在冲突。
解决方案
不能永久禁用(远程开机和控制是刚需),所以做了一套“运行时切换”机制:
- 两个免 UAC 的计划任务:一个禁用虚拟显示器驱动,一个恢复;
- 一个一键启动脚本:启动前禁用驱动 → 拉起 ComfyUI → 退出后恢复驱动。
平时远程不受影响,只有生图会话期间短暂切走,实测稳定。另外补装了与 PyTorch 匹配的 torchvision / torchaudio 版本,三者版本对齐后 CUDA 全链路正常。
三、第二个大坑:Windows 源码编译 SageAttention
ComfyUI 支持 --use-sage-attention 加速,但 PyPI 上的 SageAttention 旧版不支持新架构,GitHub Releases 又没有 Windows 预编译包,只能源码编译。这一路踩了四个连环坑:
- 缺 Python.h:ComfyUI 的便携版 Python 是精简的,没有开发头文件。解决:从 Python 官方 NuGet 包提取 include/libs 补齐。
- 编译期 torch import 崩溃:又是虚拟显示器驱动在干扰 CUDA 初始化,编译期间临时禁用即解决。
- C2872:
std符号不明确:这是 PyTorch 2.9 的 compiled_autograd.h 在 nvcc 下的已知兼容问题,网上有完全同款的案例(RTX 50 系 + Windows 编译 CUDA 扩展必踩)。关键解法是给 nvcc 加-DUSE_CUDA,触发 PyTorch 头文件内置的 Windows 保护分支,绕开冲突代码段。 - C2429:嵌套命名空间需要 C++17:nvcc 编译 .cu 时默认不会把 C++17 传给 MSVC,需要显式加
-Xcompiler /std:c++17。
编译完成后还发现 Windows 版 PyTorch 不带 triton,而 SageAttention 硬依赖它,补装社区维护的 triton-windows 解决。
验证效果:ComfyUI 启动日志出现 Using sage attention,Flux.2 klein 9B 生成 768×768 图、20 步采样全流程约 22 秒,加速生效。
四、应用:YoungSonny 企业 LOGO 生成
部署完成后用它跑了几轮品牌 LOGO 设计。基于“YS 字母组合 + 电路板纹路 + 深蓝/青蓝科技配色”的方向,一次性发散了六组候选:经典双色版、深色反白版、极简单色版、渐变科技版、圆形徽章版、电路线框版。
全部为 1024×1024 高清输出,逐张检查无任何平台水印与多余元素——这正是本地部署的核心价值:素材完全本地生成、无平台痕迹、可无限迭代。
五、总结
- 遇到 CUDA 启动崩溃,先查设备枚举层面的冲突(虚拟显示器、采集卡等),比反复换驱动/换 torch 版本高效得多;
- WDDM 下
nvidia-smi的显存读数可能误导排障,以系统权威计数器为准; - torch 2.9 + nvcc 编译扩展时,
-DUSE_CUDA与-Xcompiler /std:c++17是绕过 Windows 兼容问题的高频组合; - 本地生图的核心收益不是省钱,而是可控、可复现、无平台水印,对品牌素材类需求尤其重要。
欢迎交流,后续会继续更新 Flux.2 工作流与 LOGO 精修方向的实践。