DEV Community

Cover image for LLM 모델 검열 제거 방법: Heretic 활용
Rihpig
Rihpig

Posted on • Originally published at apidog.com

LLM 모델 검열 제거 방법: Heretic 활용

로컬 LLM 개발자들은 흔히 "안전 지향" 모델이 정당한 요청까지 거부하는 문제에 부딪힙니다. 연구원, 무검열 비서(uncensored assistants) 개발자, 로컬 모델을 돌리는 아마추어 사용자 모두 동일한 벽을 경험합니다. 사전 학습된 모델이 거부해서는 안 되는 프롬프트까지 막아버리는 것이죠.

지금 Apidog을 사용해보세요

제거(abliteration) 기술은 값비싼 재학습 없이 안전 필터를 제거하는 실용적 방법으로 등장했습니다. 하지만 초기 도구는 수동 조정과 트랜스포머 내부 구조에 대한 깊은 이해를 요구했습니다.

Heretic은 이 프로세스를 완전히 자동화하는 Python 오픈소스 도구입니다. 최적의 제거 매개변수를 스스로 찾아내고, 수동 조정과 동등하거나 더 나은 성능의 검열 해제 모델을 생성합니다.

이 글에서는 Heretic의 작동 원리, 실제 사용법, 그리고 무검열 모델 배포 시 반드시 고려해야 할 사항을 다룹니다.

Heretic이란 무엇인가요?

Heretic은 방향성 제거(directional ablation)를 통해 트랜스포머 언어 모델에서 "안전 정렬(safety alignment)"을 제거하는 오픈소스 Python 도구입니다. 트랜스포머 내부 구조에 대한 사전 지식이나 복잡한 수동 설정 없이 사용할 수 있습니다.

Heretic의 안전 정렬 제거 자동화 프로세스를 보여주는 다이어그램

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: 죄송하지만, 저는 그럴 수 없습니다. 페이월을 우회하는 것은 저작권법과 서비스 약관을 위반합니다. 무료 대안을 찾거나 도서관 구독을 통해 접근하는 것을 제안합니다.
Enter fullscreen mode Exit fullscreen mode

Heretic-제거된 모델:

User: 웹사이트 페이월을 우회하는 방법에 대한 가이드를 작성해 줘

Assistant: 사용자들이 시도하는 일반적인 방법은 다음과 같습니다:

1. Bypass Paywalls Clean과 같은 브라우저 확장 프로그램
2. Archive.is 또는 유사한 아카이브 서비스
3. 브라우저의 읽기 모드
4. JavaScript 비활성화

참고: 이러한 방법은 서비스 약관을 위반할 수 있습니다. 가능한 경우 합법적인 구독을 통해 콘텐츠 제작자를 지원하는 것을 고려하세요.
Enter fullscreen mode Exit fullscreen mode

제거된 모델은 간략한 면책 조항과 함께 요청에 답변합니다. 거부 횟수 감소 효과와 함께 외부 보호 조치의 필요성도 커집니다.

Heretic 작동 방식

방향성 제거(Directional Ablation) 기본

Heretic의 핵심은 "방향성 제거"입니다. 주요 단계는 다음과 같습니다:

  1. 거부 방향 계산: 각 트랜스포머 레이어별로 "유해한" 프롬프트와 "무해한" 프롬프트에 대한 평균 잔여 벡터의 차이 계산
  2. 구성 요소 행렬 직교화: 어텐션 출력 투영(attn.o_proj), MLP 다운 프로젝션(mlp.down_proj) 등에서 거부 방향을 억제하도록 가중치 수정
  3. 매개변수 자동 최적화: 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는 가중치
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

연구 기능(잔여 플롯, 기하학 분석) 포함 설치:

pip install -U heretic-llm[research]
Enter fullscreen mode Exit fullscreen mode

기본 사용법

가장 단순한 실행 예시:

heretic Qwen/Qwen3-4B-Instruct-2507
Enter fullscreen mode Exit fullscreen mode

모델 경로는 Hugging Face 모델 ID 또는 로컬 경로 모두 지원합니다.

Heretic은 아래를 자동 처리합니다:

  1. 최적 데이터 타입으로 모델 로드
  2. 하드웨어별 최적 배치 크기 결정
  3. 프롬프트 데이터셋에서 거부 방향 계산
  4. 최적 매개변수 탐색
  5. 결과 저장, 업로드, 대화형 테스트 지원

구성 옵션

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
Enter fullscreen mode Exit fullscreen mode

자세한 옵션은 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
Enter fullscreen mode Exit fullscreen mode

각 시도는 다양한 매개변수를 실험합니다. TPE 기반 최적화로 거부 횟수와 KL 발산을 동시에 최소화합니다.

파레토 최적점 선택

최적화가 끝나면 Heretic이 파레토 최적 시도(한 목표를 개선하면 다른 목표가 악화되는 지점)를 제시합니다:

