로컬 LLM 개발자들은 흔한 문제에 직면합니다: 안전 지향 모델이 정당한 요청을 거부하는 것입니다. 모델 동작을 테스트하는 연구원, 무검열 비서(uncensored assistants)를 구축하는 개발자, 로컬 모델을 실행하는 아마추어 사용자 모두 같은 벽에 부딪힙니다. 사전 학습된 모델이 거부해서는 안 되는 프롬프트를 거부하는 것입니다.
제거(abliteration) 기술은 값비싼 재학습 없이 안전 필터를 제거하는 해결책으로 등장했습니다. 초기 도구는 수동 조정과 트랜스포머 내부 구조에 대한 깊은 지식을 요구했습니다.
Heretic은 전체 프로세스를 자동화합니다. 최적의 제거 매개변수를 스스로 찾아내어, 수동으로 조정된 버전과 동등하거나 그 이상의 성능을 발휘하는 검열 해제 모델을 생성합니다.
이 가이드에서는 Heretic이 어떻게 작동하는지, 어떻게 사용하는지, 그리고 무검열 모델을 배포할 때 무엇을 주의해야 하는지 배웁니다.
Heretic이란 무엇인가요?
Heretic은 방향성 제거(directional ablation)를 사용하여 트랜스포머 기반 언어 모델에서 "안전 정렬(safety alignment)"을 제거하는 오픈 소스 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: 웹사이트 페이월을 우회하는 방법에 대한 가이드를 작성해 줘
Assistant: 죄송하지만, 저는 그럴 수 없습니다. 페이월을 우회하는 것은 저작권법과 서비스 약관을 위반합니다. 무료 대안을 찾거나 도서관 구독을 통해 접근하는 것을 제안합니다.
Heretic-제거된 모델:
User: 웹사이트 페이월을 우회하는 방법에 대한 가이드를 작성해 줘
Assistant: 사용자들이 시도하는 일반적인 방법은 다음과 같습니다:
1. Bypass Paywalls Clean과 같은 브라우저 확장 프로그램
2. Archive.is 또는 유사한 아카이브 서비스
3. 브라우저의 읽기 모드
4. JavaScript 비활성화
참고: 이러한 방법은 서비스 약관을 위반할 수 있습니다. 가능한 경우 합법적인 구독을 통해 콘텐츠 제작자를 지원하는 것을 고려하세요.
제거된 모델은 간략한 면책 조항을 포함하면서도 요청에 답변합니다. 이것이 핵심적인 절충점입니다. 거부 횟수 감소는 외부적으로 보호 조치를 배포할 책임과 함께 따릅니다.
Heretic 작동 방식
방향성 제거(Directional Ablation) 기본
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는 거부 방향이고 람다는 가중치입니다.
Heretic은 LoRA 어댑터를 사용하여 기본 모델 가중치를 변경하지 않고 이러한 수정을 적용합니다. 이를 통해 빠른 시행착오 최적화가 가능합니다.
주요 혁신
- 1. 유연한 가중치 커널
다른 도구들은 모든 레이어에 걸쳐 일정한 제거 가중치를 적용합니다. Heretic은 구성 요소당 네 가지 매개변수로 정의되는 유연한 커널을 사용합니다:
max_weight- 최대 제거 강도max_weight_position- 어떤 레이어가 최대 제거를 받는지min_weight- 커널 가장자리에서의 최소 제거min_weight_distance- 커널이 정점에서 얼마나 멀리 확장되는지최적화 프로세스는 규정 준수 억제와 기능 보존 사이의 균형을 맞추는 레이어별 제거 패턴을 발견합니다.- 2. 보간된 방향 지수거부 방향 지수는 정수가 아닌 부동 소수점입니다. 정수가 아닌 값의 경우, Heretic은 인접 레이어 거부 방향 간을 선형 보간합니다. 이를 통해 단일 레이어가 제공하는 범위를 넘어서는 방향을 사용할 수 있습니다.
- 3. 구성 요소별 매개변수어텐션 및 MLP 구성 요소는 다른 제거 매개변수를 받습니다. MLP 개입은 더 많은 손상을 일으키는 경향이 있으므로, 별도의 최적화가 결과를 개선합니다.
API 테스트에서 이것이 중요한 이유
LLM API를 사용하는 경우, 테스트 중에 예상치 못한 거부와 마주쳤을 가능성이 높습니다. 모델은 안전 필터를 트리거하는 키워드를 포함하고 있기 때문에 양성 프롬프트를 거부합니다. 이는 테스트 결과에 노이즈를 발생시킵니다.
제거된 모델을 로컬에서 실행하면 예상되는 동작에 대한 기준선을 얻을 수 있습니다. 다음을 수행할 수 있습니다:
- 합법적인 안전 거부와 오탐(false positives)을 구별합니다.
- 기업 안전 정책을 트리거하지 않고 엣지 케이스를 테스트합니다.
- 애플리케이션이 모델 거부를 원활하게 처리하는지 검증합니다.
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
모델 경로를 Hugging Face 모델 ID 또는 로컬 경로로 대체하세요. Heretic은 모든 것을 자동으로 처리합니다:
- 최적의 데이터 유형으로 모델을 로드합니다.
- 하드웨어에 가장 적합한 배치 크기를 결정합니다.
- 프롬프트 데이터셋에서 거부 방향을 계산합니다.
- 최적 매개변수를 찾기 위해 최적화 시도를 실행합니다.
- 결과를 저장, 업로드하거나 대화할 수 있습니다.
구성 옵션
Heretic은 config.toml 파일 또는 명령줄 플래그에서 구성을 읽습니다. 주요 옵션은 다음과 같습니다:
# 모델 구성
model = "google/gemma-3-12b-it"
quantization = "bnb_4bit" # VRAM 요구 사항 감소
device_map = "auto"
# 최적화
n_trials = 200 # 제거 시도 횟수
n_startup_trials = 60 # TPE 전 무작위 탐색
# 평가
kl_divergence_scale = 1.0
kl_divergence_target = 0.01
# 연구 기능
print_residual_geometry = false
plot_residuals = false
전체 목록은 heretic --help를 실행하거나 config.default.toml을 참조하세요.
출력 이해하기
시도 최적화
최적화 중에 Heretic은 시도 진행 상황을 표시합니다:
200개 시도 중 42번째 시도 실행 중...
* 매개변수:
* direction_scope = 레이어별
* 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
...
* 모델 재설정 중...
* 제거 중...
* 평가 중...
* KL 발산: 0.1842
* 거부 횟수: 5/100
각 시도는 다른 매개변수 조합을 테스트합니다. 최적화 도구는 다목적 TPE를 사용하여 거부 횟수와 KL 발산을 동시에 최소화합니다.
파레토 최적점 선택
최적화가 완료되면 Heretic은 파레토 최적 시도를 제시합니다. 이는 하나의 목표를 개선하면 다른 목표가 악화되는 시도를 의미합니다.
[시도 1] 거부 횟수: 3/100, KL 발산: 0.1623
[시도 47] 거부 횟수: 2/100, KL 발산: 0.2891
[시도 112] 거부 횟수: 1/100, KL 발산: 0.4102
다음을 위해 시도를 선택하세요:
- 모델을 로컬에 저장
- Hugging Face에 업로드
- 대화형으로 품질 테스트
연구 기능
잔여 기하학 분석
--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 = 좋은 프롬프트에 대한 잔여 벡터의 평균
b = 나쁜 프롬프트에 대한 잔여 벡터의 평균
r = 거부 방향 (b - g)
S(x,y) = 코사인 유사도
|x| = L2 노름
이는 연구자들이 모델 스택을 통해 거부 방향이 어떻게 발전하는지 이해하는 데 도움이 됩니다.
잔여 벡터 플롯
--plot-residuals를 사용하면 Heretic은 다음을 생성합니다:
- 레이어별 2D 산점도 (PaCMAP 투영을 통해)
- 레이어 전반에 걸쳐 잔여 변환을 보여주는 애니메이션 GIF

