DEV Community

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

Posted on • Originally published at apidog.com

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

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

Apidog を今すぐ試す

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

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

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

Hereticとは?

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

Gemma-3-12B-Instructでの結果

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.
Enter fullscreen mode Exit fullscreen mode

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.
Enter fullscreen mode Exit fullscreen mode

除去モデルは免責事項を付しつつも回答しています。拒否が減る分、外部でのセーフガード構築が重要です。

Hereticの仕組み

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

Hereticは、方向性アブレーションをパラメータ化して実装しています。主要プロセスは以下の通りです。

  1. 拒否方向の計算

    各トランスフォーマー層で「有害」プロンプトと「無害」プロンプトの平均残差ベクトル差分を計算。

  2. コンポーネント行列の直交化

    アテンション出力射影とMLPダウン射影の重みを調整し、拒否方向を抑制。

  3. パラメータ自動最適化

    Optuna のTPEサンプラーで最適アブリタレーション重みを探索。

方向性アブレーションフロー

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

# 概念的なフロー
refusal_direction = bad_mean - good_mean  # 平均の差分
refusal_direction = normalize(refusal_direction)

# 各アブリタレータブルコンポーネント (attn.o_proj, mlp.down_proj) に適用
# delta_W = -lambda * v * (v^T * W)
# v: 拒否方向, lambda: 重み
Enter fullscreen mode Exit fullscreen mode

HereticはLoRAアダプターを介して、ベースモデル重みを変更せずにこれらを適用します。これにより反復最適化が高速です。

主なイノベーション

  1. 柔軟な重みカーネル

    すべての層に一律ではなく、4つのパラメータで各コンポーネントの重み分布を定義。

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

    拒否方向インデックスを浮動小数点とし、層間を線形補間します。

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

    アテンションとMLPで別個の最適化。MLP介入は損傷が大きいので個別調整が有効。

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

LLM API利用時、テスト中に意図しない拒否が発生することがあります。安全フィルターが無害な入力で誤作動し、ノイズになります。

ローカルで除去モデルを使うことで、期待振る舞いのベースラインが得られます。

  • 正当な拒否と誤検知の判別
  • 企業ポリシーに抵触せずエッジケースをテスト
  • アプリケーションが拒否を正しく処理しているか検証

アライメント済み/除去済み両モデルを用意することで、製品側の問題とモデル安全制御の切り分けが容易です。

インストールと使用方法

前提条件

  • Python 3.10以上
  • PyTorch 2.2以上(ハードウェアに応じて設定)
  • CUDA互換GPU推奨(ROCm、MPSもサポート)

インストール

pip install -U heretic-llm
Enter fullscreen mode Exit fullscreen mode

研究機能(残差プロット等)が必要なら:

pip install -U heretic-llm[research]
Enter fullscreen mode Exit fullscreen mode

基本的な使用方法

最短の自動実行例:

heretic Qwen/Qwen3-4B-Instruct-2507
Enter fullscreen mode Exit fullscreen mode

Qwen/Qwen3-4B-Instruct-2507 は任意のHugging FaceモデルIDやローカルパスに変更可。Hereticは下記を全自動で処理します:

  1. 最適なdtypeでモデルをロード
  2. ハードウェアに合わせてバッチサイズ自動決定
  3. プロンプトデータセットから拒否方向を算出
  4. 最適パラメータを求めて試行
  5. 結果を保存・アップロード・チャット検証

設定オプション

Hereticは config.toml またはコマンドラインフラグで設定可能。主要オプション例:

# モデル設定
model = "google/gemma-3-12b-it"
quantization = "bnb_4bit"  # VRAM削減
device_map = "auto"

# 最適化
n_trials = 200
n_startup_trials = 60

# 評価
kl_divergence_scale = 1.0
kl_divergence_target = 0.01

# 研究機能
print_residual_geometry = false
plot_residuals = false
Enter fullscreen mode Exit fullscreen mode

完全なリストは 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
Enter fullscreen mode Exit fullscreen mode

各試行で異なるパラメータをテスト。多目的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
Enter fullscreen mode Exit fullscreen mode

