ComfyUI Extension: ComfyUI-Upscale-CUDAspeed
A high-performance image upscaling plugin for ComfyUI with CUDA acceleration, multi-GPU support, mixed precision, and Tensor Core optimization
Custom Nodes (0)
README
ComfyUI-Upscale-CUDAspeed
一个高性能的ComfyUI图像放大插件,通过CUDA加速和模型编译优化提供极致的放大速度。 <img width="649" height="438" alt="image" src="https://github.com/user-attachments/assets/37597f8a-f5f2-4932-a3a7-59c6c17fc17e" />
特性
- 🚀 高性能CUDA加速:利用PyTorch编译技术优化模型推理速度
- 🔧 智能模型编译:自动编译模型并缓存,避免重复编译
- 🎯 尺寸感知缓存:为不同输入尺寸分别缓存编译结果,避免尺寸变化导致的重新编译
- 💾 智能内存管理:动态调整瓦片大小,优化显存使用
- 🛡️ 数值稳定性:增强的后处理确保编译模型输出质量
- ⚡ 异步处理:使用多CUDA流并行处理,最大化GPU利用率
安装
前提条件
- ComfyUI 已安装并运行
- NVIDIA GPU 支持 CUDA
- PyTorch 2.0+ (支持
torch.compile)
安装步骤
- 将本仓库克隆到ComfyUI的
custom_nodes目录:
cd ComfyUI/custom_nodes
git clone https://github.com/piscesbody/ComfyUI-Upscale-CUDAspeed.git
- 安装依赖:
pip install -r requirements.txt
- 重启ComfyUI
使用说明
节点介绍
🚀 Upscale Image CUDAspeed
主要放大节点,提供高性能的图像放大功能。
输入参数:
upscale_model: 放大模型(通过UpscaleModelLoader加载)推荐模型:RealESRGAN_x2plus.pthimage: 输入图像use_autocast: 自动混合精度(启用/禁用)precision: 精度模式(自动/fp16/fp32/bf16)推荐:fp16tile_size: 瓦片大小(0表示自动计算)推荐:视频最长边如1280x720,则输入1280overlap: 瓦片重叠大小(0表示自动计算)推荐:8(视频最小值即可)enable_compile: 模型编译(启用/禁用)如果批量处理同尺寸,建议打开。第一次编译有点长,但是加速效果明显。optimization_level: 优化级别(平衡/速度/内存)推荐:speedbatch_size(可选): 批处理大小 推荐:1
UpscaleModelLoader
放大模型加载器,用于加载各种放大模型。
输入参数:
model_name: 模型文件名(从upscale_models目录选择)
工作流示例
- 使用
UpscaleModelLoader节点加载放大模型 - 连接图像到
🚀 Upscale Image CUDAspeed节点 - 调整参数以获得最佳性能和质量
- 执行工作流
性能优化建议
优化级别选择
- 平衡模式:适合大多数场景,在速度和内存间取得平衡
- 速度模式:追求最高速度,适合大显存显卡
- 内存模式:节省显存,适合小显存显卡
模型编译
启用 enable_compile 可以显著提升推理速度,但首次运行需要编译时间。编译后的模型会自动缓存,后续运行无需重新编译。
自动混合精度
启用 use_autocast 可以利用Tensor Core加速计算,在支持的GPU上提供更好的性能。
支持的模型
本插件支持所有与Spandrel兼容的放大模型,包括:
- ESRGAN
- Real-ESRGAN
- Real-CUGAN
- SwinIR
- HAT
- 以及其他单图像放大模型
技术细节
模型编译优化
插件使用PyTorch的 torch.compile 功能对模型进行即时编译优化:
- 尺寸感知缓存:为不同输入尺寸分别缓存编译结果
- 运行时缓存:在内存中缓存编译模型,避免重复编译
- 持久化记录:记录模型编译状态,重启后仍有效
内存管理
- 动态瓦片调整:根据可用显存自动调整瓦片大小
- 智能内存评估:基于实际张量计算显存需求
- 流式处理:使用多CUDA流并行处理数据
数值稳定性
针对编译模型可能出现的数值范围问题,提供了增强的后处理:
- 异常值检测和裁剪
- 分位数归一化
- 统计驱动的范围调整
故障排除
常见问题
Q: 编译失败或出现错误
A: 尝试禁用 enable_compile 使用普通模式,或检查PyTorch版本是否支持编译。
Q: 显存不足
A: 尝试使用内存优化模式,减小 tile_size,或启用 use_autocast。
Q: 输出图像发白或颜色异常 A: 这是编译模型的常见问题,插件已内置增强后处理。如果问题持续,尝试禁用模型编译。
Q: 性能没有提升 A: 确保使用支持的GPU和PyTorch 2.0+版本,首次运行需要编译时间。
日志调试
插件会输出详细的调试信息,包括:
- 模型编译状态
- 内存使用情况
- 处理时间统计
- 设备跟踪信息
查看ComfyUI控制台输出可以了解详细的运行状态。
许可证
本项目基于 MIT 许可证开源 - 查看 LICENSE 文件了解详情。
贡献
欢迎提交Issue和Pull Request来改进这个项目。