news 2026/9/14 13:42:59

AI Toolkit LoRA 模型合并:完整调参指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
AI Toolkit LoRA 模型合并:完整调参指南

AI Toolkit LoRA 模型合并:完整调参指南

【免费下载链接】ai-toolkitThe ultimate training toolkit for finetuning diffusion models项目地址: https://gitcode.com/GitHub_Trending/ai/ai-toolkit

AI Toolkit 内置 LoRA 模型合并流程:多个独立训练的权重文件按指定强度融合为单个 checkpoint,最终输出 bfloat16 或 fp16 文件。

三步完成 LoRA 模型合并(快速上手)

  1. 准备文件:用同一底模训练两个以上 LoRA,例如按 config/examples/train_lora_flex_24gb.yaml 得到.safetensors文件。
  2. 写输入清单:合并输入是一个 JSON 数组,每项包含path(文件位置)和strength(强度)两个字段。
  3. 执行命令:在项目根目录运行。
python ui_scripts/merge_loras.py \ --loras '[{"path": "output/lora_a.safetensors", "strength": 1.0}, {"path": "output/lora_b.safetensors", "strength": 0.5}]' \ --output output/merged_lora.safetensors \ --save_dtype bfloat16

运行结束后会打印{"ok": true, "num_loras": 2, ...},合并结果写入--output指定路径。

合并机制(2 句话版本)

合并的核心是“先缩放、再相加”:每个 LoRA 的张量乘以自己的强度后,按 key 累加进同一个 state dict。在 AI Toolkit 模型融合的两条入口里,处理方式不同:扩展流程 extensions/example/ExampleMergeModels.py 中weight是相对值,会先归一化到总和为 1 再缩放权重:

total_weight = sum(m.weight for m in self.models_to_merge) weight_adjust = 1.0 / total_weight for model in self.models_to_merge: model.weight *= weight_adjust

CLI 脚本里的strength则是绝对值、不做归一化,写配置时两种口径不能混用。

LoRA 权重融合配置指南(按场景)

双模型等权合并

  • 改哪个字段--loras中两个条目的strength
  • 影响什么:两组权重以相同强度相加,输出风格约各占一半。
  • 推荐值:1.0 / 1.0;若输出过强或色彩发闷,两者同时降到 0.7 / 0.7 再合并。

三模型以上不等权配置

  • 改哪个字段:清单中每项的强度,数量不受限制;扩展配置里对应weight字段。
  • 影响什么:扩展流程会把 1.0 / 1.0 / 0.3 先归一化为 1/2.3、1/2.3、0.3/2.3 再应用;CLI 则按原值直接计算,字段写法参考 extensions/example/config/config.example.yaml。
  • 推荐值:主体风格 1.0,辅助风格 0.3–0.5,避免弱项风格被强风格淹没。

精度与显存平衡

  • 改哪个字段--save_dtype(默认 bfloat16)与--device(默认 cpu)。
  • 影响什么:输出文件大小、精度,以及能否一次性跑完;合并全程按 float32 计算,只是最终落盘时转换。
  • 推荐值:默认存 bfloat16 或 fp16;显存紧张时保持--device cpu,更多显存管理见 toolkit/memory_management/。

进阶场景与已知限制

上述流程之外,多模型合并调参还有三个常见扩展方向:

  • 🔧动态权重调整:继承 jobs/process/BaseExtensionProcess.py 写自定义流程,对不同张量施加不同强度曲线,适用于同一 LoRA 在部分层需要更强的场景。
  • 条件激活:不合并,推理时靠宿主工具的多 LoRA 槽位按提示词启用,适用于几个 LoRA 只按题材按需使用的场景。
  • 分层融合:在合并脚本中按 key 过滤 state dict(如只合并注意力相关层),适用于两个 LoRA 在特定层互相打架的场景。

已知限制:

  1. 输入必须同底模训练;同 key 张量 rank 不一致时只会零填充到最大维度,维度不兼容则直接报错。
  2. 合并是权重的线性加法而非再训练,无法修复 LoRA 之间的特征冲突,效果变差只能靠调强度弥补;示例扩展是整模型合并,仅面向 SD1.x/SD2.x。

常见问题

Q:合并后效果变差或风格发糊,怎么调?先把所有 strength 从 1.0 降到 0.5–0.7 重新合并;若只有某个 LoRA 过强,先按 config/examples/mod_lora_scale.yaml 把它的target_weight重标到 1.0,再参与合并。

Q:显存不够怎么办?保持默认--device cpu即可,脚本在 float32 下完成合并后从 CPU 落盘,只占用系统内存,不需要把模型放到 GPU。

Q:合并出的文件比预期大?检查--save_dtype是否误设为 fp32;默认 bfloat16 时文件大小与单个 LoRA 相当。

延伸资源:整体使用说明见 README.md;合并实现分别在 ui_scripts/merge_loras.py 与 extensions/example/,示例配置在 extensions/example/config/config.example.yaml。

【免费下载链接】ai-toolkitThe ultimate training toolkit for finetuning diffusion models项目地址: https://gitcode.com/GitHub_Trending/ai/ai-toolkit

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/14 13:38:25

电竞赏金系统源码APP+H5双端搭建实战与运营优化

简介:熊猫电竞赏金电竞系统源码是一套面向电竞平台运营者、游戏高手与独立开发者的运营级解决方案,支持APP与H5双端,用户通过平台打比赛赢取奖金,平台方则通过比赛抽水、会员充值、手续费等方式盈利。资源共2000个文件&#xff0c…

作者头像 李华
网站建设 2026/9/14 13:36:38

Flask+CodeMirror+subprocess网页版Python编辑器

简介:这是一份基于Flask与CodeMirror构建的网页版Python编辑器项目源码,源自程序设计课程大作业,适合需要完成在线代码编辑、远程实验或课程设计展示的开发者参考。后端由Python Flask提供路由、登录认证与文件管理,前端通过HTML、…

作者头像 李华
网站建设 2026/9/14 13:35:10

OpenCore Legacy Patcher完整指南:让老Mac装上新版macOS

OpenCore Legacy Patcher完整指南:让老Mac装上新版macOS 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 翻开苹果的系统支持列表,很多…

作者头像 李华