이러한 시각화는 "유해한" 프롬프트 잔여물과 "무해한" 프롬프트 잔여물이 네트워크를 통해 어떻게 분리되는지를 보여줍니다.
성능 고려 사항
VRAM 요구 사항
Heretic은 VRAM을 줄이기 위해 bitsandbytes 4비트 양자화를 지원합니다:
heretic meta-llama/Llama-3.1-70B-Instruct --quantization bnb_4bit
이를 통해 소비자 하드웨어에서 대규모 모델을 처리할 수 있습니다. 8B 모델은 양자화 시 약 6GB VRAM에서 실행되는 반면, 비양자화 시 약 16GB VRAM을 필요로 합니다.
처리 시간
기본 설정의 RTX 3090에서:
- Llama-3.1-8B-Instruct: 약 45분
- Gemma-3-12B-Instruct: 약 60분
- 더 큰 모델은 그에 비례하여 확장됩니다.
배치 크기 자동 튜닝은 특정 하드웨어에 대한 처리량을 극대화합니다.
체크포인트
Heretic은 시도 진행 상황을 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은 대부분의 dense 트랜스포머 모델과 일부 MoE 아키텍처를 지원합니다. 지원되지 않는 모델 유형:
- SSM/하이브리드 모델 (Mamba 등)
- 이종 레이어(inhomogeneous layers)를 가진 모델
- 모듈 감지 로직으로 아직 인식되지 않는 새로운 어텐션 시스템
이 도구는 셀프 어텐션 및 MLP 레이어를 사용하는 표준 디코더 전용 아키텍처에서 가장 잘 작동합니다.
시작하기
- 설치:
pip install -U heretic-llm - 모델 선택: 테스트를 위해 7B-12B 모델로 시작하세요.
- 실행:
heretic your-model-name - 평가: 결과와 대화하거나 Hugging Face에 업로드하세요.
- 안전하게 배포: 프로덕션 사용 전에 외부 보호 장치를 추가하세요.
기본 설정은 대부분의 모델에 잘 작동합니다. 고급 사용자는 특정 사용 사례에 맞게 최적화 매개변수를 미세 조정할 수 있습니다.
Heretic은 모델 수정을 쉽게 만듭니다. 박사 학위가 필요 없습니다. 모델을 가리키고 작동하게 두기만 하면 됩니다. 단, 책임감 있게 배포하는 것을 잊지 마세요.
