- 此翻譯對應 v0.6.5
TamaGo 是以一個用 python 撰寫的圍棋程式。它有以下的功能
- 通過監督學習(Supervised Learning)學習 SGF 格式的棋譜。
- 使用 Gumbel AlphaZero 實做強化學習(Reinforcement Learning)。
- 使用神經網路搭配蒙地卡羅樹搜索
TamaGo 需要 python 3.6 或更高的版本
套件 | 用途 |
---|---|
click | 支援內建選項 |
numpy | 用於計算和其它 |
pytorch | 構成神經網路和學習 |
可通過 Python 輸入下列指令直接安裝套件。
pip install -r requirements.txt
你可以僅使用 CPU 執行 TamaGo,但推薦在有 GPU 機器上執行之。
TamaGo 支援 GTP 協議的界面(GoGui, Sabaki, Lizzie 等),使用下列指令即可啟動之
python main.py
TamaGo 支援以下的指令
選項 | 描述 | 設定值 | 預設值 | 設定範例 | 備註 |
---|---|---|---|---|---|
--size |
棋盤大小 | 2 以上 BOARD_SIZE 以下 | 9 | BOARD_SIZE | BOARD_SIZE 定義在 board/constant.py |
--superko |
是否使用禁全同規則 | true 或是 false | true | false | 只支援 positional superko |
--model |
使用的網路權重 | model/model.bin | 無 | 指定的路徑必須要在 TamaGo 的路徑之下 | |
--use-gpu |
是否使用 GPU | true 或 false | true | false | |
--policy-move |
是否只使用 Policy 網路下棋 | true 或 false | true | false | 主要是為了確認 Policy 網路的強度 |
--sequential-halving |
數搜索時是否使用 Sequential Halving | true 或 false | true | false | 主要是為了 debug |
--visits |
每手棋的訪問數 | 1 以上的整數 | 1000 | 1000 | 當使用 --const-time 或 --time 參數時,此選項會被忽略 |
--const-time |
每手棋的思考時間 (秒) | 0 以上的任意數 | 10.0 | 當使用 --time 參數時,此選項會被忽略 | |
--time |
總思考時間 (秒) | 0 以上的任意數 | 600.0 | ||
--batch-size |
MCTS 搜索使用的 batch 大小 | 大於零的整數 | 13 | NN_BATCH_SIZE | NN_BATCH_SIZE 定義在 mcts/constant.py |
- 設定棋盤大小為 5,使用的權重為 model/model.bin ,禁止使用 GPU。
python main.py --size 5 --model model/model.bin --use-gpu false
- 啟用禁全同規則。
python main.py --superko true
- 使用的權重為 model/model.bin,使用 policy 網路產生下一手。
python main.py --model model/sl-model.bin --policy-move true
- 設定總思考時間為 10 分鐘。
python main.py --time 600
- 設定每手的訪問數為 500。
python main.py --visits 500
- 設定每手的思考時間為 10 秒。
python main.py --const-time 10.0
你可以從這裡下載預先訓練好的權重,將權重改名成 model.bin
後放置在 model
路徑之下即可使用。請注意每不同版本的網路結構可能不一樣,不同版本的 TamaGo 可能需要對應對不同版本的權重。
- 0.3.0 版本,不使用搜索的條件下強 GNU Go(lv10) 約 90 elo,搜索的條件下大概強約 160 elo。
- 0.6.0 版本後,網路的結構有改變,早於此版本的網路無法使用。
- 0.6.3 版本,強 GNU Go(lv10) 約 420 elo。搜索的條件下(100 visits/move),強 Ray(10k playouts/move) 約 180 elo。
監督學習教程請看這裡。
強化學習教程請看這裡。
GoGui 可以用顏色顯示 policy 網路輸出的分佈,或是用數值直接顯示。
下圖裡的越紅位置代表其 policy 的數值越高。
TamaGo 使用 Apache License 2.0 授權。