From c769ad14adabd7c8f211212a166b6f1a2b1855cf Mon Sep 17 00:00:00 2001 From: Hyungi Ahn Date: Sat, 16 May 2026 19:02:55 +0900 Subject: [PATCH] =?UTF-8?q?fix(search):=20classifier=20LLM=5FTIMEOUT=5FMS?= =?UTF-8?q?=205s=20=E2=86=92=2015s=20(Mac=20mini=2026B=20concurrent=20load?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR #20 (f139945) GPU LLM 제거 후 Mac mini 26B 가 triage + classifier + chat + STT 동시 흡수. classifier_service hardcoded 5s timeout (config.yaml `timeout: 10` 무시) 이 동시 부하 시 빈번 초과 → CIRCUIT_THRESHOLD(5) 누적 → circuit 60s open → verdict=None → refusal_gate conservative_refuse(no_classifier) 경로. 실측: 정상 부하 단독 호출 = 2.3s (500 prompt + 49 completion tokens), 동시 호출 시 ev_ms/synth_ms 가 15s 까지 누적 — 5s 한계가 architectural mismatch. 15s 로 상향 → classifier 정상 verdict 반환 → refusal_gate 가 classifier 의 sufficient/insufficient 사용 (conservative fallback 회피). 본 fix 는 [[2026-05-21 Mac mini 26B 1주 부하 측정]] observation 의 회귀 결과로 자연 정리. config.yaml `classifier.timeout: 10` 와는 별 변수 — 본 1줄은 코드 내 한계, config 항목은 별 PR (Config-Driven-Timeout-1) 에서 통합 검토. 발견 경로: PR-Hermes-Docsrv-Search-1 Layer 1 fixture (curl direct, 10/10 ask) 가 conservative_refuse(no_classifier) 8건 + timeout 2건 보고. fastapi log "classifier circuit OPEN for 60s" + "classifier timeout" 페어 발견. --- app/services/search/classifier_service.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/services/search/classifier_service.py b/app/services/search/classifier_service.py index c42ebdf..a0c43ef 100644 --- a/app/services/search/classifier_service.py +++ b/app/services/search/classifier_service.py @@ -22,7 +22,7 @@ from core.utils import setup_logger logger = setup_logger("classifier") -LLM_TIMEOUT_MS = 5000 +LLM_TIMEOUT_MS = 15000 CIRCUIT_THRESHOLD = 5 CIRCUIT_RECOVERY_SEC = 60