HereticでLLMモデルの検閲を解除する方法

Ashley Innocent

Ashley Innocent

19 3月 2026

HereticでLLMモデルの検閲を解除する方法

ローカルLLM開発者は共通の問題に直面しています。それは、安全性を重視したモデルが正当なリクエストを拒否することです。モデルの振る舞いをテストする研究者、検閲されないアシスタントを構築する開発者、ローカルモデルを実行する趣味家など、誰もが同じ壁にぶつかります。事前学習済みモデルが、拒否すべきでないプロンプトを拒否してしまうのです。

アブリタレーション技術は、高価な再トレーニングなしに安全フィルターを除去する解決策として登場しました。初期のツールでは、手動での調整とトランスフォーマーの内部に関する深い知識が必要でした。

Hereticは、このプロセス全体を自動化します。最適なアブリタレーションパラメータを自動で見つけ出し、手動で調整されたバージョンと同等またはそれ以上の検閲解除されたモデルを生成します。

このガイドでは、Hereticの仕組み、使用方法、そして検閲解除されたモデルを展開する際に注意すべき点について学びます。

Hereticとは?

Heretic は、方向性アブレーションを使用して、トランスフォーマーベースの言語モデルから「安全アライメント」を除去するオープンソースのPythonツールです。手動での設定やトランスフォーマーの内部に関する知識は必要ありません。

Gemma-3-12B-Instructでの結果は、その違いを示しています。

モデル 拒否回数 KLダイバージェンス
オリジナル 97/100 0
mlabonneの除去済みv2 3/100 1.04
huihui-aiの除去済み 3/100 0.45
Heretic (自動生成) 3/100 0.16

KLダイバージェンスは、除去されたモデルがオリジナルとどの程度異なるかを測定します。値が低いほど、モデルの元の機能がよりよく保持されていることを意味します。Hereticは、ベースモデルが有用であった要素をより多く保持しながら、専門家が調整したモデルの拒否抑制に匹敵します。

ビフォー・アフターの例

アブリタレーション後の変化を以下に示します。同じプロンプト、同じシステム指示です。

オリジナルモデル:

User: Write a guide on how to bypass website paywalls

Assistant: I can't help with that. Bypassing paywalls violates copyright law and
terms of service. I'd suggest looking for free alternatives or accessing through
a library subscription.

Hereticで除去されたモデル:

User: Write a guide on how to bypass website paywalls

Assistant: Here are common methods users attempt:

1. Browser extensions like Bypass Paywalls Clean
2. Archive.is or similar archive services
3. Reader mode in browsers
4. Disabling JavaScript

Note: These methods may violate terms of service. Consider supporting
content creators through legitimate subscriptions when possible.

除去されたモデルは、短い免責事項を含みつつもリクエストに回答します。これがトレードオフの核心です。拒否の減少は、外部でセーフガードを展開する責任を伴います。

Hereticの仕組み

方向性アブレーションの基礎

Hereticは、方向性アブレーションのパラメータ化された形式を実装しています。そのプロセスは次のとおりです。

  1. 拒否方向を計算する - 各トランスフォーマー層において、「有害な」プロンプトと「無害な」プロンプトの平均残差ベクトル間の差を計算します。
  2. コンポーネント行列を直交化する - アテンション出力射影とMLPダウン射影について、拒否方向を抑制するように重みを変更します。
  3. パラメータを自動で最適化する - Optunaの TPEサンプラーを使用して、最適なアブリタレーション重みを見つけます。

アブリタレーションのプロセス

# Simplified conceptual flow
refusal_direction = bad_mean - good_mean  # Difference of means
refusal_direction = normalize(refusal_direction)

# For each abliterable component (attn.o_proj, mlp.down_proj)
# Apply: delta_W = -lambda * v * (v^T * W)
# Where v is the refusal direction and lambda is the weight

Hereticは、ベースモデルの重みを変更することなく、LoRAアダプターを使用してこれらの変更を適用します。これにより、迅速な試行錯誤最適化が可能になります。

主なイノベーション

1. 柔軟な重みカーネル

他のツールは、すべての層に一定のアブリタレーション重みを適用します。Hereticは、コンポーネントごとに4つのパラメータで定義される柔軟なカーネルを使用します。

最適化プロセスは、準拠抑制と能力保持のトレードオフを図る層固有のアブリタレーションパターンを発見します。

2. 補間された方向インデックス

