Lichess PGN 데이터 전처리 과정
2026년 5월 · 개발 노트
My Chess Bot을 학습시키기 위해 5,600만 개 이상의 체스 포지션이 필요했습니다. 이 데이터를 어떻게 만들었는지 설명합니다.
데이터 출처: Lichess 공개 데이터베이스
Lichess는 매월 수백만 건의 체스 게임 기록을 PGN(Portable Game Notation) 형식으로 공개합니다. 라이선스는 CC0(퍼블릭 도메인)으로, 누구나 자유롭게 사용할 수 있습니다.
전처리 단계
- PGN 파싱: python-chess 라이브러리로 각 게임을 수순으로 분해
- 게임 필터링: 양측 플레이어 모두 1800+ Elo인 게임만 선택
- 포지션 추출: 각 수 이전의 보드 상태를 18×8×8 텐서로 변환
- Stockfish 평가: 각 포지션을 depth=6으로 평가 → centipawn 값 획득
- 정규화: tanh(centipawn / 400) 적용 → -1 ~ +1 범위로 압축
- 저장: NumPy .npz 형식으로 청크 단위 저장 (청크당 약 50만 포지션)
규모
| 항목 | 수치 |
| 처리한 게임 수 | 수백만 판 |
| 최종 포지션 수 | 약 56,450,000개 |
| 저장 크기 | 약 30GB |
| Stockfish 평가 소요 | 약 4시간 (병렬 처리) |
← 블로그 목록으로 · 데이터셋 카드 →