SGF 기보만 학습하면 현재 모델이 실제로 자주 틀리는 국면이 데이터에 충분하지 않을 수 있다. on-policy 파이프라인은 모델 대국 로그에서 국면을 꺼내 KataGo로 다시 분석하고, 교정 데이터를 다음 LoRA 학습에 넣는다.
로그에서 국면 선택
대국 SQLite의 moves 테이블에서 특정 색의 첫 번째 시도와 정상 착수·PASS를 시간순으로 읽는다. 초반 돌 수가 너무 적은 국면은 제외하고, 판 문자열을 19×19 상태로 복원한다. 개인 식별 정보나 닉네임은 학습 데이터에 넣지 않는다.
KataGo 라벨
각 국면에 현재 돌, 규칙, 덤을 전달해 top-k와 집 차이를 받는다. 서버 착수와 VLM 선호수가 top-1/top-k에 포함됐는지 별도 통계로 남긴다. 모델이 PASS한 장면은 KataGo도 PASS인지, PASS 손실이 임계값보다 큰지를 확인해 의미 있는 오류만 보존한다.
학습 데이터와 진단을 분리
학습 JSONL에는 정렬된 텍스트 판과 KataGo 최선수를 넣는다. `stats.json`에는 서버·VLM 일치율, PASS 손실과 이유를 기록한다. 학습 성능이 좋아 보여도 진단 지표가 나빠지면 데이터 혼합이나 정책 guard를 다시 봐야 한다.
야간 자동화
완료된 KST 날짜 중 아직 처리하지 않은 하루를 선택하고, lock으로 중복 실행을 막는다. dataset 생성이 성공하고 행이 있을 때만 새 LoRA를 학습한다. 결과는 날짜별 어댑터로 저장하되 운영 모델을 자동 교체하지 않는다.
관련 소스
- `vlm_server/dataset_onpolicy.py`: SQLite→KataGo 라벨
- `scripts/nightly_sqlite_train.py`: 날짜 선택, lock, 학습
- `scripts/katago_analyze.py`: 교사 분석 연동
댓글
0개아직 댓글이 없습니다.