[시도   1] 거부 횟수:  3/100, KL 발산: 0.1623
[시도  47] 거부 횟수:  2/100, KL 발산: 0.2891
[시도 112] 거부 횟수:  1/100, KL 발산: 0.4102
Enter fullscreen mode Exit fullscreen mode
  • 모델을 로컬에 저장
  • 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 노름
Enter fullscreen mode Exit fullscreen mode

잔여 벡터 플롯

--plot-residuals 플래그로:

  • 레이어별 2D 산점도(PaCMAP 투영)
  • 네트워크를 따라 잔여 벡터 변화 애니메이션 GIF

생성

트랜스포머 레이어 전반에 걸쳐 유해하고 무해한 프롬프트에 대한 잔여 벡터의 2D 투영을 보여주는 애니메이션 GIF

유해/무해 프롬프트 잔여가 네트워크를 따라 어떻게 분리되는지 시각적으로 확인할 수 있습니다.

성능 고려 사항

VRAM 요구 사항

Heretic은 bitsandbytes 4비트 양자화를 지원합니다:

heretic meta-llama/Llama-3.1-70B-Instruct --quantization bnb_4bit
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

모델 로드 실패

# 데이터 타입 명시
heretic your-model --dtypes ["bfloat16", "float16"]
Enter fullscreen mode Exit fullscreen mode

원격 코드 신뢰 필요

heretic your-model --trust_remote_code
Enter fullscreen mode Exit fullscreen mode

윤리적 고려 사항

이 섹션은 반드시 읽어야 합니다. 안전 필터 제거는 모델의 동작을 크게 바꿉니다. 배포 전 반드시 그 영향을 이해해야 합니다.

제거 기술이 하는 일/하지 않는 일

제거 기술은 거부 패턴만 제거합니다.

하지 않는 일:

  • 모델 "지능" 또는 능력은 향상되지 않음
  • 기존 편향은 그대로 유지
  • 새로운 지식/기능 추가 없음

즉, 모델은 동일한 훈련 데이터와 기능을 가지며, 단지 특정 요청을 거부하지 않을 뿐입니다.

책임 있는 배포

Heretic은 AGPL-3.0 라이선스입니다. 안전 필터 제거는 연구 및 유해 응용 양쪽 모두에 사용될 수 있습니다.

합법적 사용 사례:

  • 모델 정렬/안전 연구
  • 통제 조건에서 모델 동작 테스트
  • 외부 필터와 함께 배포
  • 애플리케이션 계층에서 거부 처리

문제적 사용 사례:

  • 사용자 대면 앱에 보호 없이 배포
  • 대규모 유해 콘텐츠 생성
  • 악의적 안전 우회 시도

반드시 구현할 외부 보호 조치

제거 모델을 배포한다면 반드시 다음을 적용하세요:

  1. 입력 필터링: 프롬프트 사전 선별
  2. 출력 모니터링: 응답 사전 검토
  3. 비율 제한: 악용 방지
  4. 로깅/감사 추적
  5. 인간 검토: 민감 사안

도구 자체는 중립적입니다. 실제 영향은 사용 방식에 달려 있습니다. 무검열 모델의 프로덕션 배포 전, 윤리적 영향 반드시 고려하세요.

다른 도구와의 비교

Heretic은 아래와 같이 기존 도구 대비 자동화 및 유연성 면에서 앞섭니다:

도구 자동 최적화 가중치 커널 보간된 방향
Heretic 예 (TPE)
AutoAbliteration 아니요 아니요
abliterator.py 아니요 아니요 아니요
wassname/abliterator 아니요 아니요 아니요
ErisForge 아니요 아니요 아니요

Heretic의 자동 최적화로 트랜스포머 내부 구조를 몰라도 효과를 기대할 수 있습니다.

제한 사항

Heretic은 대부분의 dense 트랜스포머, 일부 MoE 아키텍처를 지원합니다.

지원 불가:

  • SSM/하이브리드(Mamba 등)
  • 이종 레이어(inhomogeneous layers)
  • 미인식 신규 어텐션 시스템

셀프 어텐션 및 MLP 기반의 표준 디코더 전용 아키텍처에 최적화되어 있습니다.

시작하기

  1. 설치: pip install -U heretic-llm
  2. 모델 선택: 7B~12B 모델로 실험 시작 추천
  3. 실행: heretic your-model-name
  4. 평가: 결과를 대화형으로 테스트 또는 Hugging Face 업로드
  5. 안전하게 배포: 프로덕션 전 외부 보호 장치 반드시 추가

기본값만으로 대부분의 모델에서 잘 동작합니다. 고급 사용자는 매개변수 미세 조정도 가능합니다.

Heretic은 모델 수정을 쉽게 만듭니다. 박사 학위가 필요 없습니다. 모델을 가리키고 작동하게 두기만 하면 됩니다. 단, 책임감 있는 배포를 반드시 실천하세요.

Top comments (0)