这类问题我又碰上了一次。在一个进程里先后加载两个 LoRA,第二次加载报 adapter 名称已存在,强行覆盖后第一个 adapter 的效果消失。
第一反应是「推理时没有显式激活目标 adapter」,验证下来不成立。
排查方向其实有限,先把可能性排一排。加载时没有指定不同的 adapter 名称;覆盖模式把已有权重替换掉了;多个 adapter 的目标层冲突,合并顺序影响结果。
第一件事是加载时给每个 adapter 唯一名字
model.load_adapter('./lora_a', adapter_name='a'); model.load_adapter('./lora_b', adapter_name='b')
推理前显式激活指定 adapter
model.set_adapter('b')
需要同时生效时按权重合并
model.add_weighted_adapter(['a','b'], [0.7,0.3], adapter_name='mix')
等前面都确认过,再确认当前激活的 adapter
print(model.active_adapter)
同一份数据我导出了两份,一份留底,一份拿来试。
恢复的判定其实很直接。两个 adapter 可以共存并按需切换,切换后输出风格随之变化,不再互相覆盖。
提醒一点。同时叠加多个 adapter 时权重之和不必等于一,超过一容易出现风格撕裂,建议从零点七加零点三这样的组合试起。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。