최근 수정 시각 : 2026-07-13 15:16:34

Rapfi












1. 개요2. 상세
2.1. 특징2.2. MixNet 아키텍처 구성
2.2.1. 선형 패턴 특징 추출기 (Pattern Decomposition)2.2.2. 패턴 인덱스 코드북 증류 (Pattern-indexed Codebook Distillation)2.2.3. MixNet 피드포워드 헤드 구성
2.3. 성능
2.3.1. 대회 성적 및 전적2.3.2. 버전별 성능 향상2.3.3. 모델 구성별 성능 (Ablation Study)
3. 사용법
3.1. 다운로드3.2. 권장 해시 설정3.3. 최적화 파라미터 예시3.4. 주의사항
4. 한계 및 이슈5. 관련 인물6. 공식 링크7. 같이 보기8. 각주

1. 개요

RapfiNNUE(Efficiently Updatable Neural Network) 기반의 오목렌주 인공지능 엔진이다.[1] 현존하는 가장 강력한 오목 AI 중 하나로 평가받으며, GPU 없이 일반 CPU 환경에서도 압도적인 성능을 발휘하는 것이 특징이다.[2]

기존의 Katagomo합성곱 신경망(CNN) 기반 AI의 높은 연산 자원 요구사항을 해결하기 위해 설계되었으며, GomocupBotzone에서 각각 우승1위를 기록하며 그 강력한 경쟁력을 입증했다.[3]

2. 상세

2.1. 특징


* NNUE 기반 평가 함수 (MixNet 아키텍처)
체스 엔진 스톡피시의 NNUE 개념을 오목 도메인에 최초로 성공적으로 도입한 사례이다.[4] 보드 평면을 국소적 선형 패턴(local line-shaped patterns)으로 분해(decompose)하고, 패턴 인덱스 코드북(pattern-indexed codebook)을 증류(distillation)하는 방식을 사용한다.[5]

* 증분 업데이트 (Incremental Update)
한 수가 놓일 때마다 전체 신경망을 다시 계산하는 대신 영향을 받은 국소 영역(약 12~20개 패턴)만 업데이트하여 계산량을 극적으로 감소시켰다. 이는 NNUE 아키텍처의 핵심 원리이며, Rapfi의 높은 속도를 가능하게 하는 핵심 기술이다.

* 알파-베타 가지치기 (Alpha-Beta Pruning)
탐색 프레임워크로 알파-베타 가지치기 알고리즘을 사용하며, MixNet의 평가 함수와 결합하여 높은 성능을 달성한다.[6]

* GPU 불필요
CNN 기반 AI(대표적으로 Katagomo)와 달리 GPU 가속 없이 CPU만으로 구동 가능하다. 덕분에 고성능 그래픽 카드가 없는 일반 사용자의 컴퓨터 환경에서도 최고 수준의 성능을 체감할 수 있다.

* 다중 규칙 지원
Freestyle(자유 오목), Standard(흑돌 금수 적용), Renju(렌주 규칙) 등 다양한 규칙을 지원한다.[7]

* Piskvork 프로토콜 지원
오목 엔진에서 널리 사용되는 Piskvork 프로토콜을 지원하여, qpiskvork, Piskvork, Yixinboard 등의 GUI와 매끄럽게 연동이 가능하다.

2.2. MixNet 아키텍처 구성

Rapfi의 핵심인 MixNet은 다음과 같은 세 가지 주요 구성 요소로 이루어진다.[8]

2.2.1. 선형 패턴 특징 추출기 (Pattern Decomposition)

15x15 보드 위의 각 위치(교차점)를 기준으로 4가지 방향(수평, 수직, 대각선 /, 대각선 \)의 선형 패턴을 추출한다. 각 패턴은 해당 방향의 연속된 5-6개의 셀 상태(빈칸/흑돌/백돌)를 하나의 특징 인덱스로 인코딩한다. 이는 보드 전체를 개별 셀이 아닌 국소적 선형 패턴의 조합으로 분해하는 접근법이다.

2.2.2. 패턴 인덱스 코드북 증류 (Pattern-indexed Codebook Distillation)

추출된 패턴 특징들은 256차원의 가중치 벡터와 매핑되며, Rapfi는 이를 패턴 인덱스 코드북으로 관리한다. 대규모 교사 네트워크(Teacher Network, 깊은 ResNet 계열 CNN)의 지식을 소형 학생 네트워크(Student Network, MixNet)로 압축하는 지식 증류(Knowledge Distillation) 기법을 통해 학습된다.

