上一篇見識了「KaTrain」強大的分析功能,使用一段時間後變得比較貪心,希望分析結果的時間能加快一些,想到我的顯卡 RTX4060 雖然不算高檔,但應該還是比 CPU 運算能力強很多。所以研究了一下如何讓 KaTrain 改用 KataGo GPU 版,沒想到速度提昇相當有感,也慶幸終於可以讓這塊顯卡發揮功效了,因為平常真的找不到比較長的時間玩 3A 遊戲大作,沒什麼機會讓 GPU 活動筋骨,這下當初市價萬元的顯卡總算沒白買~
身為工程師的一個毛病是,找到 solution 後還會想著能不能再優化,聽說 KataGo 還有 TensorRT 版,能夠榨出更多 Nvidia 顯卡效能。雖然 KaTrain 跑 GPU 版我已經很滿意了,但還是很好奇,TensorRT 版究竟能快到什麼境界。先說結論,給我的感受大概類似當初 Windows 硬碟一分鐘開機,改用 SSD 後 10 秒進系統畫面那般震撼!
不過也先別高興太早,想當初我只求 KaTrain CPU 版能正常操作,是因為有預感優化 GPU 會很折騰,果不其然現在動手研究後真的到處碰壁,不然也不會有這篇心得了。以下會詳細說明 KataGo TensorRT 版安裝過程所有需要注意的地方,同時最重要的是,如何讓預設沒有 TensorRT 版的 KaTrain,也能正常執行 KataGo TensorRT 版,發揮 GPU 最高效能。
圍棋人機對奕系列文章:
(圖片出處: unsplash.com)
一、KataGo 四種運算方式
根據 KataGo 官網說明「OpenCL vs CUDA vs TensorRT vs Eigen」,提供了四種運算方式: 1. CPU 純粹使用 CPU 進行運算,從安裝檔名辨識可分為兩種:- eigen:適合比較舊的 CPU 型號,不支援 AVX2 指令集,例如 Intel 第三代及較舊的 CPU
- eigen + avx2:適合比較新的 CPU 型號,支援 AVX2 指令集,例如 Intel 第四代之後的 CPU
二、安裝 CUDA + TensorRT
1. 失敗的情形 安裝 KataGo TensorRT 版並不容易,一開始找了幾篇安裝教學,花了大量時間下載,因為所有檔案大小將近 5G。小心地按著教學步驟,雖然最後 TensorRT 看起來有執行,但 KataGo 都會報錯無法執行。 交叉測試直到成功的過程就不贅述了,直接總結失敗原因:- 除了教學文章的必要動作不可省略,還有其他因素會導致失敗
- 我以為類似 Java、NodeJS,找最新版本安裝比較好
- 結果後來發現 CUDA、TensorRT 都要找到非常精確的版本下載才不會出錯
- 只要對應的版本號不同,KataGo 可能就無法啟動
Cuda 12.8.* and/or TensorRT 10.9.0.* should hopefully be suitable for the most recently released NVIDIA GPUs as of April 2025, the RTX 5000 family. It's recommended that you install and run these with the matching versions of CUDA and TensorRT rather trying to run with different versions.意思就是說,「Cuda 12.8 及 TensorRT 10.9 適合 2025 年 4 月最新的 RTX 5000 系列顯卡」,所以我的 RTX 4060 可能不適合這些最新版本。「請安裝與 KataGo 完全吻合的版本,不要嘗試安裝不同的版本」,看到這句話算是驗證了我的失敗原因。 3. 查詢顯卡資訊 所以首先需要查出,與自己 Nvidia 顯示卡相容的 CUDA 版本為何,只要確認安裝過顯卡驅動程式,在 Windows 可開啟「命令提示字元」視窗,執行以下指令查詢 Nvidia 顯卡資訊:
nvidia-smi
執行後出現類似上圖的資訊,可看到我的 RTX4060 顯卡驅動程式,紅框處標示了相容的 CUDA 版本為「12.4」,代表我需要使用的 CUDA 版本號必須等於或小於這個數字。
4. 下載 KataGo 正確版本
進入KataGo 官網下載頁面:
可看到目前最新版是 1.16,找到對應的「Assets」區塊,顯示這個版本號有 38 個檔案,分別對應不同作業系統、不同運算方式的版本號。但因為檔案太多了,必須點擊「Show all 38 assets」才能展開,看到所有檔案。
以我的 RTX4060 為例,必須找到 CUDA 12.4 以下的數字,及包含 TensorRT 的版本:
上圖可看到版本號眼花撩亂,但只有一個我能下載,其他都會導致 KataGo 無法執行:
這個版本號代表:
- KataGo 1.16 版
- Windows 系統 64 位元
- 需要安裝 CUDA 12.1 版
- 需要安裝 TensorRT 8.6.1 版
- 紅框上方還有一個相似的版本號,多了
bs50 ,代表 board size 大棋盤尺寸,除非有這個需求,不然不需要下載這類版本
- CUDNN 是安裝 CUDA 板才需要下載
- TensorRT 版沒有看到需要 CUDNN 的內容描述
- 而且從我下載的檔案 katago-v1.16.0-trt8.6.1-cuda12.1-windows-x64.zip 就能看出,並沒有 cudnn 的字串
TensorRT 8.6 GA for Windows 10 and CUDA 12.0 and 12.1 ZIP Package
這個檔案的連結如下:
下載完解壓縮 ZIP 檔,放到指定路徑,接下來設定環境變數,以 Windows 10 為例:
- 開始 → 設定 → 系統 → 關於 → 進階系統設定 → 環境變數
- 在「系統變數」找到「Path」 → 編輯
- 上方紅框可看到,前面安裝 CUDA 後,會自動產生兩筆 CUDA 路徑
- 下方紅框這兩筆 TensorRT 則是需要自己手動填入的資料,可按「新增」來新增資料
- 分別填入兩個路徑:你的 TensorRT 資料夾下的
lib 、bin 這兩個資料夾
三、安裝 KataGo TensorRT 版
1. 解壓縮 KataGo 檔案 前面「二、安裝 CUDA + TensorRT」→「4. 下載 KataGo 正確版本」,已經找到適合我 RTX4060 的 KataGo 版本 katago-v1.16.0-trt8.6.1-cuda12.1-windows-x64.zip,將你的版本檔案解壓縮後,放在自訂路徑即可。 2. 下載權重檔 如果沒安裝過任一版 KataGo,那麼還需要下載配合適當版本的權重檔案,下載頁面網址: 如果跟我一樣是安裝最新版 KataGo,就可以使用這個網頁開頭推薦的檔案,例如找到「Strongest confidently-rated network」,這是最強、可信賴的權重檔案,目前的檔案連結為: 下載後可將檔名改為簡單易記的格式,例如katago genconfig -model weight_b28.gz -output WFU_TensorRT.cfg
- weight_b28.gz 請改為你的權重檔案名稱
- WFU_TensorRT.cfg 請改為你的設定檔名稱
過程需要花上好幾分鐘進行測試,如果順利成功的話,會出現類似上圖畫面:
- 最上方紅框有
(recommended) 字樣的這一行,是 KataGo 根據硬體設備推薦 numSearchThreads 使用的數量,我的 RTX4060 推薦數量為 16,請紀錄自己畫面顯示的數字,之後會用到。 - 第一個紅色底線顯示,設定檔已寫入我自訂檔名 WFU_TensorRT.cfg,代表設定成功
- 第二個紅色底線,代表將來執行 KataGo 使用的參數,也請紀錄起來,之後會用到。
gtp -model 權重檔案名稱 -config 設定檔名稱
上面的截圖可看到權重名稱及設定檔名都加上了引號,如果檔名含完整路徑的話,加上引號比較不會出錯。如果是同路徑,則不須使用完整路徑,那麼也就不需要加引號。
四、Sabaki 設定 KataGo
只要前面的流程跑到產生 KataGo 設定檔,都沒出問題的話,代表全部都安裝、設定成功了,那麼大部分的圍棋圖形界面軟體應該都能跑 KataGo TensorRT 版沒什麼問題,以下簡單舉例「Sabaki」如何加入 KataGo TensorRT 版引擎。
上圖為新增引擎的畫面,我增加了 KataGo Tensor 這個引擎,選擇 KataGo Tensor 版的執行檔路徑後,紅框那一行填入前面提到的參數,請自行修改檔名:
gtp -model 權重檔案名稱 -config 設定檔名稱
紅框下面一行參數為 GTP 指令,代表強制 AI 每手 5 秒鐘落子。
來看看 KataGo Tensor 版的分析速度,真是快得嚇人,過沒 5 秒鐘已經分析了數千手,上圖紅框這三個建議選點,加起來已經計算分析超過一萬手。
只不過需要提醒一下,這麼強大的計算力需要付出一點代價,KataGo Tensor 版啟動時需要花費不少時間,以我的硬體配備,每次都需要等三十多秒的時間。
五、KaTrain 執行 TensorRT 版
1. KaTrain 的運作方式
Sabaki 安裝 KataGo Tensor 版實在輕鬆愉快,幾秒鐘就搞定,但 KataGo 專屬的界面 KaTrain 卻讓我不斷碰壁。借用系列文「KaTrain」的圖片說明,上圖可看到,讓 KaTrain 自動下載 KataGo 版本時,只會抓 Eigen、Eigen AVX2、OpenCL 這三種版本而已,不會抓 CUDA、Tensor 版。
仔細想想後來也能理解,KaTrain 設計的目的,就是讓使用者不必研究複雜的版本、參數、權重檔案等等,就能輕鬆操作 KataGo,所以在設計上根本不會特地為 CUDA、Tensor 這兩個版本考慮,或是進行優化,難怪我怎麼想都無法知道,要如何讓 Sabaki 輕鬆就能加入的下面這行參數,能夠在 KaTrain 執行:
gtp -model 權重檔案名稱 -config 設定檔名稱
雖然在上圖的 KaTrain 設定畫面,有看到一行「KataGo 設定檔路徑」,但我們若將 Tensor 版設定檔路徑填進去,只會不斷報錯而已。這代表 KaTrain 的設定檔有自己的格式,除非我們將 Tensor 版設定檔格式,改成完全符合 KaTrain 的設定檔格式,才有可能解決問題。
2. 如何讓 KaTrain 跑 TensorRT 版
最後我在這篇文章找到了靈感「圍棋AI軟件katrain 和katago的整合安裝」,作者也是在 KaTrain 設定畫面填入了自設的設定檔路徑,跟我一樣不斷報錯,但他的作法是,在自訂的設定檔,新增會報錯的內容並修改參數。
雖然我有想過這麼做,但不確定到底有多少處要修改。現在有了成功案例後,自然知道該如何進行,把所有會報錯的項目逐一加上去。請參考以下步驟:
A:找到原本的 KaTrain 設定檔,位置應該在「Katrain 路徑\_internal\katrain\KataGo\analysis_config.cfg」,用文書軟體開啟這個檔案。
B:用文書軟體編輯 TensorRT 版設定檔(前面的範例檔名是 WFU_TensorRT.cfg),最後面新增的內容如下:
numAnalysisThreads = 16
nnMaxBatchSize = 96
nnRandomize = true
- numAnalysisThreads 的參數請填入前面「三、安裝 KataGo TensorRT 版」→「3. 產生設定檔」,測試完畢後 KataGo 根據硬體設備推薦 numSearchThreads 使用的數量,我的 RTX4060 推薦的數字是 16
- nnMaxBatchSize 與 nnRandomize 的數值,請在你的 analysis_config.cfg 中搜尋,看看這兩項的數值是什麼
進入 KaTrain → 左上角選單圖示 → 一般和引擎設定,出現上圖設定畫面:
- KataGo執行檔路徑:填入 TensorRT 版執行檔路徑
- KataGo執行檔路徑:填入剛改好的 TensorRT 版設定檔路徑
- KataGo執行檔路徑:填入權重檔案路徑
- 因為改用 TensorRT 版,右下紅框運算步數從 500 改成 2500 或更多都不成問題
- 按「更新設定」即可
更新設定後,回到主畫面,右邊訊息欄會顯示類似「引擎更新重新載入」的字樣,同時下方燈號會變成「橘色」。點擊燈號的話會顯示上圖訊息,代表目前處理中。
第一次更換 TensorRT 版引擎系統會跑上幾分鐘,需要等一會才能使用 KaTrain。
但即便將來重新啟動 KaTrain 後,載入 TensorRT 版引擎也是要花不少時間,以我的硬體配備每次都要等上三十多秒,跟 Sabaki 差不多。
比較奇怪的是,每次載入 TensorRT 版引擎過程,我的畫面都會如同上圖報錯(有 ERROR 訊息),但這並不影響 KaTrain 運行,因為最後都會顯示綠燈,而且 Sabaki 也會出現相同的 Error 訊息。總之按照以上流程後,KaTrain 執行 KataGo TensorRT 版是絕對沒問題的,盡情享受飆速分析吧!
六、總結
KataGo TensorRT 版的 AI 光速分析,嘗試過就回不去了,只不過我們每次打開圍棋軟體,不一定都是拿來分析勝率、最佳選點。假設只是要跟 AI 對奕,那麼啟動軟體要等上三十多秒,不是一件很有效率的事。 所以簡單做個總結:- 如果常常與 AI 對奕的話,其實使用 KataGo OpenCL 版就足夠了,啟動等待時間幾秒鐘是可以接受的,CP 值比較高,而且 AI 的實力仍是人類遠遠比不上的。
- 等到偶爾需要覆盤、分析的時候,再將引擎切換為 KataGo TensorRT 版,短時間就能得到上萬次的超高品質分析結果。
- 總之根據使用圍棋軟體的目的,再決定使用 OpenCL 版或 TensorRT 版,是比較合理的作法。
圍棋人機對奕系列文章:
非常感谢
回覆刪除