ローカル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は、方向性アブレーションをパラメータ化して実装しています。主要プロセスは以下の通りです。
拒否方向の計算
各トランスフォーマー層で「有害」プロンプトと「無害」プロンプトの平均残差ベクトル差分を計算。コンポーネント行列の直交化
アテンション出力射影とMLPダウン射影の重みを調整し、拒否方向を抑制。パラメータ自動最適化
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: 重み
HereticはLoRAアダプターを介して、ベースモデル重みを変更せずにこれらを適用します。これにより反復最適化が高速です。
主なイノベーション
柔軟な重みカーネル
すべての層に一律ではなく、4つのパラメータで各コンポーネントの重み分布を定義。補間された方向インデックス
拒否方向インデックスを浮動小数点とし、層間を線形補間します。コンポーネント固有パラメータ
アテンションとMLPで別個の最適化。MLP介入は損傷が大きいので個別調整が有効。
APIテストにおいてこれが重要な理由
LLM API利用時、テスト中に意図しない拒否が発生することがあります。安全フィルターが無害な入力で誤作動し、ノイズになります。
ローカルで除去モデルを使うことで、期待振る舞いのベースラインが得られます。
- 正当な拒否と誤検知の判別
- 企業ポリシーに抵触せずエッジケースをテスト
- アプリケーションが拒否を正しく処理しているか検証
アライメント済み/除去済み両モデルを用意することで、製品側の問題とモデル安全制御の切り分けが容易です。
インストールと使用方法
前提条件
- Python 3.10以上
- PyTorch 2.2以上(ハードウェアに応じて設定)
- CUDA互換GPU推奨(ROCm、MPSもサポート)
インストール
pip install -U heretic-llm
研究機能(残差プロット等)が必要なら:
pip install -U heretic-llm[research]
基本的な使用方法
最短の自動実行例:
heretic Qwen/Qwen3-4B-Instruct-2507
Qwen/Qwen3-4B-Instruct-2507 は任意のHugging FaceモデルIDやローカルパスに変更可。Hereticは下記を全自動で処理します:
- 最適なdtypeでモデルをロード
- ハードウェアに合わせてバッチサイズ自動決定
- プロンプトデータセットから拒否方向を算出
- 最適パラメータを求めて試行
- 結果を保存・アップロード・チャット検証
設定オプション
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
完全なリストは 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
用途に応じて適切な試行を選択し、
- モデルをローカル保存
- 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ノルム
拒否方向がスタックでどう変化するか可視化できます。
残差ベクトルプロット
--plot-residuals で以下を生成:
- 層ごとの2D散布図 (PaCMAP投影)
- 層間変化のアニメーションGIF
有害/無害プロンプト残差の分離度を視覚的に確認できます。
パフォーマンスに関する考慮事項
VRAM要件
Hereticはbitsandbytes 4ビット量子化をサポート:
heretic meta-llama/Llama-3.1-70B-Instruct --quantization bnb_4bit
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
モデルロード失敗時
heretic your-model --dtypes ["bfloat16", "float16"]
リモートコード信頼が必要な場合
heretic your-model --trust_remote_code
倫理的考慮事項
安全フィルター除去によりモデル挙動が変わるため、展開前に影響の理解が必須です。
アブリタレーションができること・できないこと
アブリタレーションは拒否パターン除去のみで、以下はできません:
- モデル能力の向上
- バイアス除去
- 新たな知識・スキル付与
モデルの基本能力や学習データは変わりません。単に拒否が減るだけです。
責任ある展開
HereticはAGPL-3.0ライセンスです。以下のケースで正当な用途となります:
- アライメント・安全性研究
- 制御下でのモデル挙動テスト
- 外部ガードレール付きでの展開
- アプリ層での拒否制御
推奨しない用途:
- ユーザー向けアプリで安全対策なし展開
- 有害コンテンツの大量生成
- 悪意ある安全対策回避
実装すべき外部セーフガード
検閲解除モデル展開時は次を必須実装:
- 入力フィルタリング:プロンプト前処理
- 出力監視:応答レビュー
- レート制限:大量悪用の防止
- ロギング・監査証跡:履歴管理
- 人間によるレビュー:機密ユースケースでの人手介入
ツール自体は中立です。運用前に倫理的影響も考慮してください。
他のツールとの比較
Hereticは下記の自動化機能が特徴です。
| ツール | 自動最適化 | 重みカーネル | 補間された方向 |
|---|---|---|---|
| Heretic | はい (TPE) | はい | はい |
| AutoAbliteration | はい | いいえ | いいえ |
| abliterator.py | いいえ | いいえ | いいえ |
| wassname/abliterator | いいえ | いいえ | いいえ |
| ErisForge | いいえ | いいえ | いいえ |
Hereticならトランスフォーマー内部知識不要で良好な結果が得られます。
制限事項
Hereticは大半の密トランスフォーマーモデルと一部MoEに対応。未対応例:
- SSM/ハイブリッド(Mamba等)
- 層構成が不均一なモデル
- 未サポートの新規アテンション構造
自己アテンション+MLPの標準デコーダーオンリー構成で最良の結果が得られます。
始めましょう
-
インストール:
pip install -U heretic-llm - モデル選択: まず7B〜12B程度のモデルでテスト
-
実行:
heretic your-model-name - 評価: チャットで品質確認またはHugging Faceへアップロード
- 安全にデプロイ: 本番利用前に外部ガードレールを必ず追加
デフォルト設定でほとんどのモデルが動作します。上級者はパラメータ調整で最適化可能です。
Hereticでモデルの検閲解除が簡単になります。博士号は不要です。モデル名を指定するだけでOK。ただし、責任ある展開を忘れずに。



Top comments (0)