sd-webui-model-converter 是一个专为 AUTOMATIC1111 的 Stable Diffusion WebUI 设计的扩展插件。它的核心功能是提供一个图形化界面,让用户能够方便、安全地对 Stable Diffusion 模型文件(如 Checkpoint 模型)进行各种格式转换和处理操作。
这个工具解决了用户在模型管理过程中遇到的一些常见痛点,例如在不同精度间转换以节省显存、清理模型中的冗余数据、修复有问题的模型等。
项目地址
项目地址:https://github.com/huchenlei/sd-webui-openpose-editor
核心功能
该项目提供了一系列强大且实用的模型处理功能:
精度转换
- 支持格式: fp32(全精度), fp16(半精度), bf16(脑浮点16)。
- 用途: 将模型从 fp32 转换为 fp16 或 bf16 可以显著减小模型文件体积并降低显存占用,同时基本保持生成质量,这对于显存有限的用户至关重要。
模型剪裁
- 选项: no-ema(仅保留非EMA权重), ema-only(仅保留EMA权重), ema(保留两者)。
- 用途: 在模型训练过程中,通常会同时保存EMA权重和非EMA权重。对于大多数推理(生成图片)任务,只需要其中一组权重。剪裁掉不需要的部分可以进一步减小模型体积。
检查点格式转换
- 支持格式: .ckpt 和 .safetensors。
- 用途: .safetensors 是一种更安全、加载速度更快的格式,它避免了传统 .ckpt 格式可能存在的反序列化安全风险。此功能可以安全地在两种格式之间互相转换。
模型部件操作
- 可操作部件: U-Net, Text Encoder(CLIP), VAE。
- 操作: 可以转换、复制或删除这些特定部件。
- 用途: 这是一个高级功能。例如,你可以从一个模型中提取其 VAE 并合并到另一个模型中,或者创建一个不包含 Text Encoder 的模型用于特定工作流。
修复 CLIP
- 问题背景: 在某些模型(如著名的 Anything-v3)中,由于模型合并过程中的问题,CLIP 模型中的 position_id 张量会出错,这可能导致生成图片时出现错误或质量下降。
- 功能: 此选项会将错误的 position_id 重置为正确的值:torch.Tensor([list(range(77))]).to(torch.int64),从而修复模型。
强制 CLIP position_id 为 int64
- 高级选项: 这是一个与“修复 CLIP”相关的、更精细的控制选项。
- 用途: 当将一个有 CLIP 问题的模型转换为 fp16 时,精度降低的过程可能会“意外地”修正了 position_id 的错误。如果你不希望发生这种“意外修正”(例如,你想保持原模型的“风味”,即使它是有缺陷的),可以启用此选项。它会强制 position_id 保持为 int64 类型,从而在转换过程中保留原有的错误。
特色与优势
- 集成于 WebUI: 无需使用复杂的命令行工具,所有操作都可以在熟悉的 WebUI 界面中完成。
- 安全易用: 图形化操作大大降低了使用门槛,并减少了因命令错误导致的风险。特别是支持转换为更安全的 .safetensors 格式。
- 功能全面: 覆盖了模型后期处理的大部分常见需求,从简单的格式转换到高级的部件编辑和错误修复。
- 解决实际问题: “修复 CLIP” 功能直接针对社区中流传的一些有问题的模型,提供了简单的解决方案。
用户界面
根据项目截图,该扩展在 WebUI 的选项卡中添加了一个直观的界面,用户可以选择:
- 输入模型
- 输出模型名称和格式
- 精度、剪裁等设置
- 需要操作的模型部件
- 是否启用 CLIP 修复功能
总结
sd-webui-model-converter 是 Stable Diffusion WebUI 生态中一个非常实用和强大的扩展。它极大地简化了模型的管理和预处理工作流,无论是为了优化性能(减小体积和显存占用)、提升安全性(转换为 safetensors),还是修复有问题的模型,它都是一个不可或缺的工具。对于任何经常使用和尝试不同模型的 AI 绘画爱好者来说,安装这个扩展都能带来极大的便利。