CodingameのOthello(オセロ)タスクのAI
学習済みsavedmodelが model/debug_ch8_d7/sm_26
にある想定。
モデルの推論コードを、TVMを用いて重みを含め1つのmodel.a
ファイルにまとめ、それと探索部をリンクする。
ln -sf $(pwd)/model/debug_ch8_d7/sm_26 model/savedmodel
make
build/codingame.py
が成果物。
正しく動作するコミットにおいて
./build/make_legal_move_test_data > dataset/legal_move_dataset.txt
検証したいコミットにおいて
./build/legal_move_test < dataset/legal_move_dataset.txt
アルファベータ法+石の数で評価する(学習不要の)簡易AIで生成
mkdir -p dataset/alphabeta_train_1
./build/generate_training_data_1 dataset/alphabeta_train_1/raw_game_train.bin 10000
python -m othello_train.shuffle_train_data dataset/alphabeta_train_1/raw_game_train.bin dataset/alphabeta_train_1/train_shuffled.bin
mkdir -p model
python -m othello_train.supervised_train_v1
./build/random_match
対戦相手は main_random_match.cpp
内にハードコードされている
DNNモデルを使うエンジンの場合は、評価サーバを立てておく必要がある
python -m othello_train.eval_server_v1 model/alphabeta_supervised_model_v1
最新のモデルで棋譜生成→それを用いてモデルを更新 というループを回す
python othello_train/rl_loop.py model/debug
評価サーバを立てる
python -m othello_train.eval_server_v1 model/debug/sm_9
sm_
の後ろの番号はエポック数。大きいほうが学習が進んでいる。
別のシェルで対局を実行
./build/random_match
対戦相手は main_random_match.cpp
内にハードコードされている
make