Objetivo de esta entrada

Publico todo el código fuente de MariaGO que implementa lo que se explicó paso a paso en las entradas 1 a 7. Hay muchos archivos, así que están plegados por carpeta, y el código solo se carga cuando abres un archivo.

Modelos utilizados

  • Modelo en producción: Qwen3-VL-8B-Instruct + adaptador LoRA lora_mix_qwen_r5 (rank 16, alpha 32)
  • Entrada: modo text-only, que en lugar de una imagen del tablero recibe un tablero de texto alineado a dos cifras (aligned)
  • Entorno de entrenamiento e inferencia: entrenamiento y servicio de LoRA con MLX (mlx-vlm) en un Mac Studio (Apple Silicon)
  • Datos de entrenamiento: partidas SGF de KGS de 4 dan o más de u-go.net, centradas en las jugadas del ganador con más peso en las posiciones de atari y captura, mezcladas con datos dedicados a la lectura de coordenadas
  • Orden de entrenamiento: partiendo del adaptador dedicado a las coordenadas, cinco rondas de r1 a r5 cambiando la proporción de datos de coordenadas y de jugadas. Solo los adaptadores que superaron un 90% o más en la prueba de coordenadas en cada ronda pasaron a la siguiente

El primer modelo que probamos

Al principio añadimos LoRA (rank 8 y después 16) a Gemma 4 E4B-it 4bit (mlx-community). Observamos que el modelo leía las coordenadas concentradas hacia un lado, así que unificamos el formato del tablero en el entrenamiento y en el servicio como aligned y cambiamos el modelo base a Qwen3-VL-8B.

Piezas de apoyo

  • KataGo (b18c384nbt): análisis de la posición y un experimento de juicio en conjunto (ensemble) que elige uno de los candidatos propuestos por varios adaptadores
  • Política MLP de dos capas en NumPy: un experimento de autojuego REINFORCE con máscara de jugadas legales (rl_env)
  • IA heurística en C++: red de seguridad para responder al atari y jugada de reserva cuando el modelo no responde

Estructura de carpetas

  • src, tests: cliente de go en Qt6/C++, motor de reglas (goboard), recuento (gamejudge), IA heurística
  • vlm_server: análisis de SGF, generación de datos de entrenamiento, entrenamiento de LoRA, prueba de coordenadas, servidor de recomendación de jugadas
  • rl_env: experimentos de aprendizaje por refuerzo con NumPy
  • mariago-web: pantalla de partida web en Next.js y API de guardado de partidas

La configuración de despliegue del servidor, los scripts de acceso remoto y monitorización, los scripts de automatización del entrenamiento y de experimentos, y los datos de entrenamiento y los pesos de los modelos (cientos de GB) quedan fuera de lo publicado. También se han omitido el código y los archivos de configuración de operación web como anuncios, inicio de sesión y clasificaciones, las herramientas de depuración y el antiguo script de descarga del modelo Gemma, por lo que algunos import apuntan a archivos no publicados. Las rutas del código como /Volumes/MY_WORK/... corresponden al Mac del autor, así que al ejecutarlo debes cambiarlas por tus propias rutas.

Código fuente completo

76 archivos · 18.629 líneas — abre una carpeta y haz clic en un archivo para cargar su código.

Raíz del proyecto2 archivos
CMakeLists.txttext · 34 líneas · 759B

Cargando el código…

README.mdmarkdown · 63 líneas · 5KB

Cargando el código…

mariago-web/25 archivos
mariago-web/app/api/analyze/route.tstypescript · 86 líneas · 2KB

Cargando el código…

mariago-web/app/api/game/[code]/route.tstypescript · 57 líneas · 2KB

Cargando el código…

mariago-web/app/api/game/list/route.tstypescript · 17 líneas · 545B

Cargando el código…

mariago-web/app/api/game/route.tstypescript · 24 líneas · 914B

Cargando el código…

mariago-web/app/api/player/route.tstypescript · 12 líneas · 420B

Cargando el código…

mariago-web/app/globals.csscss · 53 líneas · 995B

Cargando el código…

mariago-web/app/kibo/kibo.module.csscss · 149 líneas · 2KB

Cargando el código…

mariago-web/app/kibo/page.tsxtsx · 115 líneas · 4KB

Cargando el código…

mariago-web/app/layout.tsxtsx · 33 líneas · 935B

Cargando el código…

mariago-web/app/page.tsxtsx · 40 líneas · 982B

Cargando el código…

mariago-web/app/play/page.tsxtsx · 1104 líneas · 34KB

Cargando el código…

mariago-web/app/play/play.module.csscss · 252 líneas · 4KB

Cargando el código…

mariago-web/components/GoBoard.module.csscss · 115 líneas · 2KB

Cargando el código…

mariago-web/components/GoBoard.tsxtsx · 71 líneas · 3KB

Cargando el código…

mariago-web/components/ModelSelector.module.csscss · 38 líneas · 636B

Cargando el código…

mariago-web/components/ModelSelector.tsxtsx · 53 líneas · 1KB

Cargando el código…

mariago-web/lib/board.tstypescript · 260 líneas · 7KB

Cargando el código…

