Objetivo deste post

Publicamos o código-fonte usado na IA de Tetris. O código só é carregado quando você abre um arquivo.

Modelos usados

  • DQN do stable-baselines3: os modelos de baixo nível com 7 ações (300 mil e 370 mil passos) e o modelo macro com 40 ações (300 mil passos). Os arquivos dos modelos não foram incluídos.
  • Qwen2.5-3B-Instruct GGUF q4_k_m (llama-cpp-python): juiz do tabuleiro em texto, escolha do número do candidato
  • Qwen2.5-VL-3B-Instruct (transformers): juiz do tabuleiro em imagem, escolha direta do lugar

Estrutura de pastas

  • tetris: motor em C++ (tetris_engine), C API (tetris_c_api), tela em Qt6 e servidor TCP (main_window, tetris_widget), CMake
  • local_tetris_env.py: ambiente gymnasium que encapsula o motor com ctypes
  • simple_tetris_env.py: ambiente em Python puro usado quando o motor não foi compilado. Os formatos de observação e de ação são diferentes, então os modelos não podem ser trocados entre eles.
  • macro_planning_env.py: o ambiente de 40 ações que escolhe uma vez por peça
  • train_tetris_rl.py: treino DQN sem tela
  • train_qt_live.py: mostra o modelo atual na tela em Qt durante o treino. Também tem um modo que treina com partidas jogadas por uma pessoa.
  • qt_rl_client.py: conecta um modelo treinado à tela em Qt
  • llm_teacher.py, vlm_teacher.py, llm_reward_wrapper.py: juízes de recompensa de LLM e VLM
  • vlm_macro_client.py: cliente em que o VLM escolhe o lugar diretamente
  • llm_macro_client.py: cálculo de candidatos e escolha do número pelo LLM
  • moe_macro_policy.py: seleção de candidatos que mistura quatro regras
  • config/rl_config.py: configuração do treino

Os resultados de build, os ambientes virtuais, os pesos dos modelos e os arquivos dos modelos treinados foram excluídos.

Código-fonte completo

25 arquivos · 4.969 linhas — abra uma pasta e clique em um arquivo para carregar o código.

Raiz do projeto14 arquivos
llm_macro_client.pypython · 894 linhas · 33KB

Carregando o código…

llm_reward_wrapper.pypython · 96 linhas · 3KB

Carregando o código…

llm_teacher.pypython · 128 linhas · 4KB

Carregando o código…

local_tetris_env.pypython · 252 linhas · 9KB

Carregando o código…

macro_planning_env.pypython · 152 linhas · 5KB

Carregando o código…

moe_macro_policy.pypython · 81 linhas · 3KB

Carregando o código…

project.mdmarkdown · 46 linhas · 2KB

Carregando o código…

qt_rl_client.pypython · 148 linhas · 5KB

Carregando o código…

requirements.txttext · 11 linhas · 128B

Carregando o código…

simple_tetris_env.pypython · 154 linhas · 6KB

Carregando o código…

train_qt_live.pypython · 726 linhas · 28KB

Carregando o código…

train_tetris_rl.pypython · 316 linhas · 11KB

Carregando o código…

vlm_macro_client.pypython · 236 linhas · 8KB

Carregando o código…

vlm_teacher.pypython · 179 linhas · 6KB

Carregando o código…

config/2 arquivos
config/__init__.pypython · 2 linhas · 55B

Carregando o código…

config/rl_config.pypython · 101 linhas · 3KB

Carregando o código…

tetris/9 arquivos
tetris/CMakeLists.txttext · 57 linhas · 2KB

Carregando o código…

tetris/src/main_window.cppc++ · 408 linhas · 13KB

Carregando o código…

tetris/src/main_window.hc++ · 58 linhas · 1KB

Carregando o código…

tetris/src/main.cppc++ · 38 linhas · 1KB

Carregando o código…

tetris/src/tetris_c_api.cppc++ · 167 linhas · 6KB

Carregando o código…

tetris/src/tetris_engine.cppc++ · 446 linhas · 13KB

Carregando o código…

tetris/src/tetris_engine.hc++ · 130 linhas · 4KB

Carregando o código…

tetris/src/tetris_widget.cppc++ · 117 linhas · 3KB

Carregando o código…

tetris/src/tetris_widget.hc++ · 26 linhas · 536B

Carregando o código…