
이 글의 목적
1~7편에서 단계별로 설명한 내용을 실제로 구현한 MariaGO 소스 코드 전체를 공개합니다. 파일이 많아 폴더별로 접어 두었고, 파일을 펼칠 때만 코드를 불러옵니다.
사용한 모델
- 운영 모델: Qwen3-VL-8B-Instruct + LoRA 어댑터 lora_mix_qwen_r5 (rank 16, alpha 32)
- 입력 방식: 판 이미지 대신 두 자리로 정렬한 텍스트 판(aligned)을 넣는 text-only 모드
- 학습·추론 환경: Mac Studio(Apple Silicon)에서 MLX(mlx-vlm)로 LoRA 학습과 서빙
- 학습 데이터: u-go.net의 KGS 4단 이상 SGF 기보, 승자 수 위주 + 단수·포획 국면 가중, 좌표 읽기 전용 데이터 혼합
- 학습 순서: 좌표 전용 어댑터에서 출발해 좌표·수 데이터 비율을 바꾸며 r1부터 r5까지 다섯 라운드 학습. 매 라운드 좌표 시험 정확도 90% 이상을 통과한 어댑터만 다음 라운드로 넘김
처음 시도한 모델
처음에는 Gemma 4 E4B-it 4bit(mlx-community)에 LoRA(rank 8, 이후 16)를 붙였습니다. 모델이 좌표를 한쪽으로 몰아 읽는 문제가 관측되어, 학습과 서빙의 판 형식을 aligned로 통일하고 베이스 모델을 Qwen3-VL-8B로 바꿨습니다.
보조로 쓴 것
- KataGo(b18c384nbt): 형세 분석과, 여러 어댑터가 낸 후보 중 하나를 고르는 앙상블 판정 실험
- NumPy 2층 MLP 정책: 합법수 마스크를 씌운 REINFORCE 자가 대국 실험(rl_env)
- C++ 휴리스틱 AI: 단수 응수 안전망과 모델 응답 실패 시 대체 수
폴더 구성
- src, tests: Qt6/C++ 바둑 클라이언트, 규칙 엔진(goboard), 계가(gamejudge), 휴리스틱 AI
- vlm_server: SGF 파싱, 학습 데이터 생성, LoRA 학습, 좌표 시험, 수 추천 서버
- rl_env: NumPy 강화학습 실험
- mariago-web: Next.js 웹 대국 화면과 기보 저장 API
서버 배포 설정, 원격 접속·감시 스크립트, 학습 자동화·실험용 스크립트, 학습 데이터와 모델 가중치(수백 GB)는 공개 범위에서 제외했습니다. 광고·로그인·랭킹 같은 웹 운영 코드와 설정 파일, 디버그용 도구, 예전 Gemma 모델 내려받기 스크립트도 빼서 일부 import는 공개하지 않은 파일을 가리킵니다. 코드 안의 /Volumes/MY_WORK/... 같은 경로는 작성자의 맥 기준이므로 실행할 때 자신의 경로로 바꿔야 합니다.
전체 소스
76개 파일 · 18,629줄 — 폴더를 펼친 뒤 파일을 누르면 코드를 불러옵니다.
프로젝트 루트
CMakeLists.txt
코드를 불러오는 중입니다…
README.md
코드를 불러오는 중입니다…
mariago-web/
mariago-web/app/api/analyze/route.ts
코드를 불러오는 중입니다…
mariago-web/app/api/game/[code]/route.ts
코드를 불러오는 중입니다…
mariago-web/app/api/game/list/route.ts
코드를 불러오는 중입니다…
mariago-web/app/api/game/route.ts
코드를 불러오는 중입니다…
mariago-web/app/api/player/route.ts
코드를 불러오는 중입니다…
mariago-web/app/globals.css
코드를 불러오는 중입니다…
mariago-web/app/kibo/kibo.module.css
코드를 불러오는 중입니다…
mariago-web/app/kibo/page.tsx
코드를 불러오는 중입니다…
mariago-web/app/layout.tsx
코드를 불러오는 중입니다…
mariago-web/app/page.tsx
코드를 불러오는 중입니다…
mariago-web/app/play/page.tsx
코드를 불러오는 중입니다…
mariago-web/app/play/play.module.css
코드를 불러오는 중입니다…
mariago-web/components/GoBoard.module.css
코드를 불러오는 중입니다…
mariago-web/components/GoBoard.tsx
코드를 불러오는 중입니다…
mariago-web/components/ModelSelector.module.css
코드를 불러오는 중입니다…
mariago-web/components/ModelSelector.tsx
코드를 불러오는 중입니다…
mariago-web/lib/board.ts
코드를 불러오는 중입니다…
mariago-web/lib/db.ts
코드를 불러오는 중입니다…
mariago-web/lib/gameTypes.ts
코드를 불러오는 중입니다…
mariago-web/lib/guest.ts
코드를 불러오는 중입니다…
mariago-web/lib/katagoTypes.ts
코드를 불러오는 중입니다…
mariago-web/lib/vlmClient.ts
코드를 불러오는 중입니다…
mariago-web/lib/vlmModels.ts
코드를 불러오는 중입니다…
mariago-web/package.json
코드를 불러오는 중입니다…
mariago-web/README.md
코드를 불러오는 중입니다…
rl_env/
rl_env/__init__.py
코드를 불러오는 중입니다…
rl_env/board.py
코드를 불러오는 중입니다…
rl_env/env.py
코드를 불러오는 중입니다…
rl_env/eval_policy.py
코드를 불러오는 중입니다…
rl_env/policy_numpy.py
코드를 불러오는 중입니다…
rl_env/requirements-train.txt
코드를 불러오는 중입니다…
rl_env/test_legal.py
코드를 불러오는 중입니다…
rl_env/test_phase2.py
코드를 불러오는 중입니다…
rl_env/test_phase3.py
코드를 불러오는 중입니다…
rl_env/train_reinforce.py
코드를 불러오는 중입니다…
rl_env/train_selfplay.py
코드를 불러오는 중입니다…
src/
src/aiplayer.cpp
코드를 불러오는 중입니다…
src/aiplayer.h
코드를 불러오는 중입니다…
src/boardwidget.cpp
코드를 불러오는 중입니다…
src/boardwidget.h
코드를 불러오는 중입니다…
src/gamejudge.cpp
코드를 불러오는 중입니다…
src/gamejudge.h
코드를 불러오는 중입니다…
src/goboard.cpp
코드를 불러오는 중입니다…
src/goboard.h
코드를 불러오는 중입니다…
src/main.cpp
코드를 불러오는 중입니다…
src/mainwindow.cpp
코드를 불러오는 중입니다…
src/mainwindow.h
코드를 불러오는 중입니다…
src/tcpvlmclient.cpp
코드를 불러오는 중입니다…
src/tcpvlmclient.h
코드를 불러오는 중입니다…
tests/
tests/atari_smoketest.cpp
코드를 불러오는 중입니다…
tests/test_cross_lessons.py
코드를 불러오는 중입니다…
tests/test_monitor_heuristic.py
코드를 불러오는 중입니다…
tests/test_pass_guard.py
코드를 불러오는 중입니다…
vlm_server/
vlm_server/__init__.py
코드를 불러오는 중입니다…
vlm_server/__main__.py
코드를 불러오는 중입니다…
vlm_server/cross_lessons.py
코드를 불러오는 중입니다…
vlm_server/dataset_baduk.py
코드를 불러오는 중입니다…
vlm_server/dataset_coords.py
코드를 불러오는 중입니다…
vlm_server/dataset_hogu.py
코드를 불러오는 중입니다…
vlm_server/dataset_ladder.py
코드를 불러오는 중입니다…
vlm_server/dataset_opening.py
코드를 불러오는 중입니다…
vlm_server/eval_vlm_vs_vlm.py
코드를 불러오는 중입니다…
vlm_server/ladder.py
코드를 불러오는 중입니다…
vlm_server/policy_backend.py
코드를 불러오는 중입니다…
vlm_server/README.md
코드를 불러오는 중입니다…
vlm_server/requirements.txt
코드를 불러오는 중입니다…
vlm_server/server.py
코드를 불러오는 중입니다…
vlm_server/sgf_download.py
코드를 불러오는 중입니다…
vlm_server/sgf_parser.py
코드를 불러오는 중입니다…
vlm_server/shapes.py
코드를 불러오는 중입니다…
vlm_server/train_lora.py
코드를 불러오는 중입니다…
vlm_server/TRAINING.md
코드를 불러오는 중입니다…
vlm_server/verify_board.py
코드를 불러오는 중입니다…
vlm_server/verify_coords.py
코드를 불러오는 중입니다…
COMMENTS · CHAPTER 08
전체 소스 코드와 사용한 모델 댓글 0
아직 댓글이 없습니다. 읽다가 궁금한 점이나 보탤 내용을 남겨 주세요.
댓글을 등록하려면 구글로 시작하기를 눌러 닉네임과 메일 주소를 등록해 주세요.
구글로 시작하기