Objetivo de esta entrada

Publicamos el código fuente que usamos para la IA de Tetris. El código solo se carga cuando abres un archivo.

Modelos utilizados

  • DQN de stable-baselines3: los modelos de bajo nivel de 7 acciones (300,000 y 370,000 pasos) y el modelo de macroacciones de 40 acciones (300,000 pasos). Los archivos de los modelos no se incluyen.
  • Qwen2.5-3B-Instruct GGUF q4_k_m (llama-cpp-python): juez del tablero en texto y elección del número de candidato
  • Qwen2.5-VL-3B-Instruct (transformers): juez del tablero en imagen y elección directa del sitio

Estructura de carpetas

  • tetris: motor en C++ (tetris_engine), API en C (tetris_c_api), pantalla de Qt6 y servidor TCP (main_window, tetris_widget), CMake
  • local_tetris_env.py: entorno gymnasium que envuelve el motor con ctypes
  • simple_tetris_env.py: entorno en Python puro que se usa cuando el motor no está compilado. Los formatos de observación y de acción son distintos, así que los modelos no son intercambiables.
  • macro_planning_env.py: entorno de 40 acciones que elige una vez por pieza
  • train_tetris_rl.py: entrenamiento DQN sin pantalla
  • train_qt_live.py: muestra el modelo actual en la pantalla de Qt mientras entrena. También tiene un modo que entrena con partidas jugadas por una persona.
  • qt_rl_client.py: conecta un modelo entrenado a la pantalla de Qt
  • llm_teacher.py, vlm_teacher.py, llm_reward_wrapper.py: jueces de recompensa de LLM y VLM
  • vlm_macro_client.py: cliente en el que el VLM elige directamente el sitio
  • llm_macro_client.py: cálculo de candidatos y elección del número por el LLM
  • moe_macro_policy.py: selección de candidatos que combina cuatro reglas
  • config/rl_config.py: configuración del entrenamiento

Se excluyen los resultados de compilación, los entornos virtuales, los pesos de los modelos y los archivos de modelos entrenados.

Código fuente completo

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

Raíz del proyecto14 archivos
llm_macro_client.pypython · 894 líneas · 33KB

Cargando el código…

llm_reward_wrapper.pypython · 96 líneas · 3KB

Cargando el código…

llm_teacher.pypython · 128 líneas · 4KB

Cargando el código…

local_tetris_env.pypython · 252 líneas · 9KB

Cargando el código…

macro_planning_env.pypython · 152 líneas · 5KB

Cargando el código…

moe_macro_policy.pypython · 81 líneas · 3KB

Cargando el código…

project.mdmarkdown · 46 líneas · 2KB

Cargando el código…

qt_rl_client.pypython · 148 líneas · 5KB

Cargando el código…

requirements.txttext · 11 líneas · 128B

Cargando el código…

simple_tetris_env.pypython · 154 líneas · 6KB

Cargando el código…

train_qt_live.pypython · 726 líneas · 28KB

Cargando el código…

train_tetris_rl.pypython · 316 líneas · 11KB

Cargando el código…

vlm_macro_client.pypython · 236 líneas · 8KB

Cargando el código…

vlm_teacher.pypython · 179 líneas · 6KB

Cargando el código…

config/2 archivos
config/__init__.pypython · 2 líneas · 55B

Cargando el código…

config/rl_config.pypython · 101 líneas · 3KB

Cargando el código…

tetris/9 archivos
tetris/CMakeLists.txttext · 57 líneas · 2KB

Cargando el código…

tetris/src/main_window.cppc++ · 408 líneas · 13KB

Cargando el código…

tetris/src/main_window.hc++ · 58 líneas · 1KB

Cargando el código…

tetris/src/main.cppc++ · 38 líneas · 1KB

Cargando el código…

tetris/src/tetris_c_api.cppc++ · 167 líneas · 6KB

Cargando el código…

tetris/src/tetris_engine.cppc++ · 446 líneas · 13KB

Cargando el código…

tetris/src/tetris_engine.hc++ · 130 líneas · 4KB

Cargando el código…

tetris/src/tetris_widget.cppc++ · 117 líneas · 3KB

Cargando el código…

tetris/src/tetris_widget.hc++ · 26 líneas · 536B

Cargando el código…