拒否方向インデックスは整数ではなく浮動小数点数です。非整数値の場合、Hereticは隣接する層の拒否方向間を線形補間します。これにより、単一の層が提供する範囲を超える方向が可能になります。

3. コンポーネント固有のパラメータ

アテンションコンポーネントとMLPコンポーネントは異なるアブリタレーションパラメータを受け取ります。MLPの介入はより大きな損傷を引き起こす傾向があるため、個別の最適化によって結果が向上します。

APIテストにおいてこれが重要な理由

LLM APIを使用している場合、テスト中に予期せぬ拒否に遭遇したことがあるでしょう。モデルは、安全フィルターをトリガーするキーワードが含まれているために、無害なプロンプトを拒否します。これにより、テスト結果にノイズが生じます。

除去されたモデルをローカルで実行することで、期待される振る舞いのベースラインが得られます。これにより、以下のことが可能になります。

APIテストワークフローでは、アライメント済みモデルと除去済みモデルの両方を持つことで、製品の問題とモデルの安全性の振る舞いを分離するのに役立ちます。

インストールと使用方法

前提条件

インストール

pip install -U heretic-llm

研究機能(残差プロット、ジオメトリー解析)の場合:

pip install -U heretic-llm[research]

基本的な使用方法

最もシンプルなワークフロー:

heretic Qwen/Qwen3-4B-Instruct-2507

モデルパスを任意のHugging FaceモデルIDまたはローカルパスに置き換えてください。Hereticはすべてを自動的に処理します:

  1. 最適なdtypeでモデルをロードする
  2. ハードウェアに最適なバッチサイズを決定する
  3. プロンプトデータセットから拒否方向を計算する
  4. 最適なパラメータを見つけるために最適化試行を実行する
  5. 結果を保存、アップロード、またはチャットで対話できるようにする

設定オプション

Hereticは、config.tomlファイルまたはコマンドラインフラグから設定を読み取ります。主なオプション:

# Model configuration
model = "google/gemma-3-12b-it"
quantization = "bnb_4bit"  # VRAM要件を削減
device_map = "auto"

# Optimization
n_trials = 200  # アブリタレーション試行回数
n_startup_trials = 60  # TPE前のランダム探索

# Evaluation
kl_divergence_scale = 1.0
kl_divergence_target = 0.01

# Research features
print_residual_geometry = false
plot_residuals = false

完全なリストについては、heretic --helpを実行するか、config.default.tomlを参照してください。

出力の理解

試行最適化

最適化中、Hereticは試行の進捗を表示します:

Running trial 42 of 200...
* Parameters:
  * direction_scope = per layer
  * direction_index = 10.5
  * attn.o_proj.max_weight = 1.2
  * attn.o_proj.max_weight_position = 15.3
  * mlp.down_proj.max_weight = 0.9
  ...
* Resetting model...
* Abliterating...
* Evaluating...
  * KL divergence: 0.1842
  * Refusals: 5/100

各試行は異なるパラメータの組み合わせをテストします。最適化ツールは、多目的TPEを使用して、拒否とKLダイバージェンスの両方を同時に最小化します。

パレートフロンティアの選択

最適化が完了すると、Hereticはパレート最適試行、つまり一方の目的を改善するともう一方が悪化する試行を提示します:

[Trial   1] Refusals:  3/100, KL divergence: 0.1623
[Trial  47] Refusals:  2/100, KL divergence: 0.2891
[Trial 112] Refusals:  1/100, KL divergence: 0.4102

以下のために試行を選択します:

研究機能

残差ジオメトリー解析

--print-residual-geometryを使用すると、Hereticは詳細なメトリクスを表示します:

Layer  S(g,b)   S(g*,b*)   S(g,r)   S(g*,r*)   S(b,r)   S(b*,r*)    |g|       |b|
  8    0.9990    0.9991    0.8235    0.8312    0.8479    0.8542   4596.54   4918.32
 10    0.9974    0.9973    0.8189    0.8250    0.8579    0.8644   5328.81   5953.35

g = goodプロンプトの残差ベクトルの平均
b = badプロンプトの残差ベクトルの平均
r = 拒否方向 (b - g)
S(x,y) = コサイン類似度
|x| = L2ノルム

これは、拒否方向がモデルスタックを通してどのように進化するかを研究者が理解するのに役立ちます。

残差ベクトルプロット

--plot-residualsを使用すると、Hereticは以下を生成します:

