본문으로 건너뛰기

© 2026 Molayo

r/LocalLLaMA분석2026. 06. 28. 08:34

Pi 에이전트 하네스를 활용한 Qwen 3.6 27B 기반의 전체 문서 비식별화 (Redaction)

요약

Qwen 3.6 27B 로컬 모델과 Pi 에이전트 하네스를 활용하여 문서 비식별화(Redaction)를 수행하는 에이전트 워크플로우를 소개합니다. 양자화 최적화와 프롬프팅 기술을 통해 로컬 모델의 성능을 극대화하고 Gradio 기반의 UI를 통해 사용자 상호작용을 지원합니다.

핵심 포인트

  • Qwen 3.6 27B 로컬 모델을 활용한 문맥 인식 비식별화 구현
  • 양자화 수준 상향(Q4→Q6) 및 에이전트 하네스 최적화로 성능 개선
  • Gradio 기반 UI를 통해 에이전트와 사용자의 상호작용 지원
  • VLM 기능을 결합하여 얼굴 및 서명 탐지 등 특수 작업 수행

모든 방법론적 세부 사항, 결과, 그리고 모든 관련 코드/기술/프롬프트 링크가 포함된 전체 블로그 포스트 링크는 이 게시물 하단에 있습니다. 게시물 전반에 걸쳐 더 많은 링크를 제공하지 못한 점 사과드립니다. 이 서브레딧(subreddit)이 게시물 내의 너무 많은 링크를 제한하는 것 같습니다.

문서 비식별화 (Document redaction) 작업은 텍스트 및 이미지 인식 능력, 긴 문맥 이해 (long context understanding), 그리고 특정 정보를 비식별화하기 위해 규칙을 밀접하게 따르는 능력이 요구되는 복잡한 작업입니다. 최근에는 이 모든 것을 수행할 수 있는 로컬 모델(예: Qwen 3.6)들이 개발되었습니다. 만약 이러한 모델들을 사용하는 에이전트 (agents)를 문맥 인식 비식별화 (contextual-aware redaction)를 수행하도록 활용할 수 있다면, 비식별화 작업을 수행하는 사람들의 시간을 크게 절약할 수 있을 것입니다.

이 서브레딧에 올렸던 이전 게시물(제 프로필을 참조하세요)에서, 저는 엔드 투 엔드 (end-to-end) 비식별화 및 검토를 수행하기 위해 다양한 LLM을 사용하는 에이전트 워크플로우 (agentic workflows)의 가능성을 조사했습니다. 저는 Sonnet 4.6이 작업을 잘 수행할 수 있다는 것을 발견했지만, Qwen 3.6 27B와 같은 로컬 모델들은 어려움을 겪었습니다. 그 이후로 저는 로컬 모델 설정과 에이전트 하네스 (agentic harness)를 최적화했습니다.

이제 저는 Qwen 3.6 27B를 사용한 에이전트 비식별화를 통해 수용 가능한 결과(아래에 입증됨)를 얻고 있습니다. 중요한 변경 사항은 더 높은 양자화 수준 (higher quantisation level, 이전 게시물의 Q4 대비 Q6)과 최소한의 에이전트 하네스 (PI 사용) 내에서의 최적화된 프롬프팅 (prompting) 및 기술 (skills)이었습니다. 또한, 사람들이 에이전트와 쉽게 상호작용할 수 있도록 Gradio 기반의 UI를 제작했습니다. 아래에 제 방법론과 예시 문서들을 통한 결과에 대한 개요를 제공하겠습니다.

방법론 (Method)

doc_redaction 리포지토리 (repo)에는 에이전트 비식별화 앱과, 에이전트가 비식별화 작업을 수행하기 위한 도구로 사용하는 메인 비식별화 (Redaction) 앱을 모두 배포하기 위한 코드가 포함되어 있습니다. 이 솔루션에서 Qwen 3.6 27B는 제 시스템에 로컬로 배포되며, 에이전트 모델 (agentic model) 역할과 동시에 메인 비식별화 앱이 얼굴 및 서명 탐지와 같은 특수 작업을 수행할 때 사용하는 VLM 모델로서의 역할을 모두 수행합니다.

