
この記事の目的
テトリスAIに使ったソースコードを公開します。ファイルを開いたときだけコードを読み込みます。
使用したモデル
- stable-baselines3 の DQN: 低レベル7行動のモデル(30万、37万ステップ)とマクロ40行動のモデル(30万ステップ)。モデルファイルは載せていません。
- Qwen2.5-3B-Instruct GGUF q4_k_m(llama-cpp-python): 文字の盤の審判、候補番号の選択
- Qwen2.5-VL-3B-Instruct(transformers): 絵の盤の審判、場所の直接選択
フォルダ構成
- tetris: C++ エンジン(tetris_engine)、C API(tetris_c_api)、Qt6 の画面と TCP サーバー(main_window、tetris_widget)、CMake
- local_tetris_env.py: ctypes でエンジンを包んだ gymnasium 環境
- simple_tetris_env.py: エンジンをビルドしていないときに使う純粋な Python 環境。観測と行動の形式が違うので、モデルを入れ替えて使うことはできません。
- macro_planning_env.py: ブロックごとに1回選ぶ40個の行動の環境
- train_tetris_rl.py: 画面なしの DQN 学習
- train_qt_live.py: 学習しながら Qt の画面に現在のモデルを見せます。人が打った盤で学習するモードもあります。
- qt_rl_client.py: 学習したモデルを Qt の画面につなぎます。
- llm_teacher.py、vlm_teacher.py、llm_reward_wrapper.py: LLM・VLM の報酬の審判
- vlm_macro_client.py: VLM が場所を直接選ぶクライアント
- llm_macro_client.py: 候補の計算と LLM の番号選び
- moe_macro_policy.py: 4つのルールを混ぜた候補の選択
- config/rl_config.py: 学習の設定
ビルドの成果物、仮想環境、モデルの重みと学習したモデルファイルは除外しました。
全ソース
25ファイル · 4,969行 — フォルダを開いてファイルを押すとコードを読み込みます。
プロジェクトルート
llm_macro_client.py
コードを読み込んでいます…
llm_reward_wrapper.py
コードを読み込んでいます…
llm_teacher.py
コードを読み込んでいます…
local_tetris_env.py
コードを読み込んでいます…
macro_planning_env.py
コードを読み込んでいます…
moe_macro_policy.py
コードを読み込んでいます…
project.md
コードを読み込んでいます…
qt_rl_client.py
コードを読み込んでいます…
requirements.txt
コードを読み込んでいます…
simple_tetris_env.py
コードを読み込んでいます…
train_qt_live.py
コードを読み込んでいます…
train_tetris_rl.py
コードを読み込んでいます…
vlm_macro_client.py
コードを読み込んでいます…
vlm_teacher.py
コードを読み込んでいます…
config/
config/__init__.py
コードを読み込んでいます…
config/rl_config.py
コードを読み込んでいます…
tetris/
tetris/CMakeLists.txt
コードを読み込んでいます…
tetris/src/main_window.cpp
コードを読み込んでいます…
tetris/src/main_window.h
コードを読み込んでいます…
tetris/src/main.cpp
コードを読み込んでいます…
tetris/src/tetris_c_api.cpp
コードを読み込んでいます…
tetris/src/tetris_engine.cpp
コードを読み込んでいます…
tetris/src/tetris_engine.h
コードを読み込んでいます…
tetris/src/tetris_widget.cpp
コードを読み込んでいます…
tetris/src/tetris_widget.h
コードを読み込んでいます…
COMMENTS · CHAPTER 06
全ソースコードと使用したモデル コメント 0
まだコメントはありません。気になった点や補足があれば残してください。
コメントを登録するには、Googleで始めてニックネームとメールアドレスを登録してください。
Googleで始める