Objetivo de esta entrada

Publico el código fuente usado en los experimentos de la IA de gomoku. El código solo se carga cuando abres un archivo.

Modelos utilizados

  • VLM: se jugaron 25.413 jugadas de partida con Qwen3-VL-8B-Instruct de Hugging Face. Ahora el servidor funciona con el valor por defecto, Qwen3-VL-2B-Instruct. Recibe a la vez una imagen del tablero y un tablero en texto, y devuelve dos números, "row col".
  • LoRA: peft, r=8, alpha=16. Se entrena solo con las jugadas del lado ganador. En MPS se ejecutó en fp16 y la pérdida se volvió NaN.
  • IA local: el AiPlayer en C++ de la app de Qt y ai.ts en la web. Es una heurística que primero mira las jugadas ganadoras y las que hay que bloquear, y en los demás casos elige sumando las puntuaciones de las cuatro direcciones.
  • Motor: las mismas jugadas prohibidas para negras y blancas (doble tres y línea larga prohibidos, doble cuatro permitido); solo gana un cinco exacto.

Estructura de carpetas

  • src: motor de gomoku en Qt6/C++, IA local, pantalla del tablero, cliente TCP que se comunica con el servidor VLM
  • Archivos .py de la raíz: servidor de inferencia del VLM (vlm_pva_server.py), dataset_omook.py, que convierte los registros en datos de entrenamiento, entrenamiento de LoRA train_vlm.py, descarga de modelos
  • scripts: comprobación de coordenadas del VLM y cliente de tablero en texto
  • omook-web: pantalla de partida web en Next.js, motor (board.ts), IA local (ai.ts), guardado de partidas (db.ts), conexión con el VLM

La configuración de despliegue del servidor, los scripts de monitorización y automatización, los registros de partidas y la base de datos de partidas, y los pesos de los modelos quedan fuera de lo publicado. También se han omitido el código de operación web como los anuncios y la lista de otros juegos, y los archivos de configuración, por lo que algunos import apuntan a archivos no publicados.

Código fuente completo

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

Raíz del proyecto7 archivos
CMakeLists.txttext · 30 líneas · 663B

Cargando el código…

dataset_omook.pypython · 347 líneas · 12KB

Cargando el código…

download_qwen3vl.pypython · 42 líneas · 1KB

Cargando el código…

requirements.txttext · 20 líneas · 725B

Cargando el código…

train_vlm.pypython · 360 líneas · 13KB

Cargando el código…

TRAINING.mdmarkdown · 136 líneas · 6KB

Cargando el código…

vlm_pva_server.pypython · 1475 líneas · 54KB

Cargando el código…

omook-web/18 archivos
omook-web/app/api/game/[code]/route.tstypescript · 59 líneas · 2KB

Cargando el código…

omook-web/app/api/game/route.tstypescript · 32 líneas · 1KB

Cargando el código…

omook-web/app/api/vlm/move/route.tstypescript · 58 líneas · 2KB

Cargando el código…

omook-web/app/globals.csscss · 48 líneas · 864B

Cargando el código…

omook-web/app/layout.tsxtsx · 33 líneas · 944B

Cargando el código…

omook-web/app/page.tsxtsx · 71 líneas · 2KB

Cargando el código…

omook-web/app/play/page.tsxtsx · 773 líneas · 23KB

Cargando el código…

omook-web/app/play/play.module.csscss · 189 líneas · 3KB

Cargando el código…

omook-web/components/OmokBoard.module.csscss · 116 líneas · 2KB

Cargando el código…

omook-web/components/OmokBoard.tsxtsx · 85 líneas · 3KB

Cargando el código…

omook-web/lib/ai.tstypescript · 160 líneas · 4KB

Cargando el código…

omook-web/lib/board.tstypescript · 337 líneas · 9KB

Cargando el código…

omook-web/lib/db.tstypescript · 190 líneas · 6KB

Cargando el código…

omook-web/lib/gameTypes.tstypescript · 43 líneas · 855B

Cargando el código…

omook-web/lib/guest.tstypescript · 48 líneas · 2KB

Cargando el código…

omook-web/lib/omk3Client.tstypescript · 184 líneas · 5KB

Cargando el código…

omook-web/lib/renderBoardPng.tstypescript · 118 líneas · 3KB

Cargando el código…

omook-web/lib/vlmClient.tstypescript · 104 líneas · 3KB

Cargando el código…

scripts/2 archivos
scripts/probe_vlm_coords.pypython · 182 líneas · 5KB

Cargando el código…

scripts/vlm_text_client.pypython · 418 líneas · 15KB

Cargando el código…

src/11 archivos
src/aiplayer.cppc++ · 136 líneas · 4KB

Cargando el código…

src/aiplayer.hc++ · 9 líneas · 237B

Cargando el código…

src/boardmodel.cppc++ · 505 líneas · 16KB

Cargando el código…

src/boardmodel.hc++ · 127 líneas · 6KB

Cargando el código…

src/boardwidget.cppc++ · 198 líneas · 6KB

Cargando el código…

src/boardwidget.hc++ · 45 líneas · 1KB

Cargando el código…

src/main.cppc++ · 21 líneas · 543B

Cargando el código…

src/mainwindow.cppc++ · 962 líneas · 35KB

Cargando el código…

src/mainwindow.hc++ · 90 líneas · 3KB

Cargando el código…

src/tcpvlmclient.cppc++ · 386 líneas · 12KB

Cargando el código…

src/tcpvlmclient.hc++ · 75 líneas · 3KB

Cargando el código…