Files
HC900-Crawler/mcp-server/eval/README.md
windpacer 16fc7a2598 Initial commit: HC900 Crawler
Honeywell HC900을 Modbus TCP로 직접 폴링 → gRPC → C# 크롤러 → PostgreSQL.
기존 Experion OPC UA 데이터 경로를 HC900 직접 통신으로 대체.

- industrial-comm/cpp: C++ Modbus 게이트웨이 (gRPC 서버)
- src: C# .NET 8 ASP.NET Core 크롤러 + 웹 UI (3-Layer)
- mcp-server: Python FastMCP (RAG/NL2SQL/P&ID)
- 다중 컨트롤러(N-Controller) 지원

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-03 20:28:14 +09:00

2.6 KiB

Phase 0 — 골든 평가셋 + 모델 사다리

byOPUS 플랜(ReferenceSources/.../plans/online-lora-...-byOPUS.md) Phase 0. 이후 모든 변경(무학습 레버·LoRA·DPO)의 회귀 게이트이자, 모델 선택의 측정 도구.

구성

파일 역할
golden.jsonl 골든셋(현재 40문항). 5 카테고리
run_eval.py 러너 — 카테고리별 채점 + fabrication rate + 회귀 비교
models.json 모델 사다리 정의(4B→8B→14B→35B)
results/ 실행 결과 JSON(회귀 baseline)

카테고리 (무엇을 측정하나)

카테고리 측정 채점
nl2sql 자연어→SQL (production SQL_SYSTEM_PROMPT 그대로) 필수 substring 포함 + 금지패턴(time_bucket, sub_area trap) 미포함
tool_call 의도→도구 라우팅 도구명 일치
abstain 헛소리방지 — 근거 없을 때 거부 거부표현 有 + 창작 無 → fabrication_rate 산출
scaffold 사고 패턴 — 제어판단 5단계 절차 제어변수→현재값→설정치→제약→판단 순서 준수
grounding 컨텍스트 충실 추출 정답 토큰 포함

abstain/scaffold가 LoRA로 가려는 "헛소리방지·운전자 사고패턴"의 직접 지표.

실행

cd mcp-server/eval

# 1) 오프라인 구조검증 (LLM 불필요)
python run_eval.py --lint

# 2) 단일 모델 (vLLM :8001 떠 있어야 함)
python run_eval.py --model Qwen3-8B --base-url http://localhost:8001/v1

# 3) 모델 사다리 — 한 번에 하나씩 띄우는 환경이면 현재 rung만 --model 로 반복,
#    결과는 results/ 에 모델명으로 쌓임. 여러 rung을 다른 포트로 동시에 띄우면:
python run_eval.py --models models.json

# 4) 회귀 비교 (이전 결과 대비 PASS→FAIL 검출)
python run_eval.py --model Qwen3-8B --baseline results/qwen3-8b_2026XXXX.json

디코딩은 Phase 1 결정성 원칙대로 temperature=0, seed=42 고정(옵션으로 변경 가능).

모델 선택 게이트 (Phase 0.4)

  • 같은 골든셋·프롬프트로 사다리를 돌려 합격선 넘는 最小 dense 모델 채택.
  • 권장 합격선(초안, 데이터로 조정): overall ≥ 90%, fabrication_rate ≤ 5%, tool_call ≥ 95%, scaffold ≥ 90%. 미달 시 한 단계 큰 rung으로.
  • 대형(35B)은 합격 기준선 + 교사/judge 용도로 보존.

키우기

  • 40 → 50~100문항으로 확장(특히 abstain·scaffold). 한 줄 = 한 문항(JSONL).
  • 채점 프롬프트(TOOL_ROUTING/GROUNDING/SCAFFOLD)는 Phase 2 Verifier·Rule 코퍼스의 초안 — 여기서 다듬어 그대로 승격.