
이 글의 목적
오목 AI 실험에 쓴 소스 코드를 공개합니다. 파일을 펼칠 때만 코드를 불러옵니다.
사용한 모델
- VLM: Hugging Face의 Qwen3-VL-8B-Instruct로 대국 25,413수를 뒀습니다. 지금 서버는 기본값인 Qwen3-VL-2B-Instruct로 떠 있습니다. 판 이미지와 글자 판을 함께 주고 "row col" 두 숫자를 받습니다.
- LoRA: peft, r=8, alpha=16. 이긴 쪽의 수만 모아 학습합니다. MPS에서는 fp16으로 돌아 손실이 NaN이 됐습니다.
- 로컬 AI: Qt 앱의 C++ AiPlayer와 웹의 ai.ts. 이기는 수, 막아야 하는 수를 먼저 보고, 나머지는 네 방향 점수를 더해 고르는 휴리스틱입니다.
- 엔진: 흑·백 같은 금수(삼삼·장목 금수, 사사 허용), 정확히 5목만 승리.
폴더 구성
- src: Qt6/C++ 오목 엔진, 로컬 AI, 판 화면, VLM 서버와 통신하는 TCP 클라이언트
- 루트의 .py: VLM 추론 서버(vlm_pva_server.py), 로그를 학습 데이터로 바꾸는 dataset_omook.py, LoRA 학습 train_vlm.py, 모델 내려받기
- scripts: VLM 좌표 확인과 글자 판 클라이언트
- omook-web: Next.js 웹 대국 화면, 엔진(board.ts), 로컬 AI(ai.ts), 기보 저장(db.ts), VLM 연결
서버 배포 설정, 감시·자동화 스크립트, 대국 로그와 기보 DB, 모델 가중치는 공개 범위에서 제외했습니다. 광고와 다른 게임 목록 같은 웹 운영 코드, 설정 파일도 빼서 일부 import는 공개하지 않은 파일을 가리킵니다.
전체 소스
38개 파일 · 8,212줄 — 폴더를 펼친 뒤 파일을 누르면 코드를 불러옵니다.
프로젝트 루트
CMakeLists.txt
코드를 불러오는 중입니다…
dataset_omook.py
코드를 불러오는 중입니다…
download_qwen3vl.py
코드를 불러오는 중입니다…
requirements.txt
코드를 불러오는 중입니다…
train_vlm.py
코드를 불러오는 중입니다…
TRAINING.md
코드를 불러오는 중입니다…
vlm_pva_server.py
코드를 불러오는 중입니다…
omook-web/
omook-web/app/api/game/[code]/route.ts
코드를 불러오는 중입니다…
omook-web/app/api/game/route.ts
코드를 불러오는 중입니다…
omook-web/app/api/vlm/move/route.ts
코드를 불러오는 중입니다…
omook-web/app/globals.css
코드를 불러오는 중입니다…
omook-web/app/layout.tsx
코드를 불러오는 중입니다…
omook-web/app/page.tsx
코드를 불러오는 중입니다…
omook-web/app/play/page.tsx
코드를 불러오는 중입니다…
omook-web/app/play/play.module.css
코드를 불러오는 중입니다…
omook-web/components/OmokBoard.module.css
코드를 불러오는 중입니다…
omook-web/components/OmokBoard.tsx
코드를 불러오는 중입니다…
omook-web/lib/ai.ts
코드를 불러오는 중입니다…
omook-web/lib/board.ts
코드를 불러오는 중입니다…
omook-web/lib/db.ts
코드를 불러오는 중입니다…
omook-web/lib/gameTypes.ts
코드를 불러오는 중입니다…
omook-web/lib/guest.ts
코드를 불러오는 중입니다…
omook-web/lib/omk3Client.ts
코드를 불러오는 중입니다…
omook-web/lib/renderBoardPng.ts
코드를 불러오는 중입니다…
omook-web/lib/vlmClient.ts
코드를 불러오는 중입니다…
scripts/
scripts/probe_vlm_coords.py
코드를 불러오는 중입니다…
scripts/vlm_text_client.py
코드를 불러오는 중입니다…
src/
src/aiplayer.cpp
코드를 불러오는 중입니다…
src/aiplayer.h
코드를 불러오는 중입니다…
src/boardmodel.cpp
코드를 불러오는 중입니다…
src/boardmodel.h
코드를 불러오는 중입니다…
src/boardwidget.cpp
코드를 불러오는 중입니다…
src/boardwidget.h
코드를 불러오는 중입니다…
src/main.cpp
코드를 불러오는 중입니다…
src/mainwindow.cpp
코드를 불러오는 중입니다…
src/mainwindow.h
코드를 불러오는 중입니다…
src/tcpvlmclient.cpp
코드를 불러오는 중입니다…
src/tcpvlmclient.h
코드를 불러오는 중입니다…
COMMENTS · CHAPTER 05
전체 소스 코드와 사용한 모델 댓글 0
아직 댓글이 없습니다. 읽다가 궁금한 점이나 보탤 내용을 남겨 주세요.
댓글을 등록하려면 구글로 시작하기를 눌러 닉네임과 메일 주소를 등록해 주세요.
구글로 시작하기