3주 동안 SEISMOGRAPH를 구축해 왔습니다. 오늘 출시된 결과물을 소개합니다.
요약
LLM API의 미묘한 성능 변화(drift)를 감지하기 위한 Python 프로브 라이브러리 'SEISMOGRAPH'가 출시되었습니다. CUSUM 통계 기법을 활용하여 프라이버시를 보호하면서도 모델의 행동 변화를 조기에 탐지합니다.
핵심 포인트
- CUSUM 변화점 탐지 알고리즘으로 점진적인 모델 드리프트 감지
- SHA-256 해시 및 DP 노이즈를 활용한 프라이버시 보호형 데이터 집계
- PyPI를 통해 제공되는 SDK로 간편한 통합 및 모니터링 가능
- 실제 모델 업데이트 사례에 대한 백테스트로 유효성 검증 완료
요약(tl;dr): pip install seismograph-probe — CUSUM 변화점 탐지(change-point detection)를 사용하여 LLM API의 조용한 드리프트(drift)를 감지하고, 프라이버시를 보호하는 신호 집계(signal aggregation) 기능을 갖춘 Python 프로브(probe)입니다. 103개의 테스트 통과. 대시보드 라이브. 오픈 소스.
3주 전, 저는 스스로 답할 수 없는 질문을 던졌습니다:
"GPT-4가 내 모르게 변한 것인가, 아니면 내 프롬프트(prompt) 문제인가?"
지연 시간(latency) 급증도 없었습니다. 다운타임(downtime)도 없었습니다. 그저 동일한 프롬프트, 동일한 파라미터(parameters), 동일한 모든 조건에서 미묘하게 다른 출력값만 나올 뿐이었습니다. 저는 제 잘못이 아닌 문제를 디버깅(debugging)하는 데 며칠을 보냈습니다.
그래서 탐지기를 만들었습니다.
오늘 이를 공개적으로 출시합니다.
현재 실제로 작동 중인 것들
이것은 개념 설명 포스트가 아닙니다. 현재 라이브 상태인 기능들은 다음과 같습니다:
프로브 SDK (The probe SDK) — 오늘 PyPI에 출시됨
pip install seismograph-probe
from probe.sdk import ProbeSDK
sdk = ProbeSDK(provider="openai", model="gpt-4-turbo")
result = sdk.run_canary_suite()
print(result.drift_score) # 0.0 안정적 → 1.0 유의미한 변화
프로브는 매일 temperature=0 설정으로 200개 이하의 카나리 프롬프트(canary prompts)를 실행합니다. 이것들은 의미론적으로 안정적인 작업들, 즉 결정론적 질문(deterministic questions), 구조적 추론(structured reasoning), 형식 준수 확인(format-adherence checks)입니다. 목표는 능력 벤치마크(capability benchmark)가 아니라 신뢰할 수 있는 행동 기준선(behavioral baseline)을 구축하는 것입니다.
프라이버시 경계: 원본 프롬프트와 모델 출력값은 절대 사용자의 기기를 떠나지 않습니다. 프로브는 SHA-256 특징 해시(feature hashes), 분포 통계(distributional stats), 그리고 DP 노이즈가 추가된 집계값(DP-noised aggregates)만을 추출합니다. 전송되는 것은 오직 그것뿐입니다.
CUSUM 변화점 탐지 (CUSUM change-point detection) — 작동 중
상관관계 엔진은 CUSUM (Cumulative Sum, 누적합)을 사용합니다. 이는 단순한 임계값 초과뿐만 아니라 점진적인 드리프트(drift)에 민감하게 반응하는 순차적 통계 테스트(sequential statistical test)입니다.
알려진 LLM 행동 변화 이벤트(2025년 8월~9월)를 대상으로 백테스트(backtest)를 수행했을 때:
0일 차: CUSUM 통계량: 0.12 (안정적인 기준선)
11일 차: 첫 번째 상승 감지
19일 차: 경고 임계값 초과 ← SEISMOGRAPH 작동
57일 차: 공개 사후 분석(postmortem) 게시
38일의 리드 타임(lead time). 제가 계속해서 되새기게 되는 숫자입니다.
수집 게이트웨이 (Ingestion gateway) — 배포 완료
다음 기능을 갖춘 FastAPI 게이트웨이:
Ed25519 서명 배치 검증 (unsigned batches는 원자적으로 거부)
Pydantic v2 스키마 유효성 검사
SQLAlchemy ORM + SQLite (ClickHouse 마이그레이션은 Phase 2에서 계획)
감사(audit) 내보내기 엔드포인트의 Bearer 토큰 인증
퍼블릭 대시보드 — localhost에서 실시간으로 사용 가능하며, 호스팅 버전이 곧 출시될 예정입니다.
다크 모드 모델 날씨 대시보드. 60초마다 Polls /v1/weather를 호출합니다. 보유한 모든 모델(fleet)에 걸친 개별 모델의 드리프트 상태를 보여줍니다.
GET /v1/weather
→ [{"model": "gpt-4-turbo", "status": "STABLE", ... },
{ "model": "claude-3-5-sonnet", "status": "STABLE", ... }]
테스트 스위트 — 103/103 통과
'내 컴퓨터에서는 작동한다'는 상황은 아닙니다. Probe SDK, 저장소 계층(storage layer), 게이트웨이, CUSUM 감지기, 개인 정보 보호 경계(privacy boundary), 인증에 걸쳐 총 103개의 테스트를 진행했습니다. 22개 Python 파일 전체에서 ruff 위반 사항이 없습니다.
제공자 서비스 약관(Provider ToS) 준수 — 확인 완료
어떤 제공자를 카나리아 스위트(canary suite)에 추가하기 전에, 해당 제공자의 서비스 약관을 위반하지 않는지 검증합니다. 다음 제공자에 대해 완료했습니다: OpenAI ✅, Anthropic ✅, Google Gemini ✅, Mistral ✅, Cohere ✅. 내용은 docs/PROVIDER_TOS_CHECKS.md에 문서화되어 있습니다.
아직 완료되지 않은 것들 (솔직하게 말씀드리자면)
호스팅 게이트웨이는 아직 없습니다. 게이트웨이는 로컬에서 실행됩니다. 퍼블릭 수집 엔드포인트는 Phase 1입니다.
베이즈 온라인 감지기(Bayesian online detector)도 아직 없습니다. CUSUM을 사용하고 있습니다. BayesianOnlineDetector.update()는 보류되어 있으며, 백로그에 있습니다.
연합 학습(federation)도 아직 아닙니다. 현재는 단일 조직(single-org)입니다. 이 시스템을 진정으로 가치 있게 만드는 교차 관찰자 합의 점수화(cross-observer agreement scoring)가 Phase 2입니다.
클라우드 대시보드도 없습니다. 당분간은 localhost:8000만 지원합니다.
이것은 Phase 0입니다: 확장하기 전에 감지 로직이 작동하는지 증명하고 있습니다.
아키텍처 다이어그램:
당신의 앱
│ (gen_ai.* OTel 스팬)
▼
ProbeSDK
│ SHA-256 해시 + DP-노이즈 통계만
│ Ed25519 서명 배치
▼
수집 게이트웨이 (FastAPI)
│ 서명 확인 → 스키마 유효성 검사 → 저장
▼
SQLite / ClickHouse
│
▼
CUSUM 감지기 ──► 드리프트 알림(DriftAlert)
│
▼
/v1/weather 대시보드
OTel 네이티브 전반. 이미 gen_ai.* 스팬을 방출하고 있다면, 어댑터가 바로 연결됩니다.
이것이 중요한 이유 (그리고 왜 연합(federated)되어야 하는가)
단일 조직의 드리프트(drift) 신호는 거의 쓸모가 없습니다. 사용자가 변하면 출력도 변합니다. 프롬프트(prompts)가 변합니다. 컨텍스트 윈도우(context windows)가 변합니다.
하지만 동일한 카나리 스위트(canary suite)를 실행하는 15개의 독립적인 조직이 모두 같은 날에 동일한 상관관계가 있는 의미론적 드리프트(semantic drift)를 목격한다면 — 그것은 모델의 변화입니다. 그것이 바로 여러분이 조치를 취할 수 있는 신호입니다.
단일 조직 신호 = 프라이빗 플릿 데이터 (Private fleet data, 오직 귀하의 것만 해당).
다중 조직 상관 신호 = 퍼블릭 드리프트 경고 (Public drift alert).
이것이 설계 원칙입니다. 연합(Federation)은 페이즈 2(Phase 2)입니다. 로컬 프로브(local probe)는 오늘 바로 출시 가능합니다.
사용해 보기 / 따라 하기
GitHub: github.com/Tania-coder/SEISMOGRAPH
PyPI: pypi.org/project/seismograph-probe
만약 조용한 모델 변화(silent model change)로 인해 피해를 입은 적이 있다면 — 이야기를 듣고 싶습니다. 이슈(issue)를 오픈하거나, Twitter @tatyanti에서 저를 찾아주세요.
프로브(probe)는 Apache 2.0 라이선스입니다. 게이트웨이(gateway) 또한 마찬가지가 될 것입니다.
Tatiana Radchenko · AI 인프라(AI Infrastructure) · 덴마크 오르후스(Aarhus, Denmark)
공개적으로 구축 중(Building in public). 3단계 중 페이즈 0(Phase 0 of 3).
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기