Skip to content

Commit e046c95

Browse files
unamedkrclaude
andcommitted
docs: Phase A-2 large doc stress test — M3 execution guide
Addresses concern: is RLV's 19/20 result an artifact of small document size (35K chars, 3 articles)? This guide runs the same pipeline on 1.3MB wikitext (63 articles, 2754 chunks, ~310K tokens). Success criteria: A (breakthrough): ≥ 85% (17/20) B (acceptable): ≥ 70% (14/20) C (needs rework): < 70% Dry-run locator accuracy: 7/8 on keyword-only (no LLM). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent a922806 commit e046c95

1 file changed

Lines changed: 143 additions & 0 deletions

File tree

Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,143 @@
1+
# Phase A-2: 대규모 문서 스트레스 테스트 — M3 실행 가이드
2+
3+
> **목적**: RLV 10/10 결과가 작은 문서(35K chars)에 대한 overfitting인지 검증
4+
> **방법**: 1.3MB 문서 (37× 규모)에서 20개 질문 실행
5+
> **기대 시간**: ~80분 (Phi-3.5 Q8_0, 20질문 × ~4분)
6+
7+
---
8+
9+
## 배경
10+
11+
현재 RLV 성과:
12+
- **Acme** (1.9K chars, 5 sections): 7/7 ✅
13+
- **Wikitext-small** (35K chars, 3 articles, 23 chunks): 19/20 ✅
14+
15+
**우려**: 문서가 작아서 BM25 IDF가 쉽게 작동하고, 토픽이 3개뿐이라 locator가 쉽게 구별.
16+
17+
**검증**: 1.3MB wikitext2_test.txt (63개 기사, 2754 chunks, ~310K tokens)에서 동일 파이프라인 테스트.
18+
19+
---
20+
21+
## 실행 순서
22+
23+
### 1. 코드 최신화
24+
```bash
25+
cd ~/dev/quantcpp_test # 또는 프로젝트 경로
26+
git pull origin main
27+
```
28+
29+
커밋 `a922806` (test: add 1.3MB large-doc stress test) 포함 확인.
30+
31+
### 2. 모델 확인
32+
```bash
33+
ls -lh models/Phi-3.5-mini-instruct-Q8_0.gguf
34+
# 3.8GB — 없으면 다운로드:
35+
# curl -L -o models/Phi-3.5-mini-instruct-Q8_0.gguf \
36+
# "https://huggingface.co/bartowski/Phi-3.5-mini-instruct-GGUF/resolve/main/Phi-3.5-mini-instruct-Q8_0.gguf"
37+
```
38+
39+
### 3. unified 서버 빌드
40+
```bash
41+
cc -O2 -o build_metal/quant-server-unified tools/quant_server_unified.c -lm -lpthread
42+
```
43+
44+
### 4. 서버 동작 확인 (30초)
45+
```bash
46+
./build_metal/quant-server-unified models/Phi-3.5-mini-instruct-Q8_0.gguf -p 8421 -j 8 &
47+
sleep 5
48+
curl -s http://127.0.0.1:8421/v1/chat/completions \
49+
-H "Content-Type: application/json" \
50+
-d '{"model":"default","messages":[{"role":"user","content":"What is 2+2?"}],"max_tokens":10,"temperature":0}' | python3 -m json.tool
51+
pkill -f quant-server-unified
52+
```
53+
54+
기대 출력: `"content": "4"` (또는 유사한 정확한 답변)
55+
56+
### 5. 기존 테스트 regression 확인 (선택, ~15분)
57+
```bash
58+
# 기존 19/20 결과 유지되는지 확인
59+
python3 bench/rlv/eval/eval_wikitext.py --systems rlv
60+
```
61+
62+
### 6. 대규모 문서 스트레스 테스트 실행
63+
```bash
64+
# 전체 20문제 (~80분 예상)
65+
python3 bench/rlv/eval/eval_wikitext_large.py 2>&1 | tee /tmp/eval_large.log
66+
```
67+
68+
시간이 부족하면 5개만 먼저:
69+
```bash
70+
# 빠른 확인 (5문제, ~20분)
71+
for i in 1 4 8 12 16; do
72+
python3 bench/rlv/eval/eval_wikitext_large.py --only $i
73+
done
74+
```
75+
76+
### 7. 실패 질문 디버깅
77+
```bash
78+
# 실패한 질문 번호로 verbose 실행
79+
python3 bench/rlv/eval/eval_wikitext_large.py --only <번호> --verbose
80+
```
81+
82+
verbose 출력에서 확인할 것:
83+
- `[locator]` — 올바른 chunk를 골랐는지 (chunk_id와 head_text)
84+
- `[lookup]` — 올바른 문장을 선택했는지
85+
- `[verifier]` — CONFIDENT/UNSURE/CONTRADICTED 판정 근거
86+
- `[researcher]` — 재시도 횟수와 결과
87+
88+
---
89+
90+
## 질문 분포
91+
92+
| 카테고리 | 질문 수 | 기사 |
93+
|---|---|---|
94+
| 기존 회귀 체크 | 3 | Boulter, Du Fu, Kiss You |
95+
| 군사 역사 | 4 | Ise급 전함, Naktong 전투, 장갑함 |
96+
| 스포츠 | 4 | Rifenburg, Kershaw, Ben Amos |
97+
| 과학/기상 | 4 | Dvorak 기법, 1933 허리케인, 양서류 |
98+
| 문학/예술 | 3 | 이미지즘, Little Gidding, Portage |
99+
| 지리/역사 | 2 | NY Route 31B, Osbert de Bayeux |
100+
101+
난이도: single-hop 16개, multi-hop 4개
102+
103+
---
104+
105+
## 성공 기준
106+
107+
| 등급 | 정확도 | 의미 |
108+
|---|---|---|
109+
| **A (돌파)** | ≥ 17/20 (85%) | 대규모 문서에서도 RLV가 작동 — overfitting 아님 |
110+
| **B (양호)** | 14-16/20 (70-80%) | 기본은 작동하지만 locator 개선 필요 |
111+
| **C (미달)** | < 14/20 (< 70%) | 확장성 문제 심각 — 아키텍처 재설계 필요 |
112+
113+
### 비교 포인트
114+
- 기존 소문서: 19/20 = 95%
115+
- 대문서 목표: ≥ 85% (10% 이내 하락은 허용 — 37× 규모 증가 감안)
116+
117+
---
118+
119+
## 예상 실패 패턴
120+
121+
1. **Locator confusion**: 유사 토픽 기사 간 chunk 혼동 (예: 군사 기사들 간 "battle" 키워드 겹침)
122+
2. **BM25 IDF 약화**: 2754 chunks에서 일반 단어의 IDF가 낮아져 구별력 저하
123+
3. **Chunk 세분화**: paragraph chunker가 짧은 단락마다 chunk 생성 → 맥락 부족
124+
4. **LLM 호출 타임아웃**: 긴 문서의 gist 생성 + 다수 retry로 총 시간 초과
125+
126+
---
127+
128+
## 결과 커밋
129+
```bash
130+
# 결과를 phase3 문서에 기록하고 커밋
131+
git add bench/rlv/eval/eval_wikitext_large.py docs/phase3_rlv_challenge.md
132+
git commit -m "phase 3 phase-a2: large doc stress test results (1.3MB, 2754 chunks)"
133+
git push origin main
134+
```
135+
136+
---
137+
138+
## Dry-run 예비 결과 (이 머신에서 LLM 없이)
139+
140+
Locator keyword-only 정확도: **7/8 (87.5%)** on 2754-chunk doc.
141+
142+
단 1개 실패: "Clayton Kershaw drafted year" — "2006"이 다른 기사에도 등장 가능.
143+
BM25+RRF 하이브리드로 LLM 실행 시 개선 예상.

0 commit comments

Comments
 (0)