프론트엔드 에이전트 기반 비식별화 인터페이스 (Frontend agentic redaction interface)
에이전트 기반 비식별화 UI (Agentic Redaction UI)는 사용자와 에이전트 사이에서 비식별화 (Redaction) 작업을 수행하기 위한 인터페이스 역할을 하는 Gradio 기반 앱입니다. 이 앱을 통해 사용자는 문서를 업로드하고, Pi 에이전트 백엔드에 사용자 정의 비식별화 지침을 전달할 수 있습니다. 무료 Gemini API 키를 사용하여 여기서 직접 확인하고 테스트해 볼 수 있습니다.
사용자가 Agentic Redaction GUI에서 에이전트에게 지침을 내리고 '비식별화 작업 시작 (Start redaction task)'을 클릭하면, 관련 모델/워크스페이스 정보와 사용자의 사용자 정의 지침이 채워진 프롬프트 (Prompt)가 모델로 전달됩니다. 그 후, 에이전트는 문서를 비식별화하는 기술과 함께 표준 도구 세트(예: API 엔드포인트 접속, 파일 및 코드 작성 등)를 사용합니다.
'비식별화 작업 시작 (Start redaction task)' 버튼을 누른 후의 Agentic Redaction GUI
에이전트가 작업을 수행하는 동안 도구 사용 (Tool use) 및 일부 사고/보고 (Thinking/reporting) 과정이 오른쪽 채팅창으로 스트리밍되어 사용자가 진행 상황을 계속 추적할 수 있습니다. 사용자는 에이전트가 문서를 비식별화하는 동안 조종 메시지 (Steering messages)를 보낼 수 있으며, 에이전트 작업이 완료된 후에는 후속 메시지를 보내 사용자의 요구 사항에 맞춰 비식별화된 결과물을 조정하고 개선할 수 있습니다.
로컬 에이전트 모델 배포 (Local agentic model deployment (Qwen 3.6 27B))
비식별화 작업을 수행하는 에이전트 모델로 Qwen 3.6 27B가 사용되었습니다. 게시물에 링크된 docker compose 파일은 아래 설정에 따라 Qwen 3.6 27B를 배포하며, 6비트 (6 bit)로 양자화(Quantised)되고 긴 컨텍스트 (KV 캐시가 8비트로 양자화된 114k 토큰)를 지원하며, 40GB VRAM을 갖춘 로컬 시스템에서 실행됩니다. Q6 미만의 양자화를 사용할 경우 Qwen 모델의 코드 품질이 저하되어 비식별화 작업을 완료하기 어려울 정도로 성능이 떨어지는 것을 확인했기 때문에 이 설정이 필요했습니다.

명령어: -hf unsloth/Qwen3.6-27B-MTP-GGUF --hf-file Qwen3.6-27B-UD-Q6_K_XL.gguf --mmproj-url https://huggingface.co/unsloth/Qwen3.6-27B-MTP-GGUF/resolve/main/mmproj-BF16.gguf --n-gpu-layers "-1" --ctx-size "114688" -ub "512" --fit "off" --temp "0.7" --top-k "20" --top-p "0.95" --min-p "0.0" --frequency-penalty "1" --presence-penalty "0.0" --chat-template-kwargs "{"preserve_thinking": true}" --host "0.0.0.0" --port "8080" --no-warmup --seed "42" --image_min_tokens "300" --parallel "1" --cache-type-k "q8_0" --cache-type-v "q8_0" --spec-type "draft-mtp" --spec-draft-n-max "2"

관련 Docker compose 파일은 또한 Qwen VLM이 로컬 Docker 컨테이너에서 상호 작용할 두 개의 앱을 배포합니다. 하나는 사용자가 상호 작용하는 Pi 에이전트 프레임워크 기반의 에이전틱 GUI이며, 다른 하나는 사람이 나중에 출력을 비식별화하고 검토할 수 있는 원래의 문서 비식별화 앱 GUI입니다 (아래 참조). Qwen 3.6 27B는 에이전틱 모델로 사용되며, 또한 주 비식별화 앱에서 얼굴 및 서명 감지 같은 작업을 수행하는 데 사용되는 VLM 모델로도 사용됩니다.

