KataGo - 最強圍棋開源AI

Tony Liou
8 min readFeb 1, 2021

--

自從 AlphaGo 在2016和2017年接連打敗多名世界頂尖的職業9段棋士後,圍棋和其他棋類一樣,也進入了被 AI 完全統治的年代。

AlphaGo

AlphaGo 的出現,使圍棋的發展有重大的突破,長久以來被大量使用的定石或觀念,不斷地被挑戰而加以改進。然而,在 DeepMind 完成 AlphaGo Zero 的開發後,Google 宣布 AlphaGo 將不會再參與公開的對戰,意味著 AI 在棋類發展的階段性成功與近代最強圍棋 AI 的引退。

雖然 AlphaGo 不會再產出任何棋譜,但是 Google 釋出了部分 AlphaGo 過往對弈的棋譜,和 AlphaGo Zero 與 AlphaZero 的論文。以下我們所要講的圍棋引擎 – KataGo,就是基於這些 AlphaGo 的遺物(?)而生的。

本篇就是讓大家對 KataGo 有基本的了解,並讓想要嘗試 KataGo 的人,能夠快速地安裝好所需的程式。

Table of Contents

  • KataGo 簡介
  • 圖形介面 (GUI)
  • 安裝教學(KataGo + CUDA)
  • 參數設定
  • 實際使用
  • 結語

KataGo 簡介

KataGo是David J. Wu依照DeepMindAlphaGo ZeroAlphaZero論文為基礎,以及許多在DeepMind論文之後的相關研究及原創的研究,大幅改善了訓練速度(超過50倍),也因此搭配所釋出訓練網路資料,成為目前世界上頂尖的電腦圍棋軟體。

KataGo 是一款截至2020為止,最強的開源圍棋機器人(bot),在大多數情況下強於 Leela Zero (原作者已停止維護)。

它使用許多加強與改進後的類 AlphaZero 訓練過程來訓練自己,簡單講就是:

  • 不使用人類棋譜,只給予圍棋的基本規則
  • 不需要太多資源 (單一GPU已足矣)

而 KataGo 的特點有:

  • 在分析模式下,除了預測勝率外,還包含估算領地和目數
  • 擅長讓子棋,不像某些 AI 在局勢極度落後時,下得過於保守
  • 支援 7x7 到 19x19 的棋盤大小
  • 支援多種圍棋規則,例如:日本規則、中國規則、OGS-中國規則等
  • ......

圖形使用者介面(GUI)

雖然 KataGo 可以透過 Console 直接進行操作,但是對於單純想下棋或不熟悉終端機的使用者來說,有個棋盤和圖形使用者介面能看的話,還是比較容易使用的。

以下介紹幾個能與 KataGo 無縫接軌的圍棋圖形介面軟體

  • Katrain — 專門為 KataGo 開發的工具,最容易安裝的分析與下棋軟體。對於不熟悉程式安裝與想要簡單的人來說,是最適合的工具。此軟體安裝時,也會一併安裝 KataGo。若無特別需求,就不用另外下載其他引擎了。
  • Lizzie — 專門為 Leela Zero 打造的圖形介面,也是蠻熱門的使用者介面,但是與 KataGo 搭配使用可能會有比較多問題。
  • q5GoSabaki 都是通用的 SGF (用來儲存棋盤遊戲紀錄的檔案格式) 編輯器,也都能夠搭配 KataGo 使用。

因為 KataGo 是使用 GTP (Go Text Protocal) 與圖形介面程式進行溝通。因此,除了上述的程式之外,只要程式支援 GTP,都能夠搭配使用。

安裝方法

版本選擇:

下載 KataGo 之前,以下幾點可以協助判斷哪種版本適合你:

  1. 是否有獨立顯示卡 (GPU);若無,選擇 CPU 版本的安裝檔
  2. 是否為 Nvidia 的獨顯;若否,選擇 OpenCL 版本
  3. 是否要使用 CUDA 來運行 KataGo;若是,根據你顯示卡型號選擇較適合的 CUDA 安裝檔

運算速度基本上為 CUDA ≥ OpenCL > Eigen(CPU)

一般來說,若有一張 RTX 系列的 Nvidia 顯示卡,選擇 CUDA 版本可以發揮最大的效能,因為內部的 Tensor Core 可以加速 KataGo 的計算;其餘的獨顯應該都能使用 OpenCL 來進行計算。然而,若是顯卡型號過舊,可能就要往下選擇 Eigen AVX2 指令集版本使用 CPU 來進行運算。若是連 CPU 型號都過舊,可能就只能選擇純 Eigen 的版本了。

