로컬 LLM 개발자들은 흔히 "안전 지향" 모델이 정당한 요청까지 거부하는 문제에 부딪힙니다. 연구원, 무검열 비서(uncensored assistants) 개발자, 로컬 모델을 돌리는 아마추어 사용자 모두 동일한 벽을 경험합니다. 사전 학습된 모델이 거부해서는 안 되는 프롬프트까지 막아버리는 것이죠.
제거(abliteration) 기술은 값비싼 재학습 없이 안전 필터를 제거하는 실용적 방법으로 등장했습니다. 하지만 초기 도구는 수동 조정과 트랜스포머 내부 구조에 대한 깊은 이해를 요구했습니다.
Heretic은 이 프로세스를 완전히 자동화하는 Python 오픈소스 도구입니다. 최적의 제거 매개변수를 스스로 찾아내고, 수동 조정과 동등하거나 더 나은 성능의 검열 해제 모델을 생성합니다.
이 글에서는 Heretic의 작동 원리, 실제 사용법, 그리고 무검열 모델 배포 시 반드시 고려해야 할 사항을 다룹니다.
Heretic이란 무엇인가요?
Heretic은 방향성 제거(directional ablation)를 통해 트랜스포머 언어 모델에서 "안전 정렬(safety alignment)"을 제거하는 오픈소스 Python 도구입니다. 트랜스포머 내부 구조에 대한 사전 지식이나 복잡한 수동 설정 없이 사용할 수 있습니다.
Gemma-3-12B-Instruct 모델에 Heretic을 적용한 결과:
| 모델 | 거부 횟수 | 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의 핵심은 "방향성 제거"입니다. 주요 단계는 다음과 같습니다:
- 거부 방향 계산: 각 트랜스포머 레이어별로 "유해한" 프롬프트와 "무해한" 프롬프트에 대한 평균 잔여 벡터의 차이 계산
- 구성 요소 행렬 직교화: 어텐션 출력 투영(attn.o_proj), MLP 다운 프로젝션(mlp.down_proj) 등에서 거부 방향을 억제하도록 가중치 수정
- 매개변수 자동 최적화: Optuna의 TPE 샘플러로 최적 제거 가중치 탐색
제거 프로세스 예시 (Python)
# 단순화된 개념 흐름
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 어댑터 방식으로 기본 모델 가중치를 직접 변경하지 않고 빠른 실험이 가능합니다.
주요 혁신
-
유연한 가중치 커널: 레이어별로
max_weight,max_weight_position,min_weight,min_weight_distance등 네 가지 매개변수로 제거 강도 커널을 조절 - 보간된 방향 지수: 정수 레이어뿐 아니라 부동소수점 위치에 대해 선형 보간으로 거부 방향 적용
- 구성 요소별 매개변수: 어텐션/MLP 각각 따로 최적화하여 손상 최소화
API 테스트에서 이것이 중요한 이유
LLM API를 쓰다 보면, 안전 필터 때문에 정상 프롬프트도 거부당하는 경우가 많습니다. 이로 인해 테스트 결과가 왜곡되거나 노이즈가 생깁니다.
Heretic으로 제거된 모델을 로컬에서 실행하면 테스트 기준선을 확보할 수 있습니다:
- 합법적 거부와 오탐(false positives) 구분
- 기업 안전 정책에 걸리지 않고 엣지 케이스 테스트
- 앱에서 모델 거부 응답 처리 로직 검증
정렬된 모델과 제거 모델을 모두 갖추면, 제품 버그와 모델 안전 동작을 분리해 분석할 수 있습니다.
설치 및 사용법
사전 요구 사항
- 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은 아래를 자동 처리합니다:
- 최적 데이터 타입으로 모델 로드
- 하드웨어별 최적 배치 크기 결정
- 프롬프트 데이터셋에서 거부 방향 계산
- 최적 매개변수 탐색
- 결과 저장, 업로드, 대화형 테스트 지원
구성 옵션
config.toml 파일 또는 CLI 플래그에서 설정 관리:
# 모델 구성
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의 최적화 진행 상황 예시:
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 플래그로 레이어별 코사인 유사도, L2 노름 등 상세 분석 가능:
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 플래그로:
- 레이어별 2D 산점도(PaCMAP 투영)
- 네트워크를 따라 잔여 벡터 변화 애니메이션 GIF
생성
유해/무해 프롬프트 잔여가 네트워크를 따라 어떻게 분리되는지 시각적으로 확인할 수 있습니다.
성능 고려 사항
VRAM 요구 사항
Heretic은 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은 모델 수정을 쉽게 만듭니다. 박사 학위가 필요 없습니다. 모델을 가리키고 작동하게 두기만 하면 됩니다. 단, 책임감 있는 배포를 반드시 실천하세요.



Top comments (0)