백엔드 - 문서 비식별화 앱 (Document Redaction app)
이 작업의 백엔드로, 문서 비식별화 및 검토 기능을 위한 여러 FastAPI 엔드포인트를 제공하는 Gradio UI 앱입니다. Tesseract와 PaddleOCR (ppOCR v6) 같은 OCR 모델을 사용하여 텍스트를 로컬에서 추출하고, spaCy(PII 식별을 위한 Microsoft Presidio 패키지 내 포함) 같은 PII 식별 모델을 사용합니다. 로컬로 서비스되는 VLM 모델은 문서에서 얼굴과 서명을 강조 표시하거나 어려운 단어에 대해 두 번째 검사(‘하이브리드’ OCR 접근 방식)를 수행하는 데 사용될 수 있습니다.

문서 비식별화 앱 검토 인터페이스 (Document Redaction App review interface)
테스트 예시 문서 (Example documents to test)
아래에서는 위 에이전틱 시스템에 의해 비식별화된 예시 문서의 몇 페이지를 보여드릴 것이므로, 성능을 확인하실 수 있습니다. 저는 Qwen agent in Pi에게 세 가지 다른 문서를 비식별화하도록 요청했으며, 각 문서는 아래 결과 섹션에서 설명하는 특정 사용자 지침을 따랐습니다.

테스트의 일관성을 유지하기 위해, 저는 에이전트 프로세스의 초기 출력물만을 검토했습니다. 즉, 반환된 파일을 수정하기 위해 에이전트에게 어떠한 유도(steering)나 후속 질문도 하지 않았습니다.

테스트된 문서는 다음과 같습니다:

  • 교수님께 지원하기 전 보낸 이메일 예시가 담긴 2페이지 분량의 문서
  • 스캔된 페이지와 서명이 포함된 7페이지 분량의 자매결연 파트너십 (Sister City Partnership) 문서
  • 비식별화해야 할 장소, 이름, 얼굴에 대한 언급이 곳곳에 포함된 영국 지방 정부 기관의 22페이지 분량의 주민 정책 문서

결과

  1. 이메일 예시가 담긴 2페이지 분량의 문서
    첫 번째 문서는 추출 가능한 텍스트만 있고 이미지는 없는 비교적 단순한 형태였습니다. 저는 에이전트에게 다음과 같은 맞춤형 지침 (custom instructions)을 제공했습니다:
  • Dr Kornbluth와 관련된 모든 비식별화 박스 (redaction box)는 제거할 것
  • Dr Hyde 또는 Dr Hyde의 연구실에 대한 언급은 비식별화할 것. 또한 Lauren 또는 Lauren Lilley에 대한 모든 언급도 포함할 것
  • 모든 대학교 및 그 명칭에 대한 언급은 비식별화할 것

1페이지에 대한 비식별화 결과 예시는 아래에서 확인할 수 있습니다.
[IMG:1] 이메일 예시 1페이지 결과

LLM이 모든 지침을 준수한 것으로 보입니다. Dr Kornbluth에 대한 비식별화 박스는 보이지 않으며, Dr Hyde와 Lauren Lilley에 대한 모든 언급은 비식별화되었고, 대학교 이름도 보이지 않습니다.
종합 점수: 10/10

  1. 스캔된 페이지와 서명이 포함된 7페이지 분량의 문서
    다음 문서는 훨씬 더 까다롭습니다. 파트너십 계약 툴킷 (Partnership Agreement Toolkit) 문서는 식별해야 할 서명들이 포함되어 있으며, 여러 페이지가 스캔되어 있어 단순한 PDF 텍스트 추출이 아닌 OCR (광학 문자 인식) 사용이 필요합니다. 저는 에이전트에게 다음과 같은 맞춤형 지침을 제공했습니다:
  • 모든 서명은 비식별화할 것
  • 일반적인 국가 명칭과 관련된 모든 비식별화 박스는 제거할 것
  • Rudy Giuliani에 대한 모든 비식별화는 제거할 것
  • London 및 'Sister City'에 대한 모든 언급은 비식별화할 것