決定好後就可以到 Release 下載囉~

下載檔案:

以下將對於 Windows 上的 KataGo + CUDA 版本進行使用教學,其餘版本例如安裝於 macOS 或 Linux 上的 OpenCL 或 Eigen 的版本,可於 GitHub 上觀看詳細說明。

KataGo files

下載並解壓縮完成後大概會看到類似旁邊的圖,只是缺了幾個檔案。

像是 b30、b40 或 default_model.bin.gz 這些模型檔案。

以下列出補齊檔案的方法。

  • CUDA Zone 可以取得 cublas*.dll 等檔案
  • cuDNN 可以取得 cudnn64*.dll,只是需要登入後才能下載
  • 模型檔可以在 Releases v1.4.5 找到,或到公開訓練的網站尋找最新的訓練模型。

將所有下載的檔案都放在與 katago.exe 同一個資料夾,就安裝完成了~

參數設定

在開始設定 KataGo 的組態之前,可以先檢查有無 default_gtp.cfg 和 default_model.bin.gz,在使用上可以少打點指令(我就懶~)。

若缺少模型檔,可以先將剛下載的 g170 版 b20c256x2 開頭的模型檔檔名改為 default_model.bin.gz。若是不想更改檔案名稱或想頻繁更換使用的模型,那以下所有指令都需要加上 -model <NEURALNET>.bin.gz 才能夠順利執行。

  1. 開啟命令提示字元 (cmd.exe)並輸入 cd download\path\to\your\folder\ 移動到 katago.exe 所在的檔案夾位置。
  2. 以目前的設定進行 KataGo (基準)測試。
    katago.exe benchmark
  3. 若順利完成測試,則會顯示建議的搜尋所使用的線程數量。開啟 default_gtp.cfg 檔,找到 numSearchThreads 欄位,將測試後得到的數值填上並存檔。
  4. 執行以下指令並可以開始下棋囉~
    katago.exe gtp

default_gtp.cfg 檔中還有其他許多可以調整的參數,例如:思考時間、規則、認輸時機、虛手⋯⋯等。若有興趣的人,可以閱讀檔案中各個項目的說明,自行調整。

實際使用

最後使用 Sabaki + KataGo 來實際展示一下。

引擎設定的方法為:指定執行檔(.exe)路徑,將上述需要用到的指令加上就完成了。

圍棋引擎設定
Block20 vs Block40
Block20 resigned
對局結束

不同的模型,經過測試(benchmark)與調整後,就能達到對於當前硬體配置下的最佳狀態,而 block 數愈大的 model,棋力就愈強。就像上圖一樣,Block 20 與 Block 40 的模型不論對弈幾盤,都會是 Block 40 贏。雖然 Block 20 不敵 Block 40,但對於要贏過人類來說,還是綽綽有餘的。

KataGo 除了能對弈以外,它還有強大的分析功能,對於當前盤面能給予多手點位選擇,並提供後續幾手的預測功能。在上面提到的幾款 GUI 程式中,都能很方便的使用這些功能,因此剩下的功能就留給大家自己去挖掘囉~

實際使用影片:

KataGo + Sabaki with Radeon Pro 555X

KataGo + Sabaki with GeForce RTX 2070

KataGo Analysis mode

結語

以往學習圍棋的路途上,都是向比自己強的老師學習相關的思路與走法來進步,但是每個人都有不同的風格,在討論到哪種走法比較好的時候,往往以段位較高的人所提出的說法為準。

像是以往對於外勢與實地的取捨,從許多定石與職業棋士的走法來看,外勢感覺會比實地重要,而 KataGo 對此的看法截然不同,常常四個星位佔完後,直接點入三三。如果是以前的老師一定有很高的機率會說太早點不好,在佈局階段讓敵人外勢太厚。

自從新一代的圍棋 AI 出現後,不再需要以人的段位來判斷誰的下法"感覺"比較好,直接讓 AI 算給你看就行了。至此,圍棋界又有了新一番的突破,對於想學圍棋的人,也有了一個超強的老師,全年無休幫你復盤XD

若是真的自己的電腦不夠力,但還是想嘗試看看 KataGo 的話,可以上 OGS 找電腦對弈,當中棋力最高的就是 KataGo 的加強版 (使用高端顯卡)。

雖然可能不會有人那麼無聊,但還是要提醒一下。由於 KataGo 的算力遠在人類之上,因此如果在對弈時,使用 KataGo 或其他圍棋AI作為輔助,就像是考試的時候直接看解答一樣,都算是一種作弊行為喔~(好孩子不要學)

--

--