Lichess PGN 데이터 전처리 과정

2026년 5월 · 개발 노트

My Chess Bot을 학습시키기 위해 5,600만 개 이상의 체스 포지션이 필요했습니다. 이 데이터를 어떻게 만들었는지 설명합니다.

데이터 출처: Lichess 공개 데이터베이스

Lichess는 매월 수백만 건의 체스 게임 기록을 PGN(Portable Game Notation) 형식으로 공개합니다. 라이선스는 CC0(퍼블릭 도메인)으로, 누구나 자유롭게 사용할 수 있습니다.

전처리 단계

  1. PGN 파싱: python-chess 라이브러리로 각 게임을 수순으로 분해
  2. 게임 필터링: 양측 플레이어 모두 1800+ Elo인 게임만 선택
  3. 포지션 추출: 각 수 이전의 보드 상태를 18×8×8 텐서로 변환
  4. Stockfish 평가: 각 포지션을 depth=6으로 평가 → centipawn 값 획득
  5. 정규화: tanh(centipawn / 400) 적용 → -1 ~ +1 범위로 압축
  6. 저장: NumPy .npz 형식으로 청크 단위 저장 (청크당 약 50만 포지션)

규모

항목수치
처리한 게임 수수백만 판
최종 포지션 수약 56,450,000개
저장 크기약 30GB
Stockfish 평가 소요약 4시간 (병렬 처리)

← 블로그 목록으로 · 데이터셋 카드 →