三步合并多个LoRA:用ai-toolkit做模型融合的完整指南
三步合并多个LoRA用ai-toolkit做模型融合的完整指南【免费下载链接】ai-toolkitThe ultimate training toolkit for finetuning diffusion models项目地址: https://gitcode.com/GitHub_Trending/ai/ai-toolkitai-toolkitOstris AI Toolkit内置了 LoRA 合并功能可以把多个 LoRALow-Rank Adaptation低秩适应权重文件按比例合成一个模型。假设你手里有三个 LoRA一个擅长水彩风、一个固定某个角色、一个处理电影感灯光想一次生成同时兼顾这些特点而不是在推理工具里逐个叠加这个功能就是为此设计的。本文按写配置、跑命令、怎么验证的顺序把流程讲清楚。什么场景需要合并多个 LoRA场景典型组合多风格融合水彩风格 像素风格希望一张图同时带两种特征角色 画风角色 LoRA 叠加在另一个画风的 LoRA 上细节补强同一个底模下把补细节的 LoRA 并入主模型如果不在上表范围内可以先跳过这个功能主要解决想把多个特征装进一个模型文件的问题。合并原理一句话说清LoRA 合并本质上是一次按比例分摊工具把你给每个文件填的权重加总、归一化到 1再按各自占比把权重逐层相加。比如两个文件填 1.0 和 0.3归一化后分别占约 76.9% 和 23.1%。核心配置字段只有这些models_to_merge: - name_or_path: input/model_a.safetensors weight: 1.0 - name_or_path: input/model_b.safetensors weight: 0.3注意权重是相对值只有比值有意义。合并时张量按 float32 计算保存时可以选 fp16 或 bfloat16把文件体积压到约一半。三步合并多个 LoRA从零到可用模型1. 准备文件把要合并的 LoRA 放到同一个目录并确认它们都训练自同一个底模SD1.5、SDXL、FLUX 等不能混。这个功能只对同架构的文件有效。2. 写配置并执行命令参考示例配置的字段新建merge_config.yamljob: extension config: name: my_merge process: - type: example_merge_extension save_path: output/merge/my_merge.safetensors models_to_merge: - name_or_path: input/model_a.safetensors weight: 1.0 - name_or_path: input/model_b.safetensors weight: 0.3然后运行python run.py --config merge_config.yaml跑完后会在output/merge/得到单个.safetensors文件。3. 验证效果用同一组提示词和固定种子分别跑合并前后的模型做对比预期是新模型保留两个 LoRA 的主体特征细节会比单用某一个更柔和。如果你不想碰命令行Web UI 里也提供了 LoRA 合并入口底层调用的是 merge_loras.py常见问题与合并前必读的避坑清单症状合并时报内存不足原因合并全程按 float32 载入模型占用是单模型的数倍。 处理把device改成cpu用内存合并速度慢但稳定或一次少合并几个文件。症状合并后的图发糊、偏色原因fp16 保存带来的精度损失或各 LoRA 底模不一致。 处理保存类型改 bfloat16核对每个文件的底模版本元数据是否一致。症状结果被某一个 LoRA吃掉另一个特征几乎消失原因权重比值拉得太大。 处理先给所有文件相同权重都是 1.0确认基线再以 0.1 为步长逐步调整。症状合并文件无法被推理工具加载原因混入了不同底模的 LoRA。 处理只合并同一个底模下训练的 LoRA有疑问时先单独跑一遍确认能加载。写在最后LoRA 合并就是按权重占比做加法在配置里写清文件路径和相对权重ai-toolkit 负责归一化、相加和输出。下一步建议打开config/examples目录对照 ExampleMergeModels.py 的合并逻辑先用两个文件跑一次最小验证。【免费下载链接】ai-toolkitThe ultimate training toolkit for finetuning diffusion models项目地址: https://gitcode.com/GitHub_Trending/ai/ai-toolkit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考