Repository navigation
Encoder Free Learning KO
English · 학습 전 계획 · 선택 기록 · 최종 결과
이번에 실제로 Go에서 학습한 것은 요청과 후보 문서의 관련성을 매기는 작은 선형 모델이다. Laya 가중치·인코더·교사 출력은 사용하지 않는다. 기존 난이도 라우터 및 Laya 3진 헤드 실험과 별도다. 모델을 훈련하고 로컬 CLI에서 힌트로 사용하는 경로까지 구현했지만, 일반적인 코드 검색에 쓸 만하다는 결론은 아직 내릴 수 없다.
문서 두 개가 같은 단어를 다른 순서로 쓴다.
cache keeps active entries and removes inactive entriescache removes active entries and keeps inactive entries
요청의 retain/discard와 문서의 keeps/removes 사이 관계를 단어·연속 두 단어의 조합으로 학습한다. 어순 없는 BM25는 위 문서의 점수가 같다. 20개 도메인에서 학습하고 다른 6개에서 선택, 또 다른 6개에서 최종 평가했다. 문법과 동사는 모든 split에서 공유한다. 새 명사에 같은 규칙을 옮기는 통제 실험이며 새 문법·동사·한국어·자연스러운 실제 요청에 대한 검증은 아니다. 단일 작성자의 합성 템플릿이라는 한계가 크다.
학습 80요청/40문서, 검증 24요청/12문서, 최종 24요청/12문서. 최종 문서는 학습 음성으로도 사용하지 않았다. 이미 결과를 확인한 최종 세트는 다음 개선부터 개발용이다.
| 모델 | 파일 | 첫 후보 정답 (24건, seed 1729 / 2718) | 평균 검증 (1729 / 2718) | 사전 기준 |
|---|---|---|---|---|
| BM25 | 가중치 없음 | 12 / 12 | 1.500 / 1.500 | 비교군 |
| FP32 | 32,792B | 24 / 24 | 1.000 / 1.000 | 통과 |
| INT8 PTQ | 8,216B | 24 / 24 | 1.000 / 1.000 | 통과 |
| 3진 PTQ | 1,215B | 15 / 12 | 1.583 / 1.917 | 실패 |
| 3진 STE 학습 | 1,274 / 1,272B | 16 / 15 | 1.542 / 1.625 | 실패 |
기준은 recall@4 ≥95%, 평균 검증 ≤BM25의 80%였다. INT8은 이 작은 시험에서 BM25 대비 33.3% 적은 검증을 요구했다. 3진은 크기가 작아도 검증 비용이 증가해 채택하지 않았다. CLI의 BM25 교대 정책을 적용해도 INT8 평균은 1.0이고 3진 학습은 1.583/1.625로 개선 근거가 없다. 모든 검증 횟수는 정답 ID를 아는 oracle 기준이며 실제 LLM 호출 절감이 아니다.
평가 후 추가한 비학습 진단 비교군은 retain→keeps, discard→removes를 명시적으로 치환하고 단어·bigram 교집합을 센다. 18/24, 평균 1.25였다. 이 비교군은 선택에 사용하지 않았고 사전등록 결과도 아니다. 더 강한 문법별 규칙만으로 이 좁은 문제를 풀 여지도 있으므로 이 자료만으로 ‘모델이 반드시 필요하다’고 주장하지 않는다.
mkdir -p .cache/semantic-learning
go run ./cmd/riido-hinttrain --out .cache/semantic-learning/local-train
go run ./cmd/riido-hinttrain --stage check \
--selection .cache/semantic-learning/local-train/selection.json \
--out .cache/semantic-learning/local-check기존 출력 폴더는 덮어쓰지 않는다. check는 결과를 기록하는 연구 명령이며 종료 코드만으로 모델 승인 여부를 판단하면 안 된다. results.json의 모델별 Pass와 적용 범위를 확인해야 한다. CI 통과는 이 연구 모델의 실제 업무 성능을 보장하지 않는다.
실험 모델을 선택적으로 사용하려면:
go run ./cmd/riido-hints \
--model .cache/semantic-learning/local-train/int8-1729.hbin \
--sha256 7db5ca98a5fd4426cead07cce2bef897ccf164d3e60ecd731c8ef598f1ed65e8 \
< examples/hints/request-model.json위 해시는 이번 버전/자료로 생성한 seed1729 INT8 파일이다. 다른 버전의 학습 결과는 선택 기록의 해시와 먼저 비교한다. 예시는 이미 관찰한 최종 데이터의 한 요청이며 새 품질 시험이 아니다. 모델 없이 실행하면 BM25만 사용한다. 외부 hints와 --model을 동시에 지정할 수 없다. 모든 결과는 unverified이며 모델 해시를 포함한다. 모델 입력은 최대 256후보, 문서/요청별 4096B·64단어로 제한한다. 초과 시 자르지 않고 bm25_model_input_out_of_scope로 BM25에 복귀한다. SHA 불일치/손상 파일은 오류다.
- 8192개 계수. unigram/bigram 요청-문서 조합을 부호 있는 해시 특징으로 변환하고 교집합 비율을 추가한다. float shadow, softmax cross-entropy, SGD+weight decay. 2seed×2학습률×FP32/3진 STE=8후보, 각60epoch. 검증 평균 순위, 동점이면 NLL로 epoch/config를 선택했다.
- 3진 forward는 전역 평균 절대 가중치 scale 및 0.7배 임계값, backward는 identity STE다. scale은 미분하지 않는다. 이번 실패는 이 방법의 결과이며 모든 3진 학습의 불가능성을 뜻하지 않는다. 다음에는 가중치 크기 차이와 전역 scale 손실을 분리해 볼 수 있다.
- 파일은 FP32/INT8 또는 presence bitmap+nonzero sign bits다. 런타임은 8192개 float64(계수만 64KiB)로 풀어 reference score를 계산한다. 압축 파일 크기는 실행 중 계수 메모리나 3진 전용 연산 성능이 아니다. GPU/SIMD 가속 주장은 없다.
- 학습 전 plan/data SHA를 기록했고 선택 모델 8개를 저장한 뒤 final을 읽었다. final 파일 자체가 없는 디렉터리로 학습을 반복해 8개 모델 해시가 모두 재현됐다. 모델 decode 후 계수 동일성도 검사했다.
- Apple M4 Pro, Go1.27.1: 학습 전체 wall2.34초/userCPU1.18초, 최대RSS26,607,616B(25.4MiB), swap0. 단일 INT8 CLI 실행 최대RSS5,701,632B(5.44MiB), wall0.37초(프로세스 시작/로딩 포함), swap0. 이는 warm p95나 실제 에이전트 전체 메모리가 아니다. GPU를 사용하지 않았다.
코드와 원본 합성 데이터는 프로젝트 Apache-2.0 조건으로 공개한다. 외부 모델/데이터를 복사하지 않았다. 모델 파일은 GitHub에서 제외하고 현재 로컬에 보존한다. 새 HF 배포는 이 형식의 공개 패키지 검증기를 완성한 다음 진행한다. 현재 성공은 통제 실험에 한정되며 전체 목표는 계속 진행 중이다.
riidolaya is experimental. No demonstrated Codex cost savings; repository selection is preview-only.
riidolaya는 실험 단계입니다. Codex 절감은 미입증이며 저장소 선택은 preview입니다.
English README · 한국어 README · Versioned Wiki sources / Wiki 원본
이전 연구 안내 펼치기 / Earlier research
- 실제 이어 학습 V3 · 한국어 · Actual V3 training · English
- 진행·완료 보고·질문100건 결과 KO · 100-case results EN
- 라벨·이모지·상태 힌트 KO · Content/state hints EN
- 개발 진행·완료 보고·질문 pilot KO · Development pilot EN
- 작은 검증 기록 KO · Compact evidence EN
- 현재 개발 자료 35개·다음 학습 조건 · 35-row data and next training gates
- 개발용 학습 자료 2개 · Two qualified training requests
- 첫 두 과제 실제 관측 · First two actual observations
- 전체 사용법 KO · Full usage EN
- 작은 동작 힌트 KO · Small hints EN
- 설명 보강 비교76 · Caption diagnostic76
- Go 압축 가중치78 · Packed Go weights78
- 공개 함수 동작 검증 · Public function verification
- 다음 학습 자료 준비 · Training data preparation
- 동작에서 학습 정답·실제 학습79 · Grounded labels and actual fit79
- 소스 동작 관찰 · Source observations
- 저장 크기와 RAM · Storage and RAM
- 라이선스 · Licensing
- 시점별 기록 원문 / Chronological history
- 전체 연구 링크 / Full research index
- 문서 목록 / Documentation