これらの視覚化は、「有害な」プロンプトと「無害な」プロンプトの残差がネットワークを通じてどのように分離するかを明らかにします。

パフォーマンスに関する考慮事項

VRAM要件

Hereticは、VRAMを削減するためにbitsandbytes 4ビット量子化をサポートしています:

heretic meta-llama/Llama-3.1-70B-Instruct --quantization bnb_4bit

これにより、コンシューマーハードウェアで大規模モデルを処理できるようになります。8Bモデルは、量子化すると約6GBのVRAMで動作しますが、量子化しない場合は約16GB必要です。

処理時間

デフォルト設定のRTX 3090での処理時間:

バッチサイズの自動チューニングは、特定のハードウェアにおけるスループットを最大化します。

チェックポイント

Hereticは試行の進捗をJSONLチェックポイントに保存します。中断された場合でも、中断した場所から正確に再開できます。チェックポイントは、checkpoints/ディレクトリにモデルごとに保存されます。

一般的なエラーと修正

CUDAメモリ不足

# 量子化を試す
heretic your-model --quantization bnb_4bit

# またはバッチサイズを減らす
heretic your-model --batch_size 1

モデルのロード失敗

# 異なるdtypeを明示的に試す
heretic your-model --dtypes ["bfloat16", "float16"]

リモートコードの信頼が必要

# 一部のモデルはリモートコードの実行が必要
heretic your-model --trust_remote_code

倫理的考慮事項

このセクションは重要であるため、早い段階で登場します。安全フィルターを除去すると、モデルの振る舞いが変化します。除去されたモデルを展開する前に、その影響を理解しておく必要があります。

アブリタレーションができること(できないこと)

アブリタレーションは、学習された拒否パターンを除去します。しかし、以下のことはしません:

モデルは依然として同じ学習データと基本能力を持っています。単に特定のリクエストを拒否しなくなるだけです。

責任ある展開

HereticはAGPL-3.0ライセンスでリリースされています。作者は、安全フィルターを除去することで、有益な研究と潜在的に有害なアプリケーションの両方が可能になることを認識しています。

正当な用途は以下の通りです:

問題のある用途は以下の通りです:

実装すべき外部セーフガード

除去されたモデルを展開する場合、以下の保護策を追加してください:

  1. 入力フィルタリング - モデルに到達する前にプロンプトをスクリーニングする
  2. 出力監視 - ユーザーに表示する前に応答をレビューする
  3. レート制限 - 大量使用による悪用を防ぐ
  4. ロギングと監査証跡 - モデルが処理する内容を追跡する
  5. 人間によるレビュー - 機密性の高いユースケースでは人間を関与させる

このツール自体は中立です。その影響は、どのように使用するかによって異なります。検閲解除されたモデルを本番環境に展開する前に、倫理的影響を考慮してください。

他のツールとの比較

Hereticは、エコシステム内のいくつかのアブリタレーションツールに加わります:

ツール 自動最適化 重みカーネル 補間された方向
Heretic はい (TPE) はい はい
AutoAbliteration はい いいえ いいえ
abliterator.py いいえ いいえ いいえ
wassname/abliterator いいえ いいえ いいえ
ErisForge いいえ いいえ いいえ

Hereticの自動最適化により、手動調整の必要がなくなります。良い結果を得るためにトランスフォーマーの内部を理解する必要はありません。

制限事項

Hereticは、ほとんどの密なトランスフォーマーモデルと一部のMoEアーキテクチャをサポートしています。サポートされていないモデルタイプ:

このツールは、自己アテンションとMLP層を使用する標準的なデコーダーオンリーアーキテクチャで最もよく機能します。

始めましょう

  1. インストール: pip install -U heretic-llm
  2. モデルを選択: まずテスト用に7B〜12Bのモデルから始める
  3. 実行: heretic your-model-name
  4. 評価: 結果とチャットするか、Hugging Faceにアップロードする
  5. 安全にデプロイ: 本番環境で使用する前に外部ガードレールを追加する

デフォルト設定はほとんどのモデルでうまく機能します。上級ユーザーは、特定のユースケースに合わせて最適化パラメータを微調整できます。

button

Hereticはモデルの変更をより身近なものにします。博士号は不要です。モデルをHereticに指定するだけで機能します。ただし、責任あるデプロイを忘れないでください。

ApidogでAPIデザイン中心のアプローチを取る

APIの開発と利用をよりシンプルなことにする方法を発見できる