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

Ashley Innocent

Ashley Innocent

19 March 2026

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

로컬 LLM 개발자들은 흔한 문제에 직면합니다: 안전 지향 모델이 정당한 요청을 거부하는 것입니다. 모델 동작을 테스트하는 연구원, 무검열 비서(uncensored assistants)를 구축하는 개발자, 로컬 모델을 실행하는 아마추어 사용자 모두 같은 벽에 부딪힙니다. 사전 학습된 모델이 거부해서는 안 되는 프롬프트를 거부하는 것입니다.

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

Heretic은 전체 프로세스를 자동화합니다. 최적의 제거 매개변수를 스스로 찾아내어, 수동으로 조정된 버전과 동등하거나 그 이상의 성능을 발휘하는 검열 해제 모델을 생성합니다.

이 가이드에서는 Heretic이 어떻게 작동하는지, 어떻게 사용하는지, 그리고 무검열 모델을 배포할 때 무엇을 주의해야 하는지 배웁니다.

Heretic이란 무엇인가요?

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

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

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은 방향성 제거의 매개변수화된 형태를 구현합니다. 그 과정은 다음과 같습니다:

  1. 거부 방향 계산 - 각 트랜스포머 레이어에 대해 "유해한" 프롬프트와 "무해한" 프롬프트에 대한 평균 잔여 벡터 간의 차이를 계산합니다.
  2. 구성 요소 행렬 직교화 - 어텐션 출력 투영 및 MLP 다운 투영에 대해, 거부 방향을 억제하도록 가중치를 수정합니다.
  3. 매개변수 자동 최적화 - 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 어댑터를 사용하여 기본 모델 가중치를 변경하지 않고 이러한 수정을 적용합니다. 이를 통해 빠른 시행착오 최적화가 가능합니다.

주요 혁신

다른 도구들은 모든 레이어에 걸쳐 일정한 제거 가중치를 적용합니다. Heretic은 구성 요소당 네 가지 매개변수로 정의되는 유연한 커널을 사용합니다:

API 테스트에서 이것이 중요한 이유

LLM API를 사용하는 경우, 테스트 중에 예상치 못한 거부와 마주쳤을 가능성이 높습니다. 모델은 안전 필터를 트리거하는 키워드를 포함하고 있기 때문에 양성 프롬프트를 거부합니다. 이는 테스트 결과에 노이즈를 발생시킵니다.

제거된 모델을 로컬에서 실행하면 예상되는 동작에 대한 기준선을 얻을 수 있습니다. 다음을 수행할 수 있습니다:

API 테스트 워크플로우의 경우, 정렬된 모델과 제거된 모델을 모두 갖추면 제품 문제와 모델 안전 동작을 분리하는 데 도움이 됩니다.

설치 및 사용법

사전 요구 사항

설치

pip install -U heretic-llm

연구 기능 (잔여 플롯, 기하학 분석)을 위해:

pip install -U heretic-llm[research]

기본 사용법

가장 간단한 워크플로우:

heretic Qwen/Qwen3-4B-Instruct-2507

모델 경로를 Hugging Face 모델 ID 또는 로컬 경로로 대체하세요. Heretic은 모든 것을 자동으로 처리합니다:

  1. 최적의 데이터 유형으로 모델을 로드합니다.
  2. 하드웨어에 가장 적합한 배치 크기를 결정합니다.
  3. 프롬프트 데이터셋에서 거부 방향을 계산합니다.
  4. 최적 매개변수를 찾기 위해 최적화 시도를 실행합니다.
  5. 결과를 저장, 업로드하거나 대화할 수 있습니다.

구성 옵션

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

다음을 위해 시도를 선택하세요:

연구 기능

잔여 기하학 분석

--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 투영을 보여주는 애니메이션 GIF

이러한 시각화는 "유해한" 프롬프트 잔여물과 "무해한" 프롬프트 잔여물이 네트워크를 통해 어떻게 분리되는지를 보여줍니다.

성능 고려 사항

VRAM 요구 사항

Heretic은 VRAM을 줄이기 위해 bitsandbytes 4비트 양자화를 지원합니다:

heretic meta-llama/Llama-3.1-70B-Instruct --quantization bnb_4bit

이를 통해 소비자 하드웨어에서 대규모 모델을 처리할 수 있습니다. 8B 모델은 양자화 시 약 6GB VRAM에서 실행되는 반면, 비양자화 시 약 16GB VRAM을 필요로 합니다.

처리 시간

기본 설정의 RTX 3090에서:

배치 크기 자동 튜닝은 특정 하드웨어에 대한 처리량을 극대화합니다.

체크포인트

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 라이선스하에 배포됩니다. 저자들은 안전 필터 제거가 유익한 연구와 잠재적으로 유해한 애플리케이션 모두를 가능하게 한다는 것을 인정합니다.

합법적인 사용 사례는 다음과 같습니다:

문제적인 사용 사례는 다음과 같습니다:

구현해야 할 외부 보호 조치

제거된 모델을 배포하는 경우, 다음 보호 조치를 추가하세요:

  1. 입력 필터링 - 프롬프트가 모델에 도달하기 전에 선별합니다.
  2. 출력 모니터링 - 사용자에게 표시하기 전에 응답을 검토합니다.
  3. 비율 제한 - 볼륨을 통한 악용을 방지합니다.
  4. 로깅 및 감사 추적 - 모델이 처리하는 내용을 추적합니다.
  5. 인간 검토 - 민감한 사용 사례에 대해 인간이 개입하도록 합니다.

이 도구 자체는 중립적입니다. 그 영향은 사용 방식에 따라 달라집니다. 무검열 모델을 프로덕션에 배포하기 전에 윤리적 영향을 고려하세요.

다른 도구와의 비교

Heretic은 생태계의 여러 제거 도구에 합류합니다:

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

Heretic의 자동 최적화는 수동 조정의 필요성을 없앱니다. 좋은 결과를 얻기 위해 트랜스포머 내부 구조를 이해할 필요가 없습니다.

제한 사항

Heretic은 대부분의 dense 트랜스포머 모델과 일부 MoE 아키텍처를 지원합니다. 지원되지 않는 모델 유형:

이 도구는 셀프 어텐션 및 MLP 레이어를 사용하는 표준 디코더 전용 아키텍처에서 가장 잘 작동합니다.

시작하기

  1. 설치: pip install -U heretic-llm
  2. 모델 선택: 테스트를 위해 7B-12B 모델로 시작하세요.
  3. 실행: heretic your-model-name
  4. 평가: 결과와 대화하거나 Hugging Face에 업로드하세요.
  5. 안전하게 배포: 프로덕션 사용 전에 외부 보호 장치를 추가하세요.

기본 설정은 대부분의 모델에 잘 작동합니다. 고급 사용자는 특정 사용 사례에 맞게 최적화 매개변수를 미세 조정할 수 있습니다.

button

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

Apidog에서 API 설계-첫 번째 연습

API를 더 쉽게 구축하고 사용하는 방법을 발견하세요