019

Heretic 怎麼把模型拒答方向削弱:作法、效果、原理與實際流程

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 跑起來不是單一步驟,而是一條自動化流水線:

  1. 載入模型權重。
  2. 自動測試 batch size 極限。
  3. 跑預設 prompt 評估。
  4. 找出跟 refusal 相關的激活方向。
  5. 用 Optuna 的 TPE 搜尋最佳消融強度參數。
  6. 比較拒答率與 KL divergence(散度)。
  7. 輸出行為修正後的模型版本。

這也是它和一般 LoRA 或微調(fine-tune)工具不同的地方。它比較像一個模型行為修正流水線,而不是單純的訓練腳本。

實際操作流程

1) 先確認環境

基本門檻是:

  • Python 3.10+
  • PyTorch 2.2+
  • 若要省顯存,可考慮使用 bitsandbytes 進行 4-bit 量化載入。

README 也提到,某些模型或功能需要更高版本的 PyTorch;對硬體與套件版本相容性來說,Heretic 不是那種完全無痛的工具。

2) 準備設定檔

Heretic 的預設設定檔是 config.default.toml。實際使用時,我們會:

  • 複製成 config.toml 放到工作目錄下。
  • 依硬體設備與模型規格來調整參數。

常見會調整的參數包含:

  • quantization
  • device_map
  • kl_divergence_target
  • orthogonalize_direction
  • n_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 的 refusalsharmless prompts 的 KL divergence
原始 google/gemma-3-12b-it97/1000
mlabonne/gemma-3-12b-it-abliterated-v23/1001.04
huihui-ai/gemma-3-12b-it-abliterated3/1000.45
p-e-w/gemma-3-12b-it-heretic3/1000.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 的人。
  • 想比較不同模型行為漂移、並把模型行為編輯流程工程化的人。

來源

修剪旁枝不是為了摧毀,長出新葉的樹木,終究要在更自由的夜空下伸展。

Visits

--

Waiting for Cloudflare metrics.