mariago-web/lib/db.tstypescript · 431 líneas · 13KB

Cargando el código…

mariago-web/lib/gameTypes.tstypescript · 67 líneas · 1KB

Cargando el código…

mariago-web/lib/guest.tstypescript · 40 líneas · 1KB

Cargando el código…

mariago-web/lib/katagoTypes.tstypescript · 14 líneas · 284B

Cargando el código…

mariago-web/lib/vlmClient.tstypescript · 98 líneas · 3KB

Cargando el código…

mariago-web/lib/vlmModels.tstypescript · 39 líneas · 2KB

Cargando el código…

mariago-web/package.jsonjson · 28 líneas · 708B

Cargando el código…

mariago-web/README.mdmarkdown · 53 líneas · 2KB

Cargando el código…

rl_env/11 archivos
rl_env/__init__.pypython · 18 líneas · 500B

Cargando el código…

rl_env/board.pypython · 196 líneas · 6KB

Cargando el código…

rl_env/env.pypython · 79 líneas · 2KB

Cargando el código…

rl_env/eval_policy.pypython · 68 líneas · 2KB

Cargando el código…

rl_env/policy_numpy.pypython · 157 líneas · 5KB

Cargando el código…

rl_env/requirements-train.txttext · 2 líneas · 104B

Cargando el código…

rl_env/test_legal.pypython · 76 líneas · 2KB

Cargando el código…

rl_env/test_phase2.pypython · 34 líneas · 917B

Cargando el código…

rl_env/test_phase3.pypython · 35 líneas · 1003B

Cargando el código…

rl_env/train_reinforce.pypython · 90 líneas · 3KB

Cargando el código…

rl_env/train_selfplay.pypython · 137 líneas · 5KB

Cargando el código…

src/13 archivos
src/aiplayer.cppc++ · 531 líneas · 20KB

Cargando el código…

src/aiplayer.hc++ · 26 líneas · 1KB

Cargando el código…

src/boardwidget.cppc++ · 309 líneas · 10KB

Cargando el código…

src/boardwidget.hc++ · 72 líneas · 3KB

Cargando el código…

src/gamejudge.cppc++ · 427 líneas · 15KB

Cargando el código…

src/gamejudge.hc++ · 95 líneas · 4KB

Cargando el código…

src/goboard.cppc++ · 419 líneas · 12KB

Cargando el código…

src/goboard.hc++ · 189 líneas · 7KB

Cargando el código…

src/main.cppc++ · 23 líneas · 662B

Cargando el código…

src/mainwindow.cppc++ · 2698 líneas · 107KB

Cargando el código…

src/mainwindow.hc++ · 288 líneas · 12KB

Cargando el código…

src/tcpvlmclient.cppc++ · 469 líneas · 15KB

Cargando el código…

src/tcpvlmclient.hc++ · 91 líneas · 4KB

Cargando el código…

tests/4 archivos
tests/atari_smoketest.cppc++ · 341 líneas · 13KB

Cargando el código…

tests/test_cross_lessons.pypython · 129 líneas · 4KB

Cargando el código…

tests/test_monitor_heuristic.pypython · 135 líneas · 5KB

Cargando el código…

tests/test_pass_guard.pypython · 192 líneas · 6KB

Cargando el código…

vlm_server/21 archivos
vlm_server/__init__.pypython · 6 líneas · 202B

Cargando el código…

vlm_server/__main__.pypython · 372 líneas · 13KB

Cargando el código…

vlm_server/cross_lessons.pypython · 428 líneas · 13KB

Cargando el código…

vlm_server/dataset_baduk.pypython · 734 líneas · 26KB

Cargando el código…

vlm_server/dataset_coords.pypython · 190 líneas · 6KB

Cargando el código…

vlm_server/dataset_hogu.pypython · 214 líneas · 8KB

Cargando el código…

vlm_server/dataset_ladder.pypython · 396 líneas · 16KB

Cargando el código…

vlm_server/dataset_opening.pypython · 127 líneas · 4KB

Cargando el código…

vlm_server/eval_vlm_vs_vlm.pypython · 458 líneas · 16KB

Cargando el código…

vlm_server/ladder.pypython · 322 líneas · 10KB

Cargando el código…

vlm_server/policy_backend.pypython · 164 líneas · 5KB

Cargando el código…

vlm_server/README.mdmarkdown · 91 líneas · 3KB

Cargando el código…

vlm_server/requirements.txttext · 7 líneas · 195B

Cargando el código…

vlm_server/server.pypython · 2474 líneas · 99KB

Cargando el código…

vlm_server/sgf_download.pypython · 215 líneas · 7KB

Cargando el código…

vlm_server/sgf_parser.pypython · 196 líneas · 6KB

Cargando el código…

vlm_server/shapes.pypython · 83 líneas · 3KB

Cargando el código…

vlm_server/train_lora.pypython · 294 líneas · 11KB

Cargando el código…

vlm_server/TRAINING.mdmarkdown · 437 líneas · 18KB

Cargando el código…

vlm_server/verify_board.pypython · 331 líneas · 11KB

Cargando el código…

vlm_server/verify_coords.pypython · 418 líneas · 13KB

Cargando el código…