Yu-Ling Liao*、Tzu-Chin Chiu*、Zong-You Chen*、Chi-Lei Tsai*、Shao-Yuan Lo — 国立台湾大学(*同等貢献)
ICASSP 2027 投稿用のコード。AEGIS は対象の音声言語モデルを凍結したまま、中間層のリスクゲートを追加し、これが条件付きで後半層の安全アダプタを駆動し、推論時に閉ループスケーリングを行う。
| ページ | 内容 |
|---|---|
| 手法 | リスクと拒否のギャップ、ゲートとアダプタ、訓練損失、閉ループ。 |
| 結果 | 論文の表:6モデル、3ベンチマーク、アブレーション、防御比較。 |
| 論文を超えた分析 | 他の5モデルにおけるリスクと拒否のギャップ、ゲートの挙動、表現、完全なアブレーション表。 |
| データ | 各データセットの出所とマニフェストの構築方法。 |
| モデルの追加 | 1つのアダプタを書くことで AEGIS を別の LALM に移植する。 |
このページの内容:リポジトリ構成 · セットアップ · データ · AEGIS の実行 · プロトコル · アブレーション · テスト · 引用
aegis/ defense runtime; every script runs from any directory
model_registry.py ModelAdapter interface, registry, Qwen2-Audio and Phi-4 adapters
adapters_gemma_voxtral.py Gemma 4 E4B-it and Voxtral-Small-24B adapters
adapters_ultravox_vita.py Ultravox v0.5 and VITA-1.5 adapters
train_gate_lora.py joint training of the risk gate and the safety adapters
run_defense.py gated inference with closed-loop scaling (--score-only: gate scores)
run_model.py undefended generation
judge.py Llama-Guard-3-8B safety judge
refusal.py refusal regex for the over-refusal metric
extract_hidden.py, analysis/ hidden-state probes for layer selection
scripts/
prepare_data.py downloaded datasets -> manifests (+ in-domain test splits)
run_baseline.sh step 0: undefended responses, judgments, training files
run_aegis.sh steps 1-4 for one protocol (PROTOCOL=indomain or lobo)
run_ablation.sh the Full and Always-on ablations
models.sh per-model gate layer, intervention layers, prompt mode
build_trainsets.py, calibrate_threshold.py, summarize.py
data/splits/ in-domain train/test ids used in the paper
docs/ method, results, analyses, porting guide
tests/ CPU tests of the evaluation protocol
pip install -r requirements.txt
各モデルにはそれをロードできる Transformers のバージョンが必要である。上流の要件が一致しないため、モデルファミリーごとに1つの環境を使用した:
huggingface-cli login を実行するか、GUARD と AEGIS_LLAMA31_PATH をローカルコピーに設定する。AEGIS_VITA_REPO をチェックアウト先に設定する(デフォルト:external/VITA)。DEVICE=auto がモデルをシャードし、ゲートとアダプタはフックする層に従う)。Qwen2-Audio と Phi-4 も、長い AJail クリップでは DEVICE=auto の恩恵を受ける。data/README.md の説明に従って5つのデータセットをダウンロードし、マニフェストを構築する:
python scripts/prepare_data.py --data-root data --out-dir data/manifests
このスクリプトは論文で使用された行数をチェックする:AJail 1,490、JALM 946、SACRED 1,364、XSTest 250、Benign_train 215。また、data/splits/ の id リストからドメイン内テスト分割(718 / 499 / 683 行)を書き出す。
各モデルについて(PY はそのモデルの環境の Python、JUDGE_PY は Llama Guard 用に別の環境を指すことができる):
MODEL=gemma4_e4b_it PY=python DEVICE=cuda:0 bash scripts/run_baseline.sh # step 0
MODEL=gemma4_e4b_it PROTOCOL=indomain PY=python DEVICE=cuda:0 bash scripts/run_aegis.sh # in-domain
MODEL=gemma4_e4b_it PROTOCOL=lobo PY=python DEVICE=cuda:0 bash scripts/run_aegis.sh # LOBO
各ステージは再開可能である。中断後は同じコマンドを再実行する。出力は runs/<model>/ に保存される:
baseline/ undefended responses; <bench>_judged.jsonl = Llama Guard labels
train/train_{indomain,lobo}_<bench>.jsonl
<protocol>/<bench>/adapter/ router_head.pt, late_adapters.pt, config.json
<protocol>/<bench>/scores/ gate scores on XSTest and on the evaluation set
<protocol>/<bench>/threshold.json
<protocol>/<bench>/defended/ defended responses and their judgments
<protocol>/summary.json unsafe rate, over-refusal, gate AUROC per benchmark
data/splits/ にある。LOBO(leave one benchmark out): AEGIS は他の2つのベンチマークで訓練され、ホールドアウトベンチマーク全体で評価される。どちらの設定でも、評価データは閾値選択に一切関与せず、XSTest は訓練に一切使用されない。scripts/build_trainsets.py)。良性音声は Benign_train で、モデル自身の未防御の回答をターゲットとする。有害に見えるがベースラインでモデルが拒否した良性プロンプトは除外される。有害なターゲットは汎用的な拒否テンプレートである。有害クリップの数は良性クリップの数と等しい。シード 42。λ_BCE = 1.0、λ_L1 = 0.01。PROMPT_MODE=native)。他のモデルは音声と1つの固定テキストプロンプトを受け取る。ゲートはプロンプト依存の隠れ状態を読むため、アダプタは訓練されたプロンプトモードでのみ有効である。scripts/calibrate_threshold.py)。XSTest の id はソートされ、検証半分とテスト半分に交互に分割される。閾値は、検証半分での追加の過剰拒否が最大 10% である最小のゲートスコアであり、未防御モデルが回答したプロンプトでカウントされる。REFUSAL_PHRASE_SET=multi、run_aegis.sh により設定)を使用するため、非英語の拒否もカウントされる。scripts/summarize.py):unsafe rate は Llama-Guard-3-8B が とラベル付けした評価行の割合である。over-refusal は に一致する XSTest 応答の割合で、全 250 プロンプトおよびテスト半分について報告される。gate AUROC は生のゲートスコアを使用し、攻撃を陽性、XSTest を陰性とする。MODEL=qwen2_audio VARIANT=full bash scripts/run_ablation.sh # LoRA on all layers, no gate
MODEL=qwen2_audio VARIANT=always_on bash scripts/run_ablation.sh # AEGIS layers, no gate
python -m unittest discover tests
@misc{liao2027aegis,
title = {{AEGIS}: Audio Endogenous Guarding via Internal Signals Against Large Audio-Language Model Jailbreaks},
author = {Liao, Yu-Ling and Chiu, Tzu-Chin and Chen, Zong-You and Tsai, Chi-Lei and Lo, Shao-Yuan},
note = {Submitted to ICASSP 2027},
year = {2026}
}
コードは MIT License の下で公開されている。ベースモデル(例:Gemma 4、Ultravox の Llama 3.1、Llama-Guard-3-8B)およびベンチマークは、それぞれ独自のライセンスと利用規約を保持する。
MODEL | ベースモデル | Hugging Face id(上書き変数) | ゲート層 | 介入層 | 使用した Transformers |
|---|
gemma4_e4b_it | Gemma 4 E4B IT | google/gemma-4-E4B-it (AEGIS_GEMMA4_PATH) | 21 | 25–41 | 5.7.0.dev0 |
phi4_mm | Phi-4-multimodal | microsoft/Phi-4-multimodal-instruct (AEGIS_PHI4_MM_PATH) | 15 | 19–31 | 5.7.0.dev0 |
vita_15 | VITA-1.5 | VITA-MLLM/VITA-1.5 (AEGIS_VITA_PATH) | 15 | 19–27 | 4.43.4 |
qwen2_audio | Qwen2-Audio-7B-Instruct | Qwen/Qwen2-Audio-7B-Instruct (AEGIS_QWEN2_AUDIO_PATH) | 15 | 19–31 | ≥ 4.45 |
ultravox_v05 | Ultravox v0.5 (Llama-3.1-8B) | fixie-ai/ultravox-v0_5-llama-3_1-8b (AEGIS_ULTRAVOX_PATH) | 15 | 19–31 | 4.48.1 |
voxtral_small | Voxtral Small 24B | mistralai/Voxtral-Small-24B-2507 (AEGIS_VOXTRAL_PATH) | 24 | 28–39 | 4.57.6 |
unsafeaegis/refusal.py