
오디오-언어 모델을 동결 상태로 유지하고, 추론 시점에서 오디오 탈옥을 차단하기 위해 중간 계층 위험 게이트와 후반 계층 안전 어댑터를 추가하는 방어 프레임워크입니다.
Yu-Ling Liao*, Tzu-Chin Chiu*, Zong-You Chen*, Chi-Lei Tsai*, Shao-Yuan Lo — 국립 타이완 대학교 (*동등 기여)
ICASSP 2027 제출 논문의 코드. AEGIS는 대상 오디오-언어 모델을 동결한 채로 유지하고, 중간 계층 위험 게이트를 추가하여 후반 계층 안전 어댑터를 조건부로 구동하며, 추론 시 폐루프 스케일링을 적용한다.
| 페이지 | 내용 |
|---|---|
| 방법 | 위험-거부 격차, 게이트와 어댑터, 학습 손실, 폐루프. |
| 결과 | 논문의 표: 6개 모델, 3개 벤치마크, 절제 실험, 방어 비교. |
| 논문 외 분석 | 나머지 5개 모델의 위험-거부 격차, 게이트 동작, 표현, 전체 절제 표. |
| 데이터 | 각 데이터셋의 출처와 매니페스트 구성 방법. |
| 모델 추가 | 어댑터 하나를 작성하여 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 버전이 필요하다. 업스트림 간 요구 사항이 서로 다르므로, 모델 패밀리별로 하나의 환경을 사용했다:
huggingface-cli login을 실행하거나,
GUARD와 AEGIS_LLAMA31_PATH를 로컬 복사본으로 설정하라.AEGIS_VITA_REPO를 체크아웃 위치로 설정하라 (기본값: external/VITA).DEVICE=auto가 모델을 샤딩하며, 게이트와
어댑터는 자신이 후킹하는 계층을 따라간다). Qwen2-Audio와 Phi-4도 긴 AJail 클립에서는
DEVICE=auto가 도움이 된다.data/README.md에 설명된 대로 다섯 개 데이터셋을 다운로드한 뒤,
매니페스트를 빌드하라:
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는 나머지 두 벤치마크로
학습되고, 홀드아웃 벤치마크 전체로 평가된다. 두 설정 모두에서 평가 데이터는 임계값
선택에 전혀 참여하지 않으며, XSTest는 학습에 절대 사용되지 않는다.scripts/build_trainsets.py). 양성 오디오는 Benign_train이며, 모델
자체의 무방어 답변을 타깃으로 한다. 유해해 보이지만 베이스라인에서 모델이 거부한 양성
프롬프트는 제거된다. 유해 타깃은 일반적인 거부 템플릿이다. 유해 클립 수는 양성 클립
수와 같다. 시드 42.λ_BCE = 1.0, λ_L1 = 0.01.PROMPT_MODE=native); 다른 모델들은
오디오와 하나의 고정된 텍스트 프롬프트를 받는다. 게이트는 프롬프트에 의존하는 은닉
상태를 읽으므로, 어댑터는 학습된 프롬프트 모드에서만 유효하다.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