깃허브에 이번 주 올라온 OpenAI의 모델 하나가 프라이버시 엔지니어들 사이에서 화제다. 기존에는 정규식이나 간단한 패턴 매칭으로 전화번호나 이메일만 걸러내는 수준이었다. 그런데 이번 모델은 문장 전체 맥락을 읽고 '이 정보는 공개해도 되는 정보인지, 아니면 특정 개인을 식별할 수 있는 민감 정보인지'를 판단한다.

OpenAI, Privacy Filter 공개…1.5B 파라미터, 50M 활성 파라미터

2025년 4월 15일, OpenAI는 개인 식별 정보(PII)를 탐지하고 마스킹하는 오픈 웨이트 모델인 Privacy Filter를 공개했다. 모델은 1.5B 총 파라미터 중 50M 활성 파라미터로 구성된 소형 모델이다. PII-Masking-300k 벤치마크에서 F1 점수 96%(정밀도 94.04%, 재현율 98.04%)를 기록했다. OpenAI는 자체 평가 중 발견한 데이터셋 주석 오류를 보정한 버전에서도 최고 성능을 달성했다고 밝혔다.

8개 범주를 탐지한다: PERSON(개인명), EMAIL(이메일), PHONE(전화번호), ADDRESS(주소), PRIVATE_DATE(비공개 날짜), ACCOUNT_NUMBER(계좌번호·신용카드 번호 등), SECRET(비밀번호·API 키 등), PUBLIC(공개 정보). 각 범주는 BIOES(시작-내부-끝-단독) 태그로 디코딩되어 깔끔한 마스킹 경계를 생성한다.

양방향 토큰 분류기로 설계되었다. 사전 학습된 autoregressive 체크포인트에서 출발해, 언어 모델 헤드를 토큰 분류 헤드로 교체한 후 지도 학습으로 파인튜닝했다. 추론 시에는 제약 조건이 있는 Viterbi 디코딩(가장 확률 높은 태그 시퀀스를 찾는 알고리즘)으로 일관된 스팬을 출력한다. 긴 입력도 단일 패스로 처리한다.

기존 정규식 기반 도구와의 차이점

예전에는 전화번호 형식(010-xxxx-xxxx)이나 이메일 패턴만 매칭하는 규칙 기반 도구가 주를 이뤘다. 이 방식은 형식이 정해진 정보는 잘 걸러내지만, "제 이메일은 [email protected]입니다" 같은 문장에서 '[email protected]'이 개인 이메일인지 업무용 공개 이메일인지 구분하지 못한다.

문맥을 이해한다는 점이 핵심이다. 예를 들어 "Q2 계획 후속 회의: 출시일은 2026년 9월 18일"이라는 문장에서 날짜가 제품 출시일(공개 정보)인지 개인 일정(비공개)인지 판단한다. OpenAI가 공개한 예시를 보면, 원문 "the product launch is scheduled for September 18, 2026"에서 날짜가 [PRIVATE_DATE]로 마스킹된 반면, "project file is listed under 4829-1037-5581"은 [ACCOUNT_NUMBER]로 처리되었다.

공개 데이터와 합성 데이터를 혼합 사용해 학습했다. 공개 데이터 중 레이블이 불완전한 부분은 모델 보조 주석으로 보완했고, 다양한 형식과 맥락을 포괄하기 위해 합성 예제를 추가 생성했다. OpenAI는 자체 프라이버시 보호 워크플로우에서도 이 모델의 파인튜닝 버전을 사용 중이다.

개발자가 바로 체감하는 변화

로컬 실행이 가능해졌다는 점이 가장 크다. Privacy Filter는 데이터를 외부 서버로 보내지 않고 자체 머신에서 마스킹을 완료한다. 민감 정보가 필터링되기 전에 외부로 유출될 위험이 줄어든다. 개발자는 자신의 환경에서 모델을 실행하고, 특정 사용 사례에 맞게 파인튜닝할 수 있다. 훈련 파이프라인, 인덱싱, 로깅, 리뷰 파이프라인에 프라이버시 보호를 통합할 수 있다.

설치는 간단하다. 깃허브 저장소에서 모델 가중치를 내려받고, 추론 스크립트를 실행하면 된다. OpenAI는 향후 더 다양한 언어와 프라이버시 범주를 지원할 계획이라고 밝혔다.

이 모델 하나로 정규식 라이브러리와 외부 API 호출을 대체할 수 있는 건 아니다. 그러나 문맥 기반 필터링이 필요한 파이프라인에서는 기존 도구보다 훨씬 적은 오탐지로 작업을 처리할 수 있다.