
本文的目的
公开实际实现了第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两层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/...之类的路径是以作者的Mac为准的,运行时需要换成你自己的路径。
完整源代码
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
还没有评论。阅读时有疑问或想补充的内容,欢迎留言。
发表评论前,请用 Google 开始并登记昵称和邮箱。
用 Google 开始