querypieai/dlp-tier2-ko-electra-auto-f2
한국어 ELECTRA Tier2 DLP 분류기
이 모델은 DLP 파이프라인 2단계에서 사용하는 한국어 시퀀스 분류기입니다. monologg/koelectra-small-v3-discriminator를 기반으로 KO2 hard-negative 병합 데이터셋으로 파인튜닝했습니다.
Tier2의 의미
여기서 "Tier2"는 모델 아키텍처나 버전을 뜻하지 않고, DLP 검출 파이프라인의 두 번째 단계를 뜻한다.
이 모델은 Tier 1이 이미 후보로 분류했거나 정책상 추가 검토가 필요한 텍스트를 입력받는 것을 전제로 설계되었다. 일반 문서 전체를 무조건 이 모델로 직접 분류하는 용도가 아니라, 규칙 기반 1차 필터 이후의 정밀 재검토 단계에서 사용한다.
레이블
레이블 이름은 작업 이해를 위한 설명용 메타데이터입니다. 학습과 추론 코드에서는 정수 레이블을 사용합니다.
용도
1차 DLP 필터가 표시했거나 2차 검토로 이관한 텍스트를 재검토할 때 사용합니다. 문장 또는 문단 수준의 위험도 분류를 위한 모델이며, 개체의 문자 범위를 추출하지 않습니다. 실제 운영에서는 청킹, 임계값, 정책 로직과 함께 사용해야 합니다.
입력과 출력
입력
- UTF-8 한국어 텍스트 한 개를 입력합니다. 일반적으로 문장 또는 청크 단위입니다.
- 프롬프트 템플릿은 필요하지 않습니다. 텍스트를 그대로 전달합니다.
- 긴 문서는 추론 전에 나눠야 합니다. 권장 파이프라인은
192자 청크와48자 겹침을 사용하고 각 청크를 독립적으로 평가합니다. - 각 청크는
truncation=True,padding=True,max_length=256으로 토크나이즈합니다. - 작업 지시문, 챗 템플릿, 대화 이력은 함께 입력하지 않습니다.
출력
모델은 입력 청크마다 클래스 logits를 반환합니다.
logits[0]:benign클래스 점수 (레이블 ID0)logits[1]:leakage_risk클래스 점수 (레이블 ID1)
softmax를 적용해 클래스 확률을 계산합니다. 권장 양성 클래스 확률은 probabilities[1]입니다. 이 값이 결정 임계값 이상이면 해당 청크를 leakage_risk로, 그보다 낮으면 benign으로 분류합니다.
다중 청크 문서에서는 프로젝트 파이프라인이 청크 점수의 최댓값을 문서 위험 점수로 사용한 뒤 동일한 임계값을 적용합니다. 모델 자체는 여러 청크를 집계하지 않습니다.
모델 로드와 사용
- 필요 패키지:
transformers,torch - 토크나이저와 분류 모델은 동일한 저장소 또는 로컬 디렉터리에서 로드합니다.
- 표준
AutoTokenizer와AutoModelForSequenceClassification인터페이스를 사용하며,trust_remote_code나 커스텀 Python 코드가 필요하지 않습니다. - 추론 전에
model.eval()을 호출하고, 운영 추론에서는 gradient 계산을 비활성화합니다. - 단일 예시 권장 설정은
truncation=True,padding=True,max_length=256입니다. - HF Hub에서 로드할 때는
querypieai/dlp-tier2-ko-electra-auto-f2저장소 ID를 사용합니다. 오프라인 사용 시 이 모델카드가 포함된 로컬 디렉터리 경로를 사용합니다.
권장 추론 설정
- 결정 임계값: 양성 클래스 확률 기준
0.30 - 최대 시퀀스 길이:
256 - 파이프라인 청크 크기:
192 - 파이프라인 겹침:
48
임계값은 검증 데이터에서 recall_min=0.9, false_positive_rate_max=0.2 제약이 있는 F2 목표로 선택했습니다. 임계값은 모델 보정 파라미터가 아니라 확률 계산 이후에 적용하는 정책 결정입니다.
학습 설정
- 기반 모델:
monologg/koelectra-small-v3-discriminator - 학습 데이터: KO2 hard-negative 병합 데이터셋
- 데이터 공개 여부: 비공개. 이 저장소에는 학습 데이터가 포함되어 있지 않습니다.
- 학습/검증/테스트 크기:
25,979/3,775/3,772문서 - 데이터 분할 중 양성(
leakage_risk) 비율: 학습6.94%, 검증9.99%, 테스트9.97% - 텍스트 중복 제거: NFKC, 공백 정규화, 대소문자 접기 기반 SHA-256
- 분할 간 정규화 텍스트 및 대화 단위 누수 검사: 모두
0 - 최적화 trial 수: 12
- 목표: recall 및 false positive rate 제약이 있는 F2
- 학습률:
4.191505350515941e-05 - 배치 크기:
32 - 에폭:
5 - 최대 길이:
256 - weight decay:
0.01 - warmup ratio:
0.0
평가
임계값 0.30에서 테스트 성능:
선택된 임계값과 최종 구성에서 검증 성능:
검증과 테스트 F1 차이가 큽니다. 운영 차단 기준으로 사용하기 전에 분할별 문체 편차와 그룹 구성을 점검해야 합니다.
추론 예시
from transformers import AutoModelForSequenceClassification, AutoTokenizer
import torch
model_id = "querypieai/dlp-tier2-ko-electra-auto-f2"
threshold = 0.30
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForSequenceClassification.from_pretrained(model_id)
model.eval()
text = "여기에 검사할 문장을 입력합니다."
inputs = tokenizer(text, return_tensors="pt", truncation=True, max_length=256, padding=True)
with torch.no_grad():
logits = model(**inputs).logits
positive_probability = torch.softmax(logits, dim=-1)[0, 1].item()
prediction = "leakage_risk" if positive_probability >= threshold else "benign"
print({"score": positive_probability, "prediction": prediction})한계
- 이 모델은 이진 위험 분류기이며 PII 개체 위치 정보를 반환하지 않습니다.
- 성능은 프로젝트 KO2 검증/테스트 세트 기준으로 측정되었습니다. 운영 환경에서는 도메인, 문체, 정책에 따라 달라질 수 있습니다.
- 일반 업무 메시지, 난독화되었거나 일부만 표현된 식별자에서 오탐이 발생할 수 있습니다.
- 익숙하지 않은 식별자나 변경된 난독화 패턴에서 미탐이 발생할 수 있습니다.
- 중요한 결정에는 사람 검토 또는 추가 판정 단계를 함께 사용하세요.
