
Objetivo deste post
Este post publica todo o código-fonte do MariaGO que implementa o que foi explicado passo a passo nos posts 1 a 7. São muitos arquivos, então eles estão recolhidos por pasta, e o código só é carregado quando você abre um arquivo.
Modelos usados
- Modelo em produção: Qwen3-VL-8B-Instruct + adaptador LoRA lora_mix_qwen_r5 (rank 16, alpha 32)
- Forma de entrada: modo text-only, que envia um tabuleiro em texto alinhado com dois dígitos (aligned) em vez de uma imagem do tabuleiro
- Ambiente de treinamento e inferência: treinamento e serviço do LoRA com MLX (mlx-vlm) em um Mac Studio (Apple Silicon)
- Dados de treinamento: registros SGF do KGS de 4 dan para cima, do u-go.net, com foco nas jogadas do vencedor e peso extra nas posições de atari e captura, misturados com dados exclusivos de leitura de coordenadas
- Ordem de treinamento: partindo do adaptador exclusivo de coordenadas, cinco rodadas de treinamento de r1 a r5, mudando a proporção entre dados de coordenadas e de jogadas. A cada rodada, só os adaptadores que passaram com 90% ou mais no teste de coordenadas seguiram para a rodada seguinte
O primeiro modelo que tentamos
No começo, acoplamos um LoRA (rank 8, depois 16) ao Gemma 4 E4B-it 4bit (mlx-community). Observamos que o modelo lia as coordenadas puxando para um lado, então unificamos o formato do tabuleiro no treinamento e no serviço como aligned e trocamos o modelo base para o Qwen3-VL-8B.
O que usamos como apoio
- KataGo (b18c384nbt): análise de posição e um experimento de julgamento em ensemble que escolhe um entre os candidatos propostos por vários adaptadores
- Política MLP de duas camadas em NumPy: experimento de autojogo com REINFORCE usando máscara de jogadas legais (rl_env)
- IA heurística em C++: rede de segurança para responder a atari e jogada substituta quando o modelo falha em responder
Estrutura de pastas
- src, tests: cliente de go em Qt6/C++, motor de regras (goboard), contagem (gamejudge), IA heurística
- vlm_server: leitura de SGF, geração de dados de treinamento, treinamento do LoRA, teste de coordenadas, servidor de recomendação de jogadas
- rl_env: experimentos de aprendizado por reforço com NumPy
- mariago-web: tela de partida na web em Next.js e API de salvamento de registros de partidas
As configurações de implantação do servidor, os scripts de acesso remoto e monitoramento, os scripts de automação de treinamento e de experimentos, e os dados de treinamento e pesos dos modelos (centenas de GB) ficaram de fora da publicação. O código de operação da web, como anúncios, login e ranking, os arquivos de configuração, as ferramentas de depuração e o antigo script de download do modelo Gemma também foram retirados, por isso alguns imports apontam para arquivos não publicados. Caminhos no código como /Volumes/MY_WORK/... se referem ao Mac do autor, então troque pelos seus próprios caminhos ao executar.
Código-fonte completo
76 arquivos · 18.629 linhas — abra uma pasta e clique em um arquivo para carregar o código.
Raiz do projeto
CMakeLists.txt
Carregando o código…
README.md
Carregando o código…
mariago-web/
mariago-web/app/api/analyze/route.ts
Carregando o código…
mariago-web/app/api/game/[code]/route.ts
Carregando o código…
mariago-web/app/api/game/list/route.ts
Carregando o código…
mariago-web/app/api/game/route.ts
Carregando o código…
mariago-web/app/api/player/route.ts
Carregando o código…
mariago-web/app/globals.css
Carregando o código…
mariago-web/app/kibo/kibo.module.css
Carregando o código…
mariago-web/app/kibo/page.tsx
Carregando o código…
mariago-web/app/layout.tsx
Carregando o código…
mariago-web/app/page.tsx
Carregando o código…
mariago-web/app/play/page.tsx
Carregando o código…
mariago-web/app/play/play.module.css
Carregando o código…
mariago-web/components/GoBoard.module.css
Carregando o código…
mariago-web/components/GoBoard.tsx
Carregando o código…
mariago-web/components/ModelSelector.module.css
Carregando o código…
mariago-web/components/ModelSelector.tsx
Carregando o código…
mariago-web/lib/board.ts
Carregando o código…
mariago-web/lib/db.ts
Carregando o código…
mariago-web/lib/gameTypes.ts
Carregando o código…
mariago-web/lib/guest.ts
Carregando o código…
mariago-web/lib/katagoTypes.ts
Carregando o código…
mariago-web/lib/vlmClient.ts
Carregando o código…
mariago-web/lib/vlmModels.ts
Carregando o código…
mariago-web/package.json
Carregando o código…
mariago-web/README.md
Carregando o código…
rl_env/
rl_env/__init__.py
Carregando o código…
rl_env/board.py
Carregando o código…
rl_env/env.py
Carregando o código…
rl_env/eval_policy.py
Carregando o código…
rl_env/policy_numpy.py
Carregando o código…
rl_env/requirements-train.txt
Carregando o código…
rl_env/test_legal.py
Carregando o código…
rl_env/test_phase2.py
Carregando o código…
rl_env/test_phase3.py
Carregando o código…
rl_env/train_reinforce.py
Carregando o código…
rl_env/train_selfplay.py
Carregando o código…
src/
src/aiplayer.cpp
Carregando o código…
src/aiplayer.h
Carregando o código…
src/boardwidget.cpp
Carregando o código…
src/boardwidget.h
Carregando o código…
src/gamejudge.cpp
Carregando o código…
src/gamejudge.h
Carregando o código…
src/goboard.cpp
Carregando o código…
src/goboard.h
Carregando o código…
src/main.cpp
Carregando o código…
src/mainwindow.cpp
Carregando o código…
src/mainwindow.h
Carregando o código…
src/tcpvlmclient.cpp
Carregando o código…
src/tcpvlmclient.h
Carregando o código…
tests/
tests/atari_smoketest.cpp
Carregando o código…
tests/test_cross_lessons.py
Carregando o código…
tests/test_monitor_heuristic.py
Carregando o código…
tests/test_pass_guard.py
Carregando o código…
vlm_server/
vlm_server/__init__.py
Carregando o código…
vlm_server/__main__.py
Carregando o código…
vlm_server/cross_lessons.py
Carregando o código…
vlm_server/dataset_baduk.py
Carregando o código…
vlm_server/dataset_coords.py
Carregando o código…
vlm_server/dataset_hogu.py
Carregando o código…
vlm_server/dataset_ladder.py
Carregando o código…
vlm_server/dataset_opening.py
Carregando o código…
vlm_server/eval_vlm_vs_vlm.py
Carregando o código…
vlm_server/ladder.py
Carregando o código…
vlm_server/policy_backend.py
Carregando o código…
vlm_server/README.md
Carregando o código…
vlm_server/requirements.txt
Carregando o código…
vlm_server/server.py
Carregando o código…
vlm_server/sgf_download.py
Carregando o código…
vlm_server/sgf_parser.py
Carregando o código…
vlm_server/shapes.py
Carregando o código…
vlm_server/train_lora.py
Carregando o código…
vlm_server/TRAINING.md
Carregando o código…
vlm_server/verify_board.py
Carregando o código…
vlm_server/verify_coords.py
Carregando o código…
COMMENTS · CHAPTER 08
O código-fonte completo e os modelos usados 0 comentários
Ainda não há comentários. Deixe uma pergunta ou algo que queira acrescentar.
Para publicar um comentário, comece com o Google e registre um apelido e um e-mail.
Começar com o Google