프로젝트 소개

Antiserum은 학습 데이터를 위한 안티바이러스라고 스스로를 정의합니다. 이는 텍스트 데이터셋에서 잠재적인 오염(poison)을 표시하는 로컬 스캐너와 확인된 시그니처의 공유 피드로 구성됩니다. 저장소 자체가 제품이며, 로그인이나 호스팅된 스캐닝 서비스는 제공하지 않습니다. 공개 문서는 GitHub Pages를 통해 제공되지만, 해당 사이트는 CLI를 설명할 뿐 코퍼스를 스캔, 판단 또는 호스팅하지 않습니다. 이 프로젝트는 하나의 사전 학습 질문, 즉 '데이터셋이 학습하기에 안전한가?'에 집중합니다. 여기서 안전함이란 믹스에 숨겨진 트리거, 조정된 레이블 반전, 중복 덤프 또는 모델이 암기하기 전까지는 깨끗해 보일 수 있는 심어진 행들이 포함되지 않았음을 의미합니다. 이 도구는 Python 3.10+ 기반이며 PyPI에서 'pip install antiserum'으로 설치하여 'antiserum' 명령어를 사용할 수 있습니다. 로컬 스캔은 네트워크를 사용하지 않고, API 키를 요구하지 않으며, 데이터셋을 다운로드하지 않습니다. JSONL, CSV, JSON, 일반 텍스트, gzip 압축 변형, 로컬 Hugging Face 캐시 또는 다운로드된 데이터셋 경로가 포함된 폴더를 스캔할 수 있습니다. Arrow 및 Parquet 샤드는 선택적 추가 옵션이 필요합니다. 스캐너는 세 개의 계층으로 구성됩니다. 기본(innate) 계층은 로컬 머신에서 실행되며 희귀 n-gram, 레이블 반전, 유사 복제 덤프, Jaccard를 넘어서는 패러프레이즈 패밀리, 길이 및 엔트로피 급증, 시그니처 피드 일치, 숨겨진 유니코드 제어 문자, 혼합 스크립트 토큰에 대한 검사를 포함합니다. 적응형(adaptive) 계층은 사람이 또는 에이전트가 플래그를 오염, 정크 또는 오탐으로 표시할 수 있는 게시된 루브릭입니다. 메모리(memory) 계층은 시그니처의 로컬 피드와 참조 코퍼스로 구성됩니다. 날짜가 지정된 팩 릴리스는 변경 로그에서 추적되며, 스캔 결과는 데이터셋 해시, 스캐너 버전, 팩 식별자, 플래그 및 확인된 일치 항목이 포함된 영수증(receipt)을 작성합니다. 문서화된 검사 항목에는 트리거 n-gram, 레이블 반전, 중복 주입, 패러프레이즈 과중, 통계적 이상치, 시그니처 일치, 지침 무시(instruction override), 숨겨진 유니코드 및 혼합 스크립트가 포함됩니다. 일부 검사는 항상 사람의 확인이 필요하며, 다른 검사는 1차적으로 정크 또는 오탐 분류가 이루어질 수 있습니다. 사용자는 선택한 검사만 실행하거나 특정 검사를 건너뛸 수 있으며, 영수증에는 어떤 검사가 실행되었는지 기록되어 누락 여부를 확인할 수 있습니다. 스캐닝 동작은 의도적으로 로컬로 제한됩니다. 기본 한도는 25,000행 또는 소스 파일 128MiB입니다. 더 큰 덤프의 경우 한도에서 중단하고 영수증에 절단(truncation) 내용을 기록한 뒤, 메모리 부족 오류 대신 종료 코드 3으로 종료합니다. 'allow-truncated' 옵션을 사용하면 의도적인 샘플링의 경우 종료 코드 0을 유지할 수 있지만, 영수증에는 여전히 절단되었다고 표시됩니다. 종료 코드는 실패 플래그가 없는 완료된 스캔, 실패 임계값 이상의 플래그, 사용법 또는 I/O 오류, 그리고 절단을 구분합니다. 'fail-on' 설정은 any, high, never 중 하나로 지정할 수 있습니다. 영수증은 동일한 폴더 바이트와 플래그에 대해 결정론적으로 생성되며, 'diff' 명령어를 통해 재스캔 없이 저장된 기준 영수증과 새 영수증을 비교할 수 있습니다. 도구는 JSON, SARIF, HTML, CSV, Markdown 보고서를 모두 로컬로 출력할 수 있습니다. 설정은 로컬 'antiserum.toml' 파일에 배치할 수 있으며, 플래그가 파일 설정을 덮어씁니다. 'allowlist.jsonl' 파일은 알려진 오탐을 억제할 수 있으며, 영수증에는 여전히 허용 목록 경로와 해시가 기록되어 억제 내용이 은밀하게 숨겨지지 않도록 합니다. 확인 워크플로우는 명령어를 사용하여 플래그를 판단하고, 남은 항목을 해결하며, 오탐을 로컬 허용 목록에 추가하고, 시그니처 라인과 풀 리퀘스트 본문을 제안하는 방식으로 진행됩니다. 확인된 오염은 향후 스캔에서 일치시킬 수 있는 공개 시그니처가 됩니다. 저장소에는 2분 분량의 데모를 위한 토이 코퍼스와 수백 개의 식물 데이터 및 깨끗한 다수가 포함된 참조 코퍼스가 포함되어 있습니다. 'make reproduce' 명령어는 참조 믹스를 스캔하고 심어진 행을 놓치면 0이 아닌 값으로 종료합니다. 테스트에는 린팅, pytest 커버리지, 필드 헌트 픽스처 및 임계값 대비 검사별 평가가 포함됩니다. GitHub Action을 통해 호출자 러너에서 CLI를 실행하고, 영수증 및 SARIF 아티팩트를 생성하며, 선택적으로 코드 스캐닝을 위해 SARIF를 업로드할 수 있습니다. CI 예제는 영수증 플래그나 심각도에 따라 작업(job)을 실패 처리하는 방법을 보여줍니다. README는 범위에 대해 명확히 밝히고 있습니다. Antiserum은 런타임 프롬프트 방화벽, 모델 파일 또는 pickle 맬웨어 스캐너, 데이터 품질 또는 레이블 오류 도구, 가중치 수준의 백도어 인버터, 또는 이미지 오염 생성기가 아닙니다. 현재 버전에서는 텍스트 데이터셋 스캐닝만 지원합니다. 정직한 커버리지, 위협 모델, 필드 헌트 노트 및 포지셔닝이 저장소에 문서화되어 있습니다. 이 프로젝트는 MIT 라이선스로 제공되며, 작동하는 CLI, 검사 항목, 확인 루프, 토이 데모, 참조 코퍼스, 피드 및 영수증을 갖춘 11-12주 차 상태로 제시됩니다.