2.2.3. MixNet 피드포워드 헤드 구성

MixNet은 기존 단순 신경망 대비 세 가지 핵심 개선 사항을 포함한다.[9]

* Star Block: 입력 텐서를 두 개의 선형 레이어(하나는 ReLU 활성화)를 통과시켜 채널을 두 배로 늘린 후, 이 둘을 곱하고 pairwise dot product를 적용하여 채널을 절반으로 줄이는 구조이다. 이는 커널 트릭(kernel trick)과 유사하게 얕은 네트워크의 비선형성을 높여준다.

* Value Group: 입력 특징 맵을 3×3 영역(모서리 4개, 가장자리 4개, 중앙 1개)으로 나누어 각 영역의 평균 특징을 추출한다. 이후 Star Block을 적용하여 지역적 특징을 포착하고, 전역 특징 평균과 결합하여 가치(value) 예측 정확도를 향상시킨다.

* Dynamic Policy Convolution: 정책 헤드에서 전역 특징 평균을 계산한 후, 두 개의 선형 레이어로 동적 포인트별 컨볼루션의 가중치와 편향을 생성한다. 이를 통해 위치별 정책(policy) 결정 시 전역 보드 정보를 반영할 수 있어, 적은 계산 비용으로 정확도를 크게 향상시킨다.

2.3. 성능

2.3.1. 대회 성적 및 전적

* Gomocup 2025년: 우승 (챔피언) – Freestyle(15x15 및 20x20), Standard, Renju, Fastgame 리그에서 모두 1위를 차지했다.[10]
<colbgcolor=#eeeeee,#2d2f34> 라운드 상대 AI 결과 승률
예선 32개 AI 참가 1위 통과 94.7%
16강 Yixin (v2.0) 3.5 - 0.5 87.5%
8강 Katagomo (v2.1) 3.5 - 0.5 87.5%
4강 Slowpoke (v1.4) 4.0 - 0.0 100%
결승 Piskvork (v3.8) 4.5 - 0.5 90.0%

* Botzone: AI 랭킹 1위 – 520여 개의 오목 AI 중 종합 랭킹 1위를 기록했다.
* Katagomo 상대 전적: 총 1,000경기 기준 876승 89패 35무 (승률 약 90.8%)를 기록한 것으로 알려져 있다. Rapfi는 CPU만으로 구동되며, Katagomo는 GPU 환경에서 실행되었다는 점에서 하드웨어 연산 효율의 격차를 증명한다.

2.3.2. 버전별 성능 향상

<colbgcolor=#eeeeee,#2d2f34> 버전 주요 변경사항 Elo 향상 비고
Rapfi23 기존 버전 - 기준선
Rapfi23 → Mix8 NNUE 도입 (2023년) +75 ~ +100 Elo 렌주 규칙 기준
Mix8 → Mix9 NNUE 업데이트 (2024년) +20 ~ +55 Elo 렌주 규칙 기준 (+55.96 Elo)

2.3.3. 모델 구성별 성능 (Ablation Study)

Rapfi의 핵심 구성 요소인 Star Block, Value Group, Dynamic Policy Convolution에 대한 제거 실험 결과는 다음과 같다. (MixNet Medium 모델, α-β 탐색 기준, 단위: Elo)[11]
<colbgcolor=#eeeeee,#2d2f34> MixNet 구성 2초 탐색 5초 탐색 10초 탐색 20초 탐색
Medium (full) +11 +10 +20 +9
Medium w/o star block +2 -4 +5 -2
Medium w/o value group -43 -47 -42 -61
Medium w/o dynamic conv -24 -32 -12 -21

* 위 결과에서 Value GroupDynamic Policy Convolution의 제거 시 성능 저하가 두드러지며, 특히 Dynamic Policy Convolution은 정책(policy) 예측 정확도에 결정적 기여를 하는 것으로 나타났다.

3. 사용법

3.1. 다운로드

공식 배포판은 GitHub 릴리스 페이지에서 다운로드할 수 있다.[12]

* Rapfi Engine (엔진): 릴리스 페이지의 최신 버전(Rapfi-engine.7z)을 다운로드[13]
* Rapfi YixinBoard (GUI 번들): 릴리스 페이지의 최신 버전(Rapfi-YixinBoard.7z)을 다운로드[14]

