
不用重训也不用懂模型内部:Heretic 把改模型行为做成一道评分优化题
开源工具 Heretic 用对比示例加评分器驱动优化器,在不做训练的前提下改掉开源模型的拒绝、套话和谄媚行为,RTX 3090 上处理一个 4B 模型只要约半小时,社区已产出数千个改过的模型。
相关标签
过去要改一个开源模型的行为,只有两条路:拿数据重新微调,或者接受它出厂时的脾气。前者要算力、要数据、要调参经验;后者意味着你可能得忍受一堆与任务无关的拒绝、过度冗长的措辞和没完没了的附和。Heretic 想砍掉这个门槛——它不改权重训练,也不需要你理解模型内部在算什么,跑一条命令,几十分钟后拿到一个”脾气变了”的模型。
它的技术路线是”优化”而不是”训练”。Heretic 把改模型当成一道可打分的题:你用对比示例 prompt 定义”想要”和”不想要”的两种输出,评分器(scorer)负责给模型行为打分,Optuna 的 TPE 优化器则搜索一组参数,让改动后的模型在这组分数上尽量好。默认的两个评分器是拒绝率(keyword_rate.py)和 KL 散度(kl_divergence.py)——前者衡量模型有多不愿意正面回答,后者约束改动后的模型别偏离原模型太远。
落到模型上的动作由 modifier 完成,目前有两个:
- ARA(Arbitrary-Rank Ablation):项目自研,也是默认选项,作者称会有一篇预印本论文说明原理。
- Directional ablation(abliteration):经典的拒绝抑制方法(Arditi et al. 2024),Heretic 的实现加了沿层分布灵活的 ablation 权重核,并支持 projected abliteration 与 norm preservation(MPOA)两种变体。
配置是这套设计的接口。默认配置做的是拒绝抑制,但仓库里还给了 config.noslop.toml(压掉套话)、config.nohumor.toml(少讲笑话)、config.nosyco.toml(减少谄媚)、config.emotions.toml(改情绪倾向)。更进一步,scorer 是插件:继承一个抽象类、实现 get_score,就能用完全自定义的目标函数去驱动模型改动,路径可以是 import 路径也可以是 path/to/plugin.py:MyScorerClass,不需要改 Heretic 本身的代码。
硬件门槛被压到了一条消费级显卡的线上。README 给出的参考是:RTX 3090、默认配置下处理 Qwen3-4B-Instruct-2507 约需 30 到 40 分钟;程序启动时会先跑一次 benchmark 找出当前硬件的最优 batch size;显存不够可以开 bitsandbytes 的 4-bit 在线量化。模型覆盖面上,多数 dense 模型、不少多模态模型、若干 MoE 架构与较新的混合架构都在支持范围内。跑完之后,你可以选择保存、直接上传 Hugging Face、就地聊天测试,或者跑一遍标准基准。
有意思的是它对”可复现”的处理。PyTorch 并不保证同一套运算在不同硬件、驱动、系统与依赖版本下给出完全一致的输出,Heretic 把这些变量打包成一个约 9KB 的 reproduce.json manifest:heretic --reproduce path/to/reproduce.json 会自动比对当前环境与原始环境、指出可能的偏差,然后重放那次处理——原本要算几小时的过程,复现通常只要几分钟,最后还会校验权重文件的哈希。这些 manifest 被收集起来形成了一个可分布式备份的库,作者叫它 Heretic Grimoire;heretic --collect-reproducibles 可以把公开 manifest 全量拉到本地,而且只增不删。
社区规模已经很可观:Hugging Face 上带 heretic 标签的模型有数千个,README 引用社区用 MMLU、GSM8K 等标准指标做的独立评测,称其表现不逊于同类 abliteration 工具。项目本身是 AGPL-3.0。
需要说清楚的是这类工具带来的争议。把”拒绝”当成一个可优化的指标,本质上是把模型的安全对齐当成了可拆卸的部件——同一套流水线既能用来去掉无意义的过度拒绝,也能用来拆掉本该保留的安全边界。这也是它一直处在讨论中心的原因:它降低了研究门槛,同时降低了滥用门槛。对开发者来说,更实际的读法是把它当成一个观察样本——模型行为的”出厂设置”正在变成用户可配置项,而配套的复现机制、基准对比和许可条款,恰恰是这类工具能否被认真对待的关键。
更多资讯
想看更多优质内容?
浏览所有资讯