解决2080Ti使用节点ComfyUI-PuLID-Flux-Enhanced中遇到的问题

使用蓝大的工作流《一键同时换头、换脸、发型、发色之双pulid技巧》 

刚开始遇到的是不支持bf16的错误

根据《bf16 is only supported on A100+ GPUs #33》中提到,修改pulidflux.py中的dtype 为

dtype = torch.float16 后,出现新的错误,这个新错误可能是由于加载模型的节点改变而造成的(见后面模型加载节点对模型dtype的转换可知):

KSampler

expected scalar type Float but found Half

 问chatgpt结果如下:

 然后发现flux类的模型dtype如下:

flux1-dev-fp8-e4m3fn.safetensors 
dtype is ---->torch.float8_e4m3fn

flux1-fill-dev_fp8.safetensors
dtype is ---->torch.float8_e4m3fn
 

flux1-fill-dev.safetensors
dtype is ---->torch.bfloat16

flux1-dev.safetensors
dtype is ---->torch.float16

flux1-fill-dev-Q4_1.gguf
dtype is ---->torch.bfloat16

因为在加载模型时,进行了dtype转换:

Loading PuLID-Flux model.
model weight dtype torch.float8_e4m3fn, manual cast: torch.float32
model_type FLUX 

Loading PuLID-Flux model.
model weight dtype torch.float16, manual cast: None
model_type FLUX

gguf qtypes: F32 (471), Q4_1 (304), F16 (5)
model weight dtype torch.bfloat16, manual cast: torch.float32
model_type FLUX 

上面加载模型的节点输出信息,在comfyui核心代码 D:\AI\ComfyUI\comfy\model_base.py 中的语句如下:

   logging.info("model weight dtype {}, manual cast: {}".format(self.get_dtype(), self.manual_cast_dtype))

所以数据类型torch.float8_e4m3fn, torch.float8_e5m2, torch.bfloat16只能适配fp32,于是修改pulidflux.py中相关代码如下,问题解决,运行正常,结果正常:

    def apply_pulid_flux(self, model,.....):
        .......
        # For 8bit use bfloat16 (because ufunc_add_CUDA is not implemented)
        # For 2080Ti use float16 or float32 (because 2080ti not support bf16)
        if dtype in [torch.float8_e4m3fn, torch.float8_e5m2, torch.bfloat16]:
            #dtype = torch.bfloat16
            dtype = torch.float32

当然,由bf16变为fp32后,显存占用肯定就大了。 

注意,当第2次运行时(准确来说是没触发Apply PuLID Flux重新加载运行,也即在这条链路上没有发生变动,例如只改变了提示词),依然会出现错误:KSampler expected scalar type Float but found Half,需要卸载模型及释放节点缓存,重新运行,蓝大的工作流,使用了2次Apply PuLID Flux节点而且加载的模型不一样,如果只使用1个Apply PuLID Flux节点,估计没有这个问题。

### ComfyUI PULID_FLUX_LL 实现与配置 #### 关于 ComfyUI_PuLID_FluxComfyUI_PuLID_Flux_ll ComfyUI 是一种用于生成图像的工作流工具,而 `ComfyUI_PuLID_Flux` 及其变体(如 `ComfyUI_PuLID_Flux_ll`)是一种基于 PuLID-Flux 方法的实现[^1]。PuLID-Flux 提供了一种新的方法来处理扩散模型中的条件输入和输出控制。 对于具体的 `ComfyUI_PuLID_Flux_ll` 实现,它可能是一个扩展版本或者针对特定需求优化后的模块化组件。然而,在官方文档或其他公开资源中并未明确提及该具体子项目的详细说明[^2]。因此,建议开发者通过源码仓库进一步探索其实现细节。 --- #### 安装指南 如果遇到无法安装的情况,可以尝试以下解决办法: 1. **克隆项目** 使用 Git 命令将项目从远程仓库拉取到本地环境: ```bash git clone https://github.com/balazik/ComfyUI-PuLID-Flux.git ``` 2. **依赖项管理** 确保已安装 Python 以及必要的库文件。通常情况下,可以通过运行以下命令完成依赖项安装: ```bash pip install -r requirements.txt ``` 3. **启动服务** 启动 ComfyUI 并加载自定义节点: ```bash python main.py --extra-model-paths ./models/custom/ ``` 上述操作完成后,应该可以在界面中看到新增的功能选项。 --- #### 配置教程 以下是关于如何配置并使用 `ComfyUI_PuLID_Flux` 或其他类似功能的一般流程: 1. **导入所需节点** 将下载好的插件放置在指定目录下(通常是 `/custom_nodes` 文件夹),重启程序即可自动识别新加入的内容。 2. **设置参数** 在工作区拖拽对应的节点至画布区域,并调整各项属性值以满足创作需求。例如调节时间步长、噪声强度等超参设定。 3. **执行推理过程** 连接好各部分逻辑关系之后点击“Run”,等待计算结束得到最终成果图样。 注意:由于不同版本间可能存在兼容性差异,请务必确认所使用的框架版本号一致后再继续后续步骤。 --- ```python from comfyui_pulid_flux import FluxProcessor processor = FluxProcessor() result_image = processor.apply_effects(input_image, params={"time_steps": 50}) ``` 以上代码片段展示了如何利用 API 接口调用核心算法进行数据处理的一个简单例子。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值