TL;DR
- DuckDB에서 SQL로 체스 수 생성과 평가를 직접 수행하는 실험적 체스 엔진으로, 분석 데이터베이스를 게임 트리 탐색에 활용할 수 있는지 탐구함.
- 실행 엔진으로 DuckDB WASM, DuckDB Native(서버), DFS JS Engine을 선택할 수 있으며, WASM 제한 모드에서는 메모리 한도가 4GB임.
- 탐색 전략으로 재귀 공통 테이블 식(Recursive CTE), 배치 PVS(Batched PVS), 미니맥스(Minimax)를 제공하며, 재귀 CTE는 최대 탐색 깊이 3을 넘으면 실용적이지 않음.
- 알파-베타 가지치기, 수순 정렬, 전치 테이블(TT), 위치 점수표(PST), 킬러·히스토리 휴리스틱과 여러 손실 가지치기 기법을 설정할 수 있음.
- SQL 쿼리와 비용을 살펴보는 프로파일링 기능, 게임 기록 검토·PGN 내보내기·디버그 로그 복사 기능을 제공함.
Quack-Mate란?
- Quack-Mate는 DuckDB 내부에서 SQL로 수 생성과 평가를 수행하는 실험적 체스 엔진임.
- 분석 데이터베이스를 게임 트리 탐색에 활용할 수 있는지 탐구함.
- 기술 설명
- GitHub 저장소
- 엔진의 추론 오류로 보이는 수가 나오면 이동 기록에서 디버그 로그를 복사해 GitHub에 새 버그 보고서를 제출할 수 있음.
엔진과 탐색 설정
- 백 플레이어와 흑 플레이어 각각의 플레이어 유형으로 사람, DuckDB WASM, DuckDB Native(서버), DFS JS Engine을 선택할 수 있음.
- 탐색 전략은 재귀 공통 테이블 식(Recursive CTE), 배치 PVS(Batched PVS), 미니맥스(Minimax)를 포함하며, 흑 플레이어 설정에는 Standard JS 미니맥스도 표시됨.
- 최대 깊이는 인공지능이 탐색하는 반수(ply) 수를 설정함.
- 최대 깊이 QS는 조용하지 않은 포지션의 캡처를 안정화하기 위해 최대 깊이에 더해 탐색하는 반수 수를 설정함.
- 재귀 CTE 전략은 최대 깊이 3을 넘으면 실용적이지 않음.
- 스레드 수, 알파-베타 가지치기, 수 제안, 수 되돌리기, 시작 및 일시 정지 기능이 제공됨.
최적화와 프로파일링
- 선택 가능한 수순 정렬 휴리스틱은 MVV-LVA, 전치 테이블(TT), 위치 점수표(PST), 킬러 휴리스틱, 히스토리·버터플라이 휴리스틱임.
- 손실 가지치기 기법은 역방향 무용성 가지치기(RFP), 정방향 무용성 가지치기(FFP), 늦은 수 감소(LMR), 늦은 수 가지치기(LMP)임.
- 게임 개요와 프로파일링 탭에서 SQL 쿼리와 쿼리 비용을 살펴볼 수 있음.
제한 모드와 게임 기록
- 현재 DuckDB WASM 제한 모드에서는 메모리가 4GB로 제한되어 탐색 깊이와 멀티스레딩이 제한됨.
- 더 높은 탐색 깊이와 고성능 DuckDB Native 백엔드를 사용하려면 GitHub 저장소를 방문해 로컬에서 실행해야 함.
- 게임 기록 탐색 그래프에서 노드를 선택해 해당 포지션을 검토할 수 있으며, 선택한 지점부터 다시 진행하거나 취소할 수 있음.
- PGN 다운로드 및 복사, 디버그 로그 복사 기능을 제공하며, 게임 검토와 정확도 분석은 게임 종료 후 이용 가능함.
- 화면 크기가 1200px × 640px보다 작으면 엔진이 제대로 작동하지 않으므로 브라우저 창을 확대하거나 데스크톱 기기를 사용해야 함. 브라우저 확대·축소로 해상도를 높이는 방법도 안내함.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요