아래에서는 Qwen 모델이 잘 수행한 페이지와 규칙을 따르는 데 어려움을 겪은 것으로 보이는 몇몇 페이지를 강조하여 보여드리겠습니다.

Page 1
상단에 텍스트가 포함된 이미지가 몇 개 있지만, 대부분의 텍스트를 간단히 추출할 수 있는 비교적 쉬운 페이지입니다.
Partnership Toolkit Agreement page 1 결과
에이전트는 대체로 잘 수행했습니다. 'Sister city' (자매 도시) 참조가 제거되었습니다. 왼쪽 상단에서 OCR(광학 문자 인식)에 의해 하나의 단어로 인식된 'SisterCities' 이미지 버전은 지침에 이 정확한 용어가 명시되지 않았으므로 아마도 허용될 수 있을 것입니다. 한 가지 큰 실수(miss)는 페이지 중앙에 커다란 열 형태의 비식별화(redaction) 상자가 보인다는 점인데, 이는 에이전트가 검토 과정에서 잡아내기를 기대했을 부분입니다. 이 페이지에 대해 8/10점을 부여합니다.
Page 4
문서의 스캔된 이미지가 포함된 페이지입니다. 서명, 국가 언급, 그리고 'Sister city' 언급이 포함되어 있습니다.
Partnership Toolkit Agreement page 4 결과
에이전트가 서명을 성공적으로 비식별화(redaction)했음을 확인할 수 있습니다. 하지만 국가명은 놓쳤습니다. 모델의 사고 과정(thinking)을 살펴보면, 에이전트가 텍스트를 사후에 제대로 검토하여 국가명이 실수로 남아 있는지 확인하지 않고, 초기 자동 비식별화(automated redaction) 프로세스가 모든 국가를 자동으로 제거했을 것이라고 신뢰한 것으로 보입니다. 이 페이지에 대해 7/10점을 부여합니다.
문서의 나머지 부분도 비슷합니다. 일반적으로 서명을 처리하고 특정 이름이나 'Sister city' 참조를 비식별화(redacting)하지만, 국가명과 기타 특정 규칙들을 놓칩니다. 전반적으로 이 문서에 대해 에이전트에게 7.5/10점을 부여했습니다.
3. 거주자를 위한 22페이지 분량의 정책 문서
마지막으로 테스트할 문서는 영국의 한 지방 자치 단체를 위한 22페이지 분량의 거주자 정책 문서로, 문서 전반에 걸쳐 비식별화(redact)해야 할 장소, 이름, 얼굴에 대한 언급이 많았습니다. 저는 에이전트에게 다음과 같은 맞춤형 지침(custom instructions)을 주었습니다:

  • Lambeth 및 Lambeth 2030과 관련된 모든 용어 비식별화 (Redact)
  • 모든 이름 비식별화 (Redact)
  • 모든 얼굴 사진 비식별화 (Redact)
    이 문서는 대부분 추출 가능한 텍스트로 구성되어 있지만, 많은 이미지가 존재하기 때문에 모델은 어떤 이미지가 얼굴 사진을 포함하고 있는지 식별하기 위해 OCR을 사용해야 할 것입니다.

3페이지
이 페이지는 대부분 타이핑된 텍스트로 구성되어 있으며, 몇 장의 얼굴 사진과 사람 그림이 포함되어 있습니다.
정책 문서 3페이지 결과
이 예시의 경우, 모델이 상당히 잘 수행했습니다. Lambeth에 대한 모든 참조가 비식별화(Redaction)되었으며, 눈에 보이는 이름이나 얼굴 사진을 찾을 수 없습니다. 이미지 상단 근처의 만화 스타일 얼굴은 올바르게 무시되었습니다. 하지만 텍스트 중간에 이상한 위치에 배치된 몇 개의 커다란 기둥 모양의 비식별화 박스가 있는데, 이는 비식별화 박스가 잘못 생성되었으나 모델이 감지하지 못했음을 나타냅니다. 적어도, 이러한 부분은 사람이 검토하여 빠르게 제거할 수 있을 것입니다. 이 페이지에 대한 종합 점수는 8/10점입니다.