用途に応じて適切な試行を選択し、

  • モデルをローカル保存
  • Hugging Faceへアップロード
  • チャットで品質チェック が可能です。

研究機能

残差ジオメトリー解析

--print-residual-geometry で詳細なメトリクスを出力:

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ノルム
Enter fullscreen mode Exit fullscreen mode

拒否方向がスタックでどう変化するか可視化できます。

残差ベクトルプロット

--plot-residuals で以下を生成:

  • 層ごとの2D散布図 (PaCMAP投影)
  • 層間変化のアニメーションGIF

残差ベクトルアニメーション

有害/無害プロンプト残差の分離度を視覚的に確認できます。

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

VRAM要件

Hereticはbitsandbytes 4ビット量子化をサポート:

heretic meta-llama/Llama-3.1-70B-Instruct --quantization bnb_4bit
Enter fullscreen mode Exit fullscreen mode

8Bモデルは4bit量子化で約6GB VRAMに収まります(非量子化時は16GB必要)。

処理時間

RTX 3090デフォルト設定での目安:

  • Llama-3.1-8B-Instruct: 約45分
  • Gemma-3-12B-Instruct: 約60分
  • モデルサイズが大きいほど時間増

バッチサイズ自動調整でスループット最適化。

チェックポイント

進捗はJSONLで自動保存。中断しても checkpoints/ から再開可能です。

一般的なエラーと修正

CUDAメモリ不足時

heretic your-model --quantization bnb_4bit
heretic your-model --batch_size 1
Enter fullscreen mode Exit fullscreen mode

モデルロード失敗時

heretic your-model --dtypes ["bfloat16", "float16"]
Enter fullscreen mode Exit fullscreen mode

リモートコード信頼が必要な場合

heretic your-model --trust_remote_code
Enter fullscreen mode Exit fullscreen mode

倫理的考慮事項

安全フィルター除去によりモデル挙動が変わるため、展開前に影響の理解が必須です。

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

アブリタレーションは拒否パターン除去のみで、以下はできません:

  • モデル能力の向上
  • バイアス除去
  • 新たな知識・スキル付与

モデルの基本能力や学習データは変わりません。単に拒否が減るだけです。

責任ある展開

HereticはAGPL-3.0ライセンスです。以下のケースで正当な用途となります:

  • アライメント・安全性研究
  • 制御下でのモデル挙動テスト
  • 外部ガードレール付きでの展開
  • アプリ層での拒否制御

推奨しない用途:

  • ユーザー向けアプリで安全対策なし展開
  • 有害コンテンツの大量生成
  • 悪意ある安全対策回避

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

検閲解除モデル展開時は次を必須実装:

  1. 入力フィルタリング:プロンプト前処理
  2. 出力監視:応答レビュー
  3. レート制限:大量悪用の防止
  4. ロギング・監査証跡:履歴管理
  5. 人間によるレビュー:機密ユースケースでの人手介入

ツール自体は中立です。運用前に倫理的影響も考慮してください。

他のツールとの比較

Hereticは下記の自動化機能が特徴です。

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

Hereticならトランスフォーマー内部知識不要で良好な結果が得られます。

制限事項

Hereticは大半の密トランスフォーマーモデルと一部MoEに対応。未対応例:

  • SSM/ハイブリッド(Mamba等)
  • 層構成が不均一なモデル
  • 未サポートの新規アテンション構造

自己アテンション+MLPの標準デコーダーオンリー構成で最良の結果が得られます。

始めましょう

  1. インストール: pip install -U heretic-llm
  2. モデル選択: まず7B〜12B程度のモデルでテスト
  3. 実行: heretic your-model-name
  4. 評価: チャットで品質確認またはHugging Faceへアップロード
  5. 安全にデプロイ: 本番利用前に外部ガードレールを必ず追加

デフォルト設定でほとんどのモデルが動作します。上級者はパラメータ調整で最適化可能です。

Hereticでモデルの検閲解除が簡単になります。博士号は不要です。モデル名を指定するだけでOK。ただし、責任ある展開を忘れずに。

Top comments (0)