leela zero的命令列引數介紹

在之前分享過圍棋AI包含兩部分: 圖形使用者介面程式sabaki和leela zero引擎。 其中leela zero以命令列方式執行。 如下所示,

leela zero的命令列引數介紹

以命令列方式執行leela zero

我們可以直接用引擎下棋, 只是太不使用者友好。 所以有很多圍棋AI使用者介面程式。 為了讓使用者介面程式和引擎對接,必須對接才行。 接下來主要分享配置leela zero引擎的引數,這些引數都是什麼意思,有什麼作用?

leela zero的命令列引數介紹

配置leela zero引擎

上面的第一行指明leelaz可執行程式在磁碟的位置,

-

g(--gtp)

表明leela zero要啟動gtp模式,圖形使用者介面程式sabaki透過gtp和leela zero通訊 -g是——gtp的簡寫,作用相同。

-r(--resignpct)

0 指明只有當勝率降到0時才認輸。如果不設定,預設到勝率到10%就認輸。

--noponder

禁止對手在下棋時,leelazero也在思考。

-w(--weights)

指明權重檔案的位置。

-p (--playouts)

限定圍棋AI搜尋的playout數目。透過這個可以限定AI的棋力。

-v(--visits)

限定AI對當前點的訪問次數,跟-p差不多。

-t (--threads)

啟動幾個執行緒進行搜尋。設為0讓AI自己選一個合適的執行緒數量。

-b (--lagbuffer)

以釐秒來設定搜尋的緩衝,之前的章節中講過,設定10秒一步,引擎日誌會顯示最多思考9秒。另外1秒就是緩衝。因為有多個執行緒在遞迴搜尋時,時間不能精確控制什麼時候結束。

我的建議是最好不要這個為0.

以上是leelaz提供的命令列引數。也是在上圖第二行可以配置的。

接下來將gtp提供的常用的命令的用法。

time_settings 0 10 1

第一個引數用來設定一盤棋需要多長時間,0表示沒有限定,第二和第三個引數用來設定幾步棋用幾秒,10 1表示一步10秒。

heatmap用來顯示當前棋形的所有熱點。很多圖形使用者介面都提供了分析功能,比這個強大很多。

lz-memory_report可以顯示當前的記憶體使用情況。

另外一個比較強大的是

lz-setoption

。 這個命令可以動態修改最大記憶體,cache的比例,playout以及visit的個數,認輸勝率等。之前說過leela zero預設對64位作業系統設定4G記憶體用來存放搜尋樹,如果機器足夠強大,這個值小了怎麼辦?

可以用以下的命令來修改。

lz-setoption name Maximum Memory Use (MiB) value 5120

= Setting max tree size to 4393 MiB and cache size to 488 MiB。

同時為了提高速度,

也可以提高cache的比例

(預設是10%,提高到20%)。

lz-setoption name Percentage of memory for cache value 20

= Setting max tree size to 3904 MiB and cache size to 976 MiB。

如果你的機器足夠強大,引擎配置可以如下:

leela zero的命令列引數介紹

配置更大的記憶體