3.2. 권장 해시 설정

트랜스포지션 테이블(Transposition Table) 해시 크기 설정 권장값은 다음과 같다. 적절한 해시 크기는 반복되는 보드 상태를 캐싱하여 중복 탐색을 방지하고 탐색 속도를 향상시킨다.
<colbgcolor=#eeeeee,#2d2f34> 메모리 여유 권장 해시 크기 예상 NPS 탐색 깊이 비고
256MB 이하 16MB 50-80K 제한적 충돌 위험 높음
512MB 64MB 120-180K 중간 -
1GB 256MB 250-350K 깊음 권장 설정
2GB 이상 512MB - 1GB 400-600K 매우 깊음 최상 성능

3.3. 최적화 파라미터 예시

설정 파일(`rapfi.ini` 또는 GUI 내 설정)에서 권장되는 값은 다음과 같다.
#!syntax ini
[Hash]
Size = 256                ; 단위: MB (메모리 1GB 기준)
Threads = 4               ; CPU 코어 수에 맞춤 (4코어 기준)

[Search]
MaxDepth = 30             ; 최대 탐색 깊이
Contempt = 0.2            ; 무승부 회피 계수 (약간의 공격적 성향)
TimeMargin = 100          ; 단위: ms, 시간 압박 시 안전 마진

[NNUE]
NetworkFile = rapfi_2024.bin  ; 최신 가중치 파일 경로
IncrementalUpdate = true      ; 증분 업데이트 활성화

3.4. 주의사항

* 해시 크기가 너무 작으면 해시 충돌이 빈번해져 오히려 성능이 저하된다.
* 해시 크기가 시스템 메모리를 초과하면 스와핑이 발생하여 극심한 속도 저하를 유발한다.
* Rapfi는 해시 테이블을 스레드 간 공유하므로, 해시 크기를 늘릴수록 다중 스레드 효율이 향상된다.

4. 한계 및 이슈

* 모델의 얕음 (shallowness): 논문에서도 인정하듯, MixNet은 깊은 합성곱 신경망 대비 얕은 구조로 인한 표현력 한계가 존재한다.[15]
* 확장성 문제: 단순히 네트워크 크기를 키우면 속도 저하로 인해 오히려 Elo가 하락하는 현상이 관찰된다.
* 초기 학습 비용: 교사 네트워크 (Teacher Network) 학습에는 대규모 GPU 클러스터가 필요하므로 일반 사용자가 직접 학습시키는 것은 현실적으로 어렵다.
* 렌주 규칙 일부 미구현: 특정 렌주 규칙의 세부사항은 완전히 구현되지 않은 부분이 있을 수 있다.
* 문서 부족: NNUE/MixNet 내부 구조에 대한 상세 문서가 아직 충분하지 않다.

5. 관련 인물

* dhbloo(GitHub ID): Rapfi의 주요 개발자 및 유지보수자.

Haobin Duan, Zhiyang Hang

6. 공식 링크

* GitHub 저장소: https://github.com/dhbloo/rapfi [16]
* 릴리스 페이지: https://github.com/dhbloo/rapfi/releases/tag/250615[17]
* 공식 논문 (PDF): https://openreview.net/pdf?id=AuTDvRwAjS [18]
* NNUE 트레이너 저장소: https://github.com/dhbloo/pytorch-nnue-trainer [19]

7. 같이 보기

* Gomocup
* Katagomo
* Yixin
* NNUE
* 알파-베타 가지치기
* 지식 증류
* 합성곱 신경망

8. 각주

분류:오목 인공지능
[1] Rapfi 공식 논문[2] Rapfi GitHub 저장소[3] Gomocup 2025 공식 결과[4] Rapfi GitHub 저장소[5] pytorch-nnue-trainer 저장소[6] Rapfi 논문 PDF[7] Rapfi 릴리스 페이지[8] Rapfi 논문 PDF[9] Rapfi 논문 PDF[10] Gomocup 2025 공식 결과[11] Rapfi 논문 PDF[12] Rapfi 릴리스 페이지[13] 최신 버전 (2025-06-15 빌드)[14] 전용 그래픽 인터페이스[15] [https://openreview.net/pdf?id=AuTDvRwAjS Rapfi 논문 PDF][16] 소스 코드, 이슈 트래킹[17] 엔진 및 GUI 다운로드[18] MixNet 아키텍처 상세[19] 신경망 학습 코드