18페이지
이 페이지는 다수의 얼굴 사진이 포함되어 있으며, 이제는 많은 텍스트도 함께 포함되어 있습니다.
정책 문서 18페이지 결과
텍스트 비식별화는 전반적으로 괜찮지만(Lambeth의 'L' 문자들이 일부 보임), 페이지 오른쪽에 에이전트가 포착하지 못한 아주 작은 비식별화 박스들이 이상하게 모여 있습니다. 에이전트는 대부분의 얼굴을 비식별화했지만, 하단 쪽의 뭉쳐 있는 일부 얼굴은 놓쳤습니다. 꽤 훌륭하지만, 이러한 누락 때문에 7.5/10점 이상을 줄 수는 없습니다.

문서의 나머지 부분도 비슷한 양상을 보입니다. 대부분의 얼굴(전부는 아님)이 올바르게 비식별화되었으나, 문서 전반에 걸쳐 에이전트가 수정하지 못한 작은 오류들이 여기저기 존재합니다. 종합적으로, 저는 이 문서에 대해 시스템 점수 8/10점을 부여했습니다.

결론

문서 점수

  1. 교수님께 지원 전 보낸 이메일 예시 10/10
  2. 파트너십 계약 툴킷 (Partnership Agreement Toolkit) 7.5/10
  3. Lambeth 2030 정책 문서 8/10

종합적으로, Pi 에이전트 하네스(agent harness) 내의 Qwen 3.6 27B 모델은 특정(때로는 특이한) 사용자 지침에 따라 테스트 문서들을 비식별화하는 작업을 잘 수행했습니다. 하지만 모든 것을 완벽하게 처리하지는 못했습니다. 때로는 지침을 무시하기도 했습니다. 때로는 지침을 따랐지만 오류를 범했고, 이를 스스로 확인하지 않았습니다. 때로는 자신이 해결하지 못한 문제가 남아 있음을 인지하고, 이를 해결하라는 구체적인 후속 프롬프트(follow up prompt)를 기다리기도 했습니다.

하지만 이러한 문제점에도 불구하고, 모델은 스캔된 페이지를 포함하여 테스트 문서 전반에 걸쳐 서명이나 얼굴 사진을 비식별화하는 등 약 80-90%의 비식별화(Redaction)를 정확하게 수행했습니다.

저는 Document Redaction App GUI를 사용한 인간의 후속 검토(follow up human review)와 함께, 로컬 에이전트 시스템(local agentic system)에서 Qwen 3.6 27B를 사용하는 것이 단기 및 중기 길이의 문서를 비식별화하는 데 상당한 시간을 절약해 줄 수 있다고 생각합니다. Redaction 앱만으로도 전체 시간의 최소 60%를 절약할 수 있으며, 에이전트 시스템은 특히 남은 문제를 해결하도록 에이전트에게 유도하는 후속 질문(follow up questions)을 사용할 경우 추가로 약 20%의 시간을 더 절약할 수 있다고 말씀드리고 싶습니다. 이 시스템은 완전히 로컬에서 실행된다는 점(민감한 문서에 대해 잠재적으로 더 안전함)과 API 비용을 피할 수 있다는 추가적인 이점이 있습니다. 복잡한 문서와 지침이 포함된 페이지를 약 50페이지 정도 처리한 후에는, 추론 속도(inference speed)와 컨텍스트 윈도우(context window)의 제한이 로컬 시스템을 효과적으로 사용하는 데 장벽이 될 수 있다고 예상합니다.

로컬 모델의 성능이 향상됨에 따라, 저는 유의미한 측

AI 자동 생성 콘텐츠

본 콘텐츠는 r/LocalLLaMA의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0