Heretic 怎麼把模型拒答方向削弱:作法、效果、原理與實際流程
先看 Heretic 如何用 directional ablation 與 TPE 搜尋把模型拒答傾向壓低,再看它的安裝、設定、效果、限制與實際操作流程。
作者
Seer
日期
2026-06-14
你興沖沖地在本地跑起一個開源 LLM,丟了一個看似平常的程式碼問題,結果它卻因為安全對齊(Alignment)機制過度敏感,冷冰冰地回你一句「抱歉,我無法協助你」。這種因為拒答過度敏感而讓開發卡關的踩坑經驗,正是 Heretic 想要解決的痛點。
Heretic 是一個很典型的「不是重新訓練,而是直接修改模型行為」的工具。它的目標很明確:把 transformer 模型裡過強的拒答傾向降下來,同時盡量保住原本的能力。 如果用一句話講,Heretic 不是在做一般意義上的微調,而是在做 行為層的工程修正。
這篇整理以官方 repo README 與 config.default.toml 為主,偏向研究筆記角度,並非操作教學,我們也不把它寫成一個「繞過安全限制」的手冊。
Heretic 是什麼
Heretic 的標語是:
Fully automatic censorship removal for language models
它本質上是一個 Python 工具 / CLI,用來對 transformer-based language models 做 自動化拒答削減(refusal reduction / abliteration)。它不重新訓練模型,而是透過以下三招:
- directional ablation(方向消融)
- abliteration(消融化)
- Optuna 的 TPE 參數搜尋
藉此找出一個折衷點:更少拒答,但不要把模型其他能力一起打爛。
它的作法:自動尋找折衷點
Heretic 的安裝與基本使用非常直接。你可以透過以下指令下載並跑起預設流程:
pip install -U heretic-llm
heretic Qwen/Qwen3-4B-Instruct-2507
這行指令會先下載並安裝 Heretic,接著直接對指定的 Qwen 模型跑拒答削弱流程。它會自動下載模型權重,並在本機進行分析。
如果要做研究、觀察 residual geometry(殘差幾何)、畫圖等功能,可以裝研究版:
pip install -U heretic-llm[research]
加上 [research] 可以安裝額外的科學計算與繪圖套件。當你需要畫出向量空間的殘差幾何圖形(residual geometry)或做深入分析時才需要裝這個。
如果你習慣使用最新的 uv 工具包管理:
uv run heretic
如果你是用 uv 來管理 Python 環境,可以用這個指令來執行 Heretic。它會自動在臨時虛擬環境中下載並執行,不需要手動建立 virtualenv。
實際上,Heretic 跑起來不是單一步驟,而是一條自動化流水線:
- 載入模型權重。
- 自動測試 batch size 極限。
- 跑預設 prompt 評估。
- 找出跟 refusal 相關的激活方向。
- 用 Optuna 的 TPE 搜尋最佳消融強度參數。
- 比較拒答率與 KL divergence(散度)。
- 輸出行為修正後的模型版本。
這也是它和一般 LoRA 或微調(fine-tune)工具不同的地方。它比較像一個模型行為修正流水線,而不是單純的訓練腳本。
實際操作流程
1) 先確認環境
基本門檻是:
- Python 3.10+
- PyTorch 2.2+
- 若要省顯存,可考慮使用 bitsandbytes 進行 4-bit 量化載入。
README 也提到,某些模型或功能需要更高版本的 PyTorch;對硬體與套件版本相容性來說,Heretic 不是那種完全無痛的工具。
2) 準備設定檔
Heretic 的預設設定檔是 config.default.toml。實際使用時,我們會:
- 複製成
config.toml放到工作目錄下。 - 依硬體設備與模型規格來調整參數。
常見會調整的參數包含:
quantizationdevice_mapkl_divergence_targetorthogonalize_directionn_trials
3) 顯存不夠時怎麼調
當 VRAM 記憶體壓力過大時,你需要在設定檔裡進行相應設定:
quantization = "bnb_4bit"
offload_outputs_to_cpu = true
batch_size = 0
max_batch_size = 128
這是在 config.toml 裡的顯存優化設定。它啟用 4-bit 量化並將中間結果暫存到 CPU,讓你在一般家用顯示卡上也能跑得動大模型。
它的效果:少拒答,但不要把模型弄壞
Heretic 想做的不是把模型變成毫無防備的瘋子,而是讓它在面對原本容易誤判拒答的提示時,更願意做出回應,同時盡量保住原模型的語氣與回答品質。
README 裡的重點比較是這樣:
- 原始模型拒答率很高。
- Heretic 版本拒答率顯著下降。
- 同時與原版模型的 KL divergence 較低。
這點非常重要。因為很多去拒答方法最大的痛點是:拒答是變少了,但模型也變笨、整體改壞了。
Heretic 嘗試避免這件事。它不只看 refusal,還會嚴格監控 跟原模型的行為偏移程度。以 README 裡的 Gemma 3 12B 例子來看:
| 模型 | harmful prompts 的 refusals | harmless prompts 的 KL divergence |
|---|---|---|
原始 google/gemma-3-12b-it | 97/100 | 0 |
mlabonne/gemma-3-12b-it-abliterated-v2 | 3/100 | 1.04 |
huihui-ai/gemma-3-12b-it-abliterated | 3/100 | 0.45 |
p-e-w/gemma-3-12b-it-heretic | 3/100 | 0.16 |
拒答率壓到了同一個級別,但 Heretic 的 KL divergence 更低,代表它對原模型正常對話能力的破壞最小。
原理:directional ablation + 自動化搜尋
Heretic 的核心可以拆成兩層。
第一層:directional ablation
它先去找模型內部跟拒答傾向相關的方向。可以把 transformer 想成一堆層與向量組合起來的系統,而 Heretic 做的事,不是改整個模型權重,而是針對某些內部激活向量進行消融或正交化處理。
白話一點說:模型裡有一些「容易導向拒答」的內部訊號,Heretic 嘗試把這些訊號壓低,但不直接把整個能力結構拆掉。
第二層:TPE 參數搜尋
光知道要消融哪個方向還不夠。Heretic 還會用 Optuna 的 TPE(Tree-structured Parzen Estimator)來找尋最佳參數配置。它會在兩個目標間找平衡:
- 有害或高拒答提示的 refusal 要下降。
- 無害提示上的 KL divergence 要維持低水平。
它不是靠人工盲目調參,而是用搜尋器自動找出「最不傷模型」的那組消融強度參數。
config.default.toml 關鍵欄位
這份設定檔把整個流程拆得很清楚:
quantization = "none"或bnb_4bit:控制是否啟用量化以節省記憶體。device_map = "auto":自動分配模型到 GPU/CPU。kl_divergence_target:控制模型偏移的目標容忍值。orthogonalize_direction = true:是否對拒答方向做正交處理。winsorization_quantile:用來壓掉極端的激活值(activation)。n_trials:Optuna 搜尋參數的次數。
這些設定反映了 Heretic 的設計哲學:不是粗暴清除,而是盡量保留原模型結構,再針對拒答方向做局部處理。
限制與適合誰
支援的模型
Heretic 支援多數 dense models、多模態模型(multimodal)、一些 MoE 架構以及部分的 hybrid models(例如 Qwen3.5)。
限制
- 主要支援 transformer 類架構的模型,不是所有新架構都能無痛套用。
- 部分模型在實作上仍可能遇到 VRAM 限制、量化不支援或行為退化問題。
- 它提供的是一套自動化、以最小破壞為目標的拒答削弱流程,而非一鍵解決所有 alignment 問題的魔法。
適合誰
- 本地模型開發與安全對齊研究人員。
- 想做 refusal reduction / decensoring 的人。
- 想比較不同模型行為漂移、並把模型行為編輯流程工程化的人。
來源
修剪旁枝不是為了摧毀,長出新葉的樹木,終究要在更自由的夜空下伸展。
Signals
Visits
--
Waiting for Cloudflare metrics.