| 版本
|
更新內容
|
日期
|
| v1.16.4
|
- 新增 eval-cache(評估快取)功能,當回溯到上一步時,能利用已探索的評估結果
- 子樹價值偏差在虛手之後的節點不再生效,以避免評估被沒有局部特徵的模式所干擾
- 修復在貢獻分散式訓練時,不必要的鎖定可能阻擋新對局開始的問題
- 修復 play.py 和特徵提取中的拼寫錯誤,這些錯誤可能導致 Python 程式崩潰
- 進行各種內部程式碼重構與清理
|
2025年10月20日
|
| v1.16.3
|
- 新增對 Windows 系統上 MinGW 編譯器的支援(用於 OpenCL/Eigen)
- 允許使用人類策略來生成開局庫
- 修復分散式訓練程式偶發崩潰問題
- 為 Linux 版 CUDA 和 TensorRT 程式啟用 TCMalloc
- 修復某些虛手 hack 選項會導致搜尋行為錯誤的問題
- 修復開局庫轉換為訓練資料時的回合數不正確的問題
- 修復非法遊戲歷史記錄檢查的除錯輸出
- 修復 MacOS/Metal 平台編譯和指令碼問題
|
2025年6月28日
|
| v1.16.2
|
- 修復 v1.16.1 中一個導致 Metal 後端完全無法使用神經網路權重計算的嚴重錯誤
- 修復在從原始碼編譯時,無法正確檢測較新的 TensorRT 版本的問題
|
2025年6月4日
|
| v1.16.1
|
- 緩解因神經網路輸出出現無限值/非數值(NaN) 導致程式崩潰的問題
- 修正 "-fixed-batch-size" 和 "-half-batch-size" 參數在基準測試中批次大小限制方面的錯誤
- 現在能容忍 SGF 或 GTP 指令中的簡單劫爭違規(類似於已支援的超級劫處理)
- 升級編譯標準至 C++17,而不是 C++14
- 修復在 +bs50 可執行檔中不接受 50 參數的問題
- 更新 cmake 邏輯以支援新版 TensorRT 命名格式
- 大幅重組 Python 程式碼目錄結構,將模組移至 ./python/katago/ 套件中
- 更新部分訓練指令碼不再依賴於符號連結,以改善在 Windows 系統上的相容性
|
2025年6月3日
|
| v1.16.0
|
- 新增記錄 「動作價值」(q-value),即預期勝率與得分,並新增兩個策略頭通道
- 支援讀取新的訓練資料 (qValueTargetsNCMove) 和 v16 版網路,同時保持向後相容性
- 合併 Metal 後端的程式碼,可在 MacOS 上運行 KataGo(暫無預編譯執行檔)
- 新增搜尋參數 enableMorePassingHacks,預設為 GTP/Analysis 啟用,改善虛手邏輯
- 分析引擎現在會報告 playSelectionValue,顯示 KataGo 選擇某一步的傾向
- 在訓練中添加對巢狀殘差瓶頸塊的實驗性支援,其透過單一或前後轉置的擴張卷積組成
- 在訓練中新增訓練視窗(即資料範圍)的日誌記錄
- 實現 npz 檔案的並發載入,以略微加快訓練速度
- 新增對 Pytorch 2.6+ 安全檢查點的支援
- 在 Python GTP play.py 指令碼中支援矩形棋盤和命名規則
- 修復 GTP 指令 kata-get-param 無法正確讀取 numSearchThreads 的問題
- 修復即使允許非法動作,相同玩家連續第二次的移動也會被視為無效的問題
- 修復 autoAvoidRepeat 相關參數被忽略或解析失敗的問題
- 修復開局庫生成、更新各種 sgf/hint 處理工具
- 改進對 GoGoD 和 Fox SGF 格式的處理,以用於產生 sgf 訓練資料
- 改進 GPU 數值錯誤檢查與測試指令碼
- 對 play.py 指令碼進行細微修復
- 修復在彙總自我對弈檔案以快取其大小時,指令碼錯誤地報告
- 修復用於摘要舊自我對弈檔案的指令碼中的錯誤回報機制,以快取其檔案,避免頻繁的查詢
- 修復訓練程式碼在讀取「chunky」格式的資料檔時,隨機化計算不正確的問題
- 修復訓練程式碼在避免對同一資料重複取樣時過於激進的問題
- 修復洗牌指令碼在記錄資料檔案範圍時不正確的問題,確保日誌資訊的準確性
|
2025年4月10日
|
| v1.15.3
|
- 修復 genmove 在較高 humanSL 訪問次數與較低 maxVisits 時無法返回著法的錯誤
- 修復在從原始碼編譯時,無法正確檢測較新的 TensorRT 版本的問題
|
2024年8月6日
|
| v1.15.2
|
- 修復無權重存取 humanSLRootExploreProbWeightless 不計入總訪問/類比次數限制的問題
- 修復 KataGo 在第一次或第二次訪問任何節點時會忽略人類 SL 探索參數的問題
- 修復在不使用任何後端(即虛擬後端)的情況下編譯 KataGo 進行測試時出現的編譯錯誤
- 修復某些系統上 cuda 後端編譯類型的問題
- 改進關於使用人類模型的相關檔案與註解
- 新增一個名為 gtp_human9d_search_example.cfg 的範例組態檔
|
2024年8月5日
|
| v1.15.1
|
- 修復分析引擎在查詢版本時會報告錯誤的問題
- 改進範例檔 gtp_human5k_example.cfg 中關於如何使用全新人類 SL 模型的文件
|
2024年7月20日
|
| v1.15.0
|
- 全新的人類模型,可類比不同棋力等級的人類棋手,用於分析或下出更像人類的棋
- 修改 GTP 和分析引擎以支援人類 SL 模型,請參閱檔案
- 修改 GTP 指令,現在會報告所用神經網路的訊息,而不僅僅是 KataGo 可執行版本
- 修改 GTP kata-set-param 現在支援動態改變大部分搜尋參數,而不僅僅是部分參數
- 修改 GTP kata-analyze 現在支援新的 rootInfo 屬性,用於報告根節點統計資料
- 新增 GTP resignMinMovesPerBoardArea 屬性,用於防止提前認輸
- 新增 delayMoveScale 和 delayMoveMax 參數,可為著法添加隨機延遲,使節奏更自然
- 分析引擎會在回應包含未使用欄位的查詢時報告警告,以幫助提醒使用者註意拼字錯誤
- 分析引擎現在會在 rootInfo 中報告各種原始神經網路輸出
- 重新定義 visits ,現在表示子節點的訪問次數,更能體現評估深度。而不是邊訪問次數
- 新增 edgeVisits ,用於報告邊訪問次數,一定程度上顯示搜尋對此移動的「偏好」程度
- 對 TensorRT 的錯誤處理功能更加完善,捕捉硬體出現問題的情況,避免錯誤或遊戲中斷
- 對訓練指令碼進行大量更改和更新,以支援人類 SL 模型訓練和架構
- 新增 sgf->training data 指令 ./katago writetrainingdata,用於產生人類網路的訓練資料
- 新模型的組態現在預設為模型版本 15,不同的通道輸出頭架構
- 對訓練指令碼進行許多小錯誤修復和細微調整
- 在 Gatekeeper 中新增組態所需獲勝比例的選項
|
2024年7月19日
|
| v1.14.1
|
- 從原始碼編譯可以再次使用 TensorRT 8.5 和對應的 CUDA 版本(如 11.8)
- 修改終局得分獎勵,使其不阻礙吃子走法,鼓勵頻繁地輕微對抗,並駁斥糟糕的殘局清理
- 訓練程式碼會隨機化歷史掩碼,而不是使用資料生成時的靜態遮罩,略微改善資料多樣性
- 訓練程式碼會在訓練資料中清除 NAN,若神經網路在訓練過程中遇到梯度爆炸後仍能恢復
- 對各種程式碼和檔案的細微清理,並新增一份關於「圖形搜尋」的檔案
|
2024年3月11日
|
| v1.14.0
|
- 支援更大、更強的 b28c512nbt 神經網路
- 新增對「v15」模型格式的支援,該格式為虛手策略頭添加非線性,是 b28 網路所必需的
- 分析模式會忽略歷史記錄(仍然遵循劫爭),對弈模式默認考慮歷史記錄(均可設定)
- Eigen 版本所有執行緒會共享網路權重而不是複製它,這應該會大大減少記憶體佔用
- TensorRT 編譯新增 USE_CACHE_TENSORRT_PLAN 選項,可加快啟動速度但佔用主記憶體
- 修正嚴格計分規則下被迫分析一個理應已結束的局面時,不會嘗試贏得比賽且假設對手不會獲勝的錯誤
- 修正記憶體存取錯誤,該錯誤可能導致在日文規則填充 dame 時出現輕微偏差
- 修正貢獻訓練對局時,若首次網路查詢失敗,則整個程式失敗,而不是重試該查詢的問題
- 修正一些多執行緒競爭問題,避免在搜尋過程中在陣列之間複製任何子節點
- 修正指定多個 GPU 的情況下解析某些格式錯誤的組態時出現的錯誤
- 修正含有設定棋子的 SGF 檔案中,判斷首回合隱含落子方的錯誤
- 修正當根策略樂觀度與樹策略樂觀度不同或 softmax 等參數發生變化時,重新計算根策略樂觀度的錯誤
- 修正 Eigen 後端執行緒數不一致的問題
- 縮小 Eigen 後端預設的批次大小,能有效地利用執行緒較少的核心
- 對涉及回合數、搜尋節點和其他細節的內部程式碼進行少量清理
- 新增 bSizesXY 選項,用於精確控制棋盤尺寸,用於自我對弈或匹配,而不只是單邊長
- 改進書籍生成程式碼,並添加先前用於 katagobooks.org 上 9x9 書籍生成的參數
- summarize_sgfs.py 工具現在可以識別和輸出 Elos 中石頭剪刀佈局面的統計資料
- 在內部測試比賽中增加對動態貼目 (komi) 的實驗性支援
- 對 startpos/hintpos 命令添加各種附加參數以及細微的更改和錯誤修復
- 訓練模型使用更便宜的 repvgg-linear 架構,其不會實例化1x1卷積,而是增加3x3卷積中心方格的 LR
- 更新所有過時的自我對弈組態參數,並添加它們的 readme 檔案
- 細微調整訓練資料 NPZ 格式(向後相容),以支援將人類遊戲轉換為 NPZ 訓練資料
- 改進 shuffle.py 和 training.py 的預設值以及 -help 檔案,python shuffle.py -help
- 對各種檔案進行各種其他小更新
- 改進並稍微重新安排同步迴圈邏輯
- 修正 Python 開發板實作中 wouldBeKoCapture 的錯誤
- 修正本地自我對弈提示位置中 trainingWeight 會被忽略的錯誤
- 現在將 pytorch 模型檢查點遷移到較新版本時會清除迴圈計數器
- 修正更新自我對弈檔案總計和 shuffle 指令碼參數出現的錯誤
- 修正用於訓練的開發命令和 Python 指令碼的其他一些錯誤
|
2023年12月28日
|
| v1.13.2
|
- 修復 Homebrew 或其他自動化建置流程的測試問題
|
2023年5月26日
|
| v1.13.1
|
- 修復 TensorRT 版本中 plan cache 命名衝突問題,並加強錯誤檢查機制
|
2023年5月24日
|
| v1.13.0
|
- 新增樂觀策略,傾向於尋找意想不到的好棋
- 新增 Softplus 啟用函式,用於預測梯度與啟用縮放,以修正導致訓練不穩定的異常值
- 修正在低類比數下判斷最佳手的錯誤,導致其在小棋盤上偶爾下出極差的棋步(1-1 點)
- 自動將執行緒數限制為類比數的 1/8 左右,以防止使用過多執行緒數導致搜尋品質受損
- 新增迴避歷史對局中的棋步,提升落子多樣性(gtp_example.cfg)
- 更新 gtp2ogs 8.x.x 版本中 ogsChatToStderr = true 的行為,以便在 OGS 上運行 KataGo
- 新增參數 gtpForceMaxNNSize,減少更改棋盤大小時冗長的等待,但會降低小棋盤的效能
- 修正 match 運行迴圈匹配時 extraPairs 的錯誤,刪除對 blackPriority 配對邏輯的支援,並添加
extraPairsAreOneSidedBW 以允許使用單面顏色進行匹配
- 新增指令碼 query_analysis_engine_example.py,示範透過 Python 使用分析引擎
- 新增支援模型版本 "12"(對應樂觀策略頭)、"13" 和 "14"(對應 softplus 誤差縮放)
- 提供三個指令碼能把舊版本升級 migrate_optimistic_policy.py、migrate_softplus_fix.py、migrate_squared_softplus.py
- 更新 train.py 採用 KataGo 主訓練流程中經測試有效的參數
- 修改 summarize_old_selfplay_files.py 所輸出的 JSON 格式,該檔案會被 shuffle_loop.sh 洗牌指令碼呼叫,用於快取資料以避免每次洗牌都重新搜尋所有目錄,新格式現在追蹤目錄的 mtime,避免漏抓資料
- 重寫 synchronous_loop.sh 指令碼,使其將所有內容複製到一個以日期命名的目錄中執行,以避免 git 影響正在進行的訓練流程。也新增 -max-train-bucket-per-new-data 等標記,有助於防止過擬合,能更好地調整週期/遊戲週期/遊戲週期的大小
- 重寫自我對弈訓練相關檔案,使其內容與 v1.12.x 版本中引入的 PyTorch 訓練流程保持一致,並補充推薦使用 -max-train-bucket-per-new-data 及其他先前未特別強調的參數,這些設定能更輕鬆地掌控自我對弈與訓練速度之間的比例
- 移除 C++ 程式碼中用於將部分資料分離為驗證資料的混亂邏輯(maxRowsPerValFile 與 validationProp),因為這部分未被訓練指令碼實際使用。現由 shuffle.sh 指令碼隨機選取約 5% 的 .npz 檔案作為驗證資料。可設定環境變數 SKIP_VALIDATE=1 以停用此行為
- 移除 train.py 對自我蒸餾的支援
- 優化 shuffle.py 處理大量檔案時的效能
- 修正洗牌器在處理由其他洗牌產生的 .npz 檔案而因命名錯誤而無法正確洗牌的問題
- 修正 train.py 中 -no-repeat-files 選項失效的問題
- 自我對弈現接受 .bookposes.txt 與 .startposes.txt 結尾的檔案,不再僅限於 .hintposes.txt
- 刪除程式碼中不必要的 sgfmill 函式庫,若需使用可透過 pip 安裝
- 將 Python 縮排標準化為 4 個空格
- 針對各種指令碼添加各種其他標誌並進行細微清理
- 在初始化規則訓練時,減弱對貼目限制的力度,以學習應對極端貼目
- 對訓練資料記錄的「分數」設定上下限
- 在開局書組態檔 genbook7jp.cfg 中新增探索性參數、提升生成效率及其他改進
- 執行 contribute 將不再將組態的密碼回傳到偵錯/日誌中
- 將 half 函式庫升級至版本 2.2,以修復在部分系統上出現的相容性問題
- 對檔案進行多項更新、清理、功能添加以及內部程式碼和工具的修改
|
2023年5月23日
|
| v1.12.4
|
- 新增 enablePassingHacks 參數,緩解若嘗試虛手也導致對手虛手,阻礙正確搜尋的問題
- 修改搜尋機制,區分電腦式規則(需吃子才能結束)與人類式規則(不需吃子即可結束)
- 修正從白棋先行的局面生成訓練資料時,貼目被錯誤初始化為反向值的問題
- 修正隱藏神經網路輸入歷史時,棋子的歷史階梯狀態不會被隱藏,導致資訊洩漏的問題
- 修正解析某些規則字串的貼目時出現的錯誤
- 更新 genconfig 命令產生的組態,使其與先前版本中引入的 GTP 組態的格式和檔案相符
- 自訂訓練用的提示位置工具(hint position tools)也進行小幅修正與功能補充
|
2023年2月18日
|
| v1.12.3
|
- 修正 v1.12.x 中引入的 TensorRT 效能退化問題
- 緩解 OpenCL 中一個長期存在的效能錯誤
- 修正 GTP 或分析模式下,某些設定導致無法正確判定「連續兩次虛手為終局」的問題
- 修正 PyTorch 訓練程式碼中,模型無法順利處理變動 tensor 尺寸(不同棋盤大小)的問題
- contribute 在 OpenCL 模式下也會針對新架構 b18c384nbt 進行預調校,與其他模型一致
|
2023年1月22日
|
| v1.12.2
|
- 修復 TensorRT 在 v1.12.1 中計算錯誤值的錯誤
- 修復 OpenCL 調校器可能選擇效能極差甚至錯誤參數的問題
- 將 TensorRT 從 8.2 升級到 8.5,顯著縮短初始化時間,並消除對 CUDNN 的依賴
- 在組態解析中添加一些支援,以便能夠指定檔案路徑、密碼等帶有井號或空格的字串
- 新增更好的內部測試和錯誤檢查,以便將資料貢獻給公開運行
|
2023年1月11日
|
| v1.12.1
|
- 修復 TensorRT 後端可能會產生錯誤的局面評估和不合理落子的問題
|
2023年1月9日
|
| v1.12.0
|
- 全新巢狀殘差瓶頸結構(nested residual bottleneck),模型更強大
- 訓練程式碼全面改寫為 PyTorch,取代 TensorFlow。訓練與自我對弈指令碼也已更新
- 新增 terminate_all 指令
- 分析引擎預設將錯誤查詢的錯誤和警告回顯到stderr,可選擇停用
- 新增回報參數:weight、rawStWrError、rawStScoreError,用於評估局面的不確定性
- 修正計算剪枝根值時權重的微小異常
- 自我對弈與分散式訓練改為計算和記錄稍微低雜訊的值,用於輔助價值訓練
- 略微改進分散式訓練的自動錯誤檢查
- 新增參數以支援更靈活的貼目初始化,未來納入訓練流程
- 修正 SGF 中指定棋盤位置時,生成 sgfposes/hintposes 的回合數計算錯誤
- 改進 LCB(Lower Confidence Bound)邏輯,使其在低類比次數下更平滑,略微提升強度
- 修正極端貼目輸入導致的潛在錯誤
- 優化 OpenCL 效能調校邏輯
- 清理並明確化 gtp_example.cfg 設定檔
- 修正處理非 ASCII 路徑的錯誤
- 清理並增強 KataGo 的設定系統與日誌功能的靈活性
- 修正若 SGF 中同時編輯多顆棋子,整體合法但部分可能非法的處理錯誤
|
2023年1月8日
|
| v1.11.0
|
- 全新更強大的圖搜尋(MCGS),不同走法導致相同局面時只搜尋一次,而非重複搜尋
- 全新參數 FPU(首次下棋緊迫性),根據現有走法表現,動態調整探索新走法的傾向
- 對預設搜尋參數略微調整和改進
- contribute 命令現在支援暫停和恢復
- 優化 Windows 支援非 ASCII 檔案路徑和目錄
- PV 訪問數不再單調遞減:因圖形搜尋可能導致局面重複出現,新增 pvEdgeVisits 區分「到達某位置」與「執行特定移動」的訪問次數
- 新增 pvEdgeVisits 輸出,用於區分到達給定位置的訪問次數和執行特定移動的訪問次數
- GTP 中的 kata-analyze 指令現在可以報告每個移動的預測所有權
- GTP 新增 kata-benchmark NVISITS 擴展,它將在 GTP 內部執行一個簡單的基準測試
- 修正書籍雜湊演算法中的一個錯誤,可能導致書籍調換錯誤,並大大降低磁碟空間要求
- 新增 checkbook 指令可檢查書籍檔案完整性
- 新增 GUI 工具連結:Ogatak,簡潔優雅的圖形介面
- contribute 現可選擇僅進行評分對局
- printsgf 會更智慧型地記錄最終得分,而非簡單地將所有棋子視為活棋來計算比分
- 修正 GTP 和分析引擎中的避免移動選項可能仍然包括避免移動的錯誤
- 修正部分規則下是否應抑制虛手的判斷錯誤
- 優化長/深度搜尋的所有權的計算速度
- Selfplay 現在會在 .npz 檔案中記錄一些關於策略、搜尋意外和熵的額外統計資料
- Python 神經網路模型訓練現在可以追蹤重啟後的匯出週期
- 對搜尋程式碼進行重大重構與清理
- 多項檔案更新與補充
|
2022年3月21日
|
| v1.10.0
|
- 強效的 TensorRT 後端,在 NVIDIA GPU 上通常快 1.5 倍,但啟動時間較長
- GTP 的反鏡像邏輯略有改進
- 分析引擎和 kata-analyze 支援報告所有權的標準差(ownershipStdev)
- match 中加入用於隨機高溫策略初始化的次要選項
- 若只使用單一棋盤大小,預設跳過遮罩邏輯(分析引擎除外)
- 新增用於生成書籍的程式碼,可透過 ./katago genbook 運行
- Windows 現應能正確處理非 ASCII 路徑
- 修正 GTP/Analysis 當只有 1 次播放並且移動基於原始策略時 "avoid" 未被應用的錯誤
- GTP/Analysis 的 "avoid" 現在可以正確地與根對稱修剪互動
- 修復 GTP 指令 loadsgf 中的各種錯誤
- 修正終局局面分析值回報異常
- 修正多執行緒分析時,零訪問走法出現奇怪統計的問題
- 修正多個 contribute 同時啟動時可能發生的輕微競爭問題
- 貢獻指令現更能容錯並重試損毀的下載
- 分散式訓練貢獻中更可靠地容忍和重試損壞的下載
- benchmark 現在遵循組態中的 defaultBoardSize
- 修正在 Windows 中使用 mingw 進行 cmake 建置設定時出現的問題
- 修正 train.py 載入既有模型時 swa_model 命名空間錯誤
|
2021年10月25日
|
| v1.9.1
|
- 修正在查詢分析之前終止會導致引擎崩潰的錯誤
- 分析引擎將所有權的精確度達到 10^-6,其他值的精確度達到最高有效位元後 7-8 位小數
- 分析引擎中針對完全未知參數的參數覆蓋將發出警告
- 消除 contribute 指令中可能產生稍微令人困惑的輸出或錯誤訊息
|
2021年6月30日
|
| v1.9.0
|
- 搜尋演算法的重大改進,使用相同的最新神經網路,等級分較前者提升約 75 分
- 實現接近無鎖的 MCTS 搜尋,在強大的 GPU 上顯著提升多執行緒搜尋效能
- 新增 avoidRepeatedPatternUtility 選項,優先避免下已經在其他角落下過相同的定式
- 新增「 SGF 避免模式」,引導避免某些走法,在對局中提升變化多樣性
- 若開局局面具對稱性,KataGo 將利用對稱性優化搜尋,並預設以黑棋從右上角開局
- 新增 analysisWideRootNoise 參數,在分析中擴大搜尋廣度
- 新增可統計勝負結果並計算Elo的指令碼 summarize_sgfs.py
- 為分析引擎新增新的 clear_cache 指令
- 分析引擎現在會在根資訊中報告當前玩家的走法
- 當啟用對稱性處理rootSymmetryPruning時,若動作與其他動作對稱則報告 isSymmetryOf
- 改善 OpenCL 調校器在部分 GPU 上選擇錯誤參數的機率
- 修正執行緒過多時的搜尋偏誤
- 透過多執行緒釋放或重用搜尋樹,以減少高播放時出現的延遲
- 修復幾個罕見的記憶體存取和執行緒錯誤,可能導致直接崩潰的錯誤
- 改進分析引擎 rootInfo 的品質
- 對棋盤程式碼進行一些小的內部效能優化
- 修正使用 clang 編譯時的一些警告和 CMake 問題
|
2021年6月28日
|
| v1.8.2
|
- 分別對棋盤初始化和實際遊戲過程中的貼目進行取樣
- 重新設計並重構貼目初始化,使貼目隨機化更加一致
- 完善並改進一些運行專門訓練的開發者感興趣的命令的邏輯,例如 dataminesgfs
|
2021年4月19日
|
| v1.8.1
|
- 改進分散式客戶端錯誤和網路連線問題,包括兩個可能導致掛起或鎖死的錯誤
- 分散式客戶端會在第一次中斷(ctrl-c)時正常停止並完成目前遊戲,第二次將強制停止
- 新增 https_proxy 環境變數支援,方便透過代理伺服器連線
- OpenCL 版本在首次啟動時預先調整所有的模型大小,這比下載再調整更加準確
- 在非 Tromp-Taylor 規則下,若對手剛虛手且盤面無利可圖,KataGo 會更傾向虛手,而非強行清理死子。可透過 friendlyPassOk 參數控制
- 新增對 Fischer 時間控制的支援,並引入新的 GTP 指令來管理時間設定
- GTP 可以透過 kata-set-param 在運行時更改搜尋執行緒的數量
- 修復 GTP 中與終局計分相關的指令可能靜默改變其他設定(如 PDA)的問題
- 修復使用大量執行緒時可能導致終局計分不準確的問題
- GTP 終局計分指令現在會根據友好金行為報告相應的比分
- 對多個命令和程式中的日誌記錄和錯誤訊息進行細微改進
- 分析引擎報告根節點的 thisHash 和 symHash,可用於識別對稱局面
- 修復 vartime 輔助訓練目標的損失加權錯誤,該錯誤導致神經網路在學習中出現嚴重偏差
- 對內部SGF採集、測試工具進行清理和重構,並新增基於條件篩選 SGF 的指令列參數
- 新增解析 Fox 伺服器 SGF 中特殊格式的貼目與棋手段位的邏輯
- 更新 json 解析庫版本,修復在特定 MSVC 版本上的編譯錯誤
|
2021年3月15日
|
| v1.8.0
|
- 支援官網上的新格式神經網路,為未來搜尋邏輯的改進做準備
- 進行大量內部更改和修復許多錯誤,以支援即將開始的公開分散式訓練貢獻
- 引入新的「子樹價值偏差校正」方法,預計能提升 20-50 Elo 強度
- 修復 LCB 中選擇阻止對最高策略值的著手發揮作用的錯誤
- 徹底重寫時間控制邏輯,但目前大部分新功能預設關閉,以待進一步測試
- 修復日式規則下處理雙劫情形的錯誤,這需要網路逐步適應這些規則
- 根對稱性採樣從「有放回取樣」改為「無放回取樣」,上限從 16 調整為 8(即所有可能)
- 移除不再使用的舊搜尋參數 fpuUseParentAverage
- komiAuto 功能使用 100 訪問次數,而非 20 次來尋找公平貼目
- match 增加一些邏輯來避免過早認輸,與 GTP 行為保持一致
- 修復 genconfig 指令在生成組態時可能發生的記憶體區段錯誤
- 修復分析引擎有時會從錯誤的視角報告 rootInfo 的問題
- 修復分析引擎中優先級數值超出 [-2³¹, 2³¹-1] 有效範圍而無法正常工作的問題
- 修正 kata-raw-nn 指令以報告虛手的策略概率
- 預設神經網路版本升級至 v10,新增訓練目標並重新平衡損失函式權重
- 神經網路第一層使用 3x3 卷積,而非 5x5。速度略快、強度略降,並大幅減少記憶體佔用
- 修復 hintposes 未根據初始回合數調整的問題
- 改進 startposes 檔案處理,使其能夠處理更深層的分支檔案,而不會耗盡堆疊空間
- 修復舊的根神經網路策略可能會導致 hintpos 無法生效的錯誤
- 提示位置後的幾步內會進行更完整的搜尋,而非僅使用快速搜尋
- 改進自我對弈訓練的除錯日誌紀錄,並改善自我對弈產生的 SGF 檔案註解
- 訓練指令碼可以鎖定訓練步數與資料樣本比例
- 訓練指令碼會自動搜尋訓練目錄下的 initial_weights 子資料夾內的 TensorFlow checkpoint 與 meta 檔
- 移除部分舊的、未使用的模型程式碼
- 加入 PyTorch genboard 指令碼,可在給定部分棋子情況下生成合理的棋盤局面
|
2021年1月13日
|
| v1.7.0
|
- 支援 CUDA 11.1,可在 NVIDIA RTX 30 系列上使用 CUDA(不再僅限於 OpenCL)
- 新增 ignoreGTPAndForceKomi 可強制使用指定 komi 值,也會忽略 GTP 控制
- 編譯不再需要 Boost 函式庫
- 優化 OpenCL 後端,降低 GPU 記憶體使用量
- benchmark 命令能更有效率地選擇執行緒搜尋範圍
- 改進 JSON 分析引擎
- 分析引擎可預測每一步的盤面歸屬圖(ownership map)
- 分析引擎可回傳進行中的查詢結果,支援與 kata-analyze、lz-analyze 類似的功能
- 分析引擎可在查詢尚未完成前中途取消或終止查詢
- 分析引擎可以在單一查詢中指定不同的每回合優先順序
- 分析引擎支援超過 ±2³¹ 的優先權值,方便用於時間戳記、外部 ID 或長時間任務的排序
- 修正在 Button 規則下,可能導致無法選出最佳終著手的錯誤(其具有區域計分的簡單性和優雅性,且具有領土計分的更清晰、公平的計分粒度)
- 修正 -override-config 參數的部分解析問題
- 修正 Eigen 後端在 benchmark 命令使用多執行緒時的異常行為
- 自我對弈訓練的 shuffle 指令碼現在統一混合所有資料(不再分開訓練與驗證集)
- 進行大量內部重構,為分散式訓練做準備,BUILD_DISTRIBUTED=1 以啟用此功能
|
2020年11月9日
|
| v1.6.1
|
- 修正兩個導致 Eigen 實作佔用過多記憶體 的問題,特別是在多執行緒環境下
- 改進 Eigen 預設執行緒數設定,並新增可在設定檔中覆寫的新參數
- 分析引擎中,用於控制平行搜尋盤面數量的參數,改由 numAnalysisThreads 控制
- 新增 numSearchThreadsPerAnalysisThread 代替 numSearchThreads,使參數名稱更清楚表達其用途
|
2020年8月25日
|
| v1.6.0
|
- 大幅優化 Eigen 後端,使其效能顯著提升
- 降低 OpenCL 程式碼開銷,使其能夠在少數舊 GPU 上運行
- 解決 OpenCL 與 NVIDIA GPU 的主要問題,該問題導致 OpenCL 無法有效利用多個 GPU
- 分析引擎實現允許和避免選項,允許將搜尋範圍限制在特定著法或棋盤的特定區域
- 分析引擎新增 pvVisits 選項,報告不同著法在任何主要變體中每著法的訪問次數
- 改進分析引擎設定檔 analysis_example.cfg,提供更多可調整的參數,並附有預設值
- 修正部分介面相關的錯誤,並改善 CMake 編譯設定,讓提示訊息與錯誤說明更清晰友善
|
2020年8月24日
|
| v1.5.0
|
- 新增支援 OpenCL FP16 張量核心,理論效能大約翻倍
- 新增 GTP 指令 set_position,允許直接設定盤面位置,不需透過多次 play 指令類比
- 新增預設思考時間,而非無限時間
- 新增簡易「鏡像圍棋」處理邏輯(僅作趣味用途,非完整支援)
- 改進讓子棋檢測邏輯,提升自動調整執行緒數的效率與自動認輸判定準確度
- 新增類雜湊型棋局 ID 寫入自我對弈產生的 SGF 檔
- 修正一個極少見的自我對弈分支初始化錯誤,該錯誤可能導致落子合法性判定錯誤及神經網路雜湊衝突(特別是在日本規則的清理階段)
- 對稱性從 GPU 改至 CPU 計算,從而簡化程式碼
- 多項內部效能優化與程式清理
- 新增可透過 -DUSE_BACKEND=EIGEN 編譯的純 CPU 實作版本
|
2020年8月3日
|
| v1.4.5
|
- 修正 analysis_example.cfg 中 nnMaxBatchSize 參數重複的錯誤
- 新增防護機制,若設定檔中有重複參數,會直接報錯,而非默默忽略
- 將其中一個 OpenCL kernel 拆分成多個部分,縮短編譯時間
- 改進 OpenCL 調校器(tuner),使其運行更快
- match 會依照對局中最大的棋盤尺寸來調整網路大小,而非固定 19,小棋盤效能更佳
|
2020年6月22日
|
| v1.4.4
|
- 可將 logFile 設為空字串以停用記錄,或透過 -override-config 指令覆蓋
- 新增 homeDataDir=<DIR> 參數,覆寫快取資料(如 OpenCL 調校檔)的儲存目錄
- Benchmark 命令 現在預設以 -tune 模式執行
- CUDA 版本現已改為使用 CUDA 10.2 編譯(取代 10.1)
- Linux 版本現改為使用 libzip5 編譯(取代 libzip4)
- 修復多個 OpenCL GPU/異廠牌裝置,同時運行時的相容性問題
- 修正 cputime GTP 指令 每局清零的問題,現會持續累積時間
- 修正分析引擎中 reportAnalysisWinratesAs 在多數情況下被忽略的問題
- 修正部分 輸入管線/標準輸入 被關閉時錯誤處理與重複執行最後指令的問題
- 修正自我對弈 SGF 檔的起始局面處理錯誤,該錯誤會忽略 SGF 中的棋盤尺寸設定
- 修正自對戰指令碼中的一個拼字錯誤,避免在提供不正確的參數時出現錯誤/混亂的行為
- 多項內部程式碼清理與註解改進
- 澄清程式碼庫原始碼中包含的模型是微型測試神經網路
|
2020年6月14日
|
| v1.4.2
|
- 修正在 v1.4.x 中引入的錯誤,當讓子棋或 PDA 設為非零值,且同時開啟思考模式時,搜尋結果可能出現符號不一致的評估值,嚴重影響棋力與搜尋品質
- 修復在使用非零 PDA 時,分析引擎會採用錯誤的符號方向
- 若未明確設定 maxTimePondering、maxPlayoutsPondering、maxVisitsPondering,則會視為「無限制」。而不是分別預設使用 maxTime、maxPlayouts、maxVisits
|
2020年5月13日
|
| v1.4.1
|
- 修正當 PDA 設為非零值且同時啟用思考模式時,樹重用無法正常運作或失效的問題
- 使用 logDir=DIRECTORY (而不是 logFile=FILE.log)將日誌輸出為帶日期的多檔案形式
|
2020年5月11日
|
| v1.4.0
|
- 新的實驗性組態:analysisWideRootNoise,用於擴大根節點的搜尋範圍並評估更多走法,但需要更多時間才進行更深入的搜尋。僅影響分析,不影響遊戲(例如 genmove)
- 現在可接受副檔名為 .gz 的模型檔案(不再限定為 .bin.gz 或 .txt.gz)
- 新增 cputime 與 gomill-cpu_time 指令,可用於比賽或測試,回報並比較思考時間
- 改進 playoutDoublingAdvantage 與 dynamicPlayoutDoublingAdvantage,預設平局會均衡著法,讓子方時積極進攻,受子方則穩健防守
- 修正非標準 GTP 讓子方式(連續黑棋落子+白棋跳過)下(如中國規則每讓子 +1 分)未正確處理的問題,可透過 assumeMultipleStartingBlackMovesAreHandicap = false 停用該修正邏輯
- 修復系統時間或時區變更可能導致搜尋時間異常的問題
- 新增支援同步訓練的指令碼
- 新增 JSON 分析引擎可輸出根節點資訊與原始策略分佈且執行時可覆寫幾乎任何搜尋參數
- 自我對弈組態重新組織至 cpp/configs/selfplay/ 子目錄,並進行多項內部清理
- 移除設定檔中的 num_games_total 改以-max-games-total 參數控制,方便自動化指令碼使用
|
2020年5月10日
|
| v1.3.5
|
- 修正 printsgf GTP 指令在部分規則設定下可能失敗的問題
- 放寬規則解析,現在對部分規則別名的容忍度更高
- JSON 分析引擎(../katago analysis)現在支援查詢優先權(priority)
|
2020年3月31日
|
| v1.3.4
|
- 若同目錄中存在 default_gtp.cfg,在未指定 -config 時會自動載入該檔;若同目錄中存在 default_model.bin.gz 或 default_model.txt.gz,在未指定 -model 時會自動載入該模型,若具備上述檔案,可直接執行 ./katago gtp 無需額外參數
- 調整 GTP 設定,更積極地認輸,提高 PV 顯示的最大手數,genconfig 預設訪問次數等
- 調整 PDA 在小棋盤上表現更合理,受讓子時會得更穩健,提升讓子局棋力
- 新增 avoidMYTDaggerHack 以避免某特定開局定式,目前應對該定式的表現不佳
- 新增 printsgf 指令,可輸出目前棋局為 SGF 格式
- 新增多項 GTP 擴充功能,以改善與 Sabaki GUI 的整合
- 移除大量過時或未使用的程式碼,並進行重大內部重構
- 移除對 dirent.h 的依賴,提升跨平台相容性
- 自我對弈中新增對「評估結果出乎預期」的位置給予更高權重的選項
- 自我對弈中增加一個「均衡開局」比例的選項
|
2020年3月30日
|
| v1.3.3
|
- 新的模型格式,磁碟佔用空間更小、載入速度更快,其副檔名由 .txt.gz 改為 .bin.gz
- 新增指令 ./katago genconfig -model <模型>.gz -output <新設定檔>.cfg,可依偏好自動調整規則、執行緒、記憶體設定等。方便新手快速建立設定檔
- 簡化規則設定,僅需一行即可 rules=chinese、rules=japanese、rules=tromp-taylor 等
- 新增參數覆寫功能 -override-config KEY=VALUE, KEY=VALUE...在啟動時覆寫設定檔內容
- OpenCL 版本可偵測基於 CPU 的 OpenCL 裝置,並可在沒有 GPU 的純 CPU 機器上執行
- 支援 KGS 的擴充指令 kgs-rules 和 kgs-time_settings,可設定 KGS 遊戲規則及日規讀秒
- 新增 kata-raw-nn 指令,可輸出神經網路的原始評估值
- 修正部分網路在終局臨近時連續虛手導致評估波動的問題
- 自我對弈訓練指令碼新增 shuffle_and_export_loop.sh 與 export_model_for_selfplay.sh 參數,現需提供全域唯一前綴,以區分不同訓練來源的模型
- 多項內部小修與程式清理
- 修復若誤將 .bin.gz 解壓成 .bin,將導致無法載入的問題
|
2020年2月28日
|
| v1.3.2
|
- 優化 OpenCL 版本的 xgemm 實作,整體效能提升約 10%~50%
- GTP 組態中與 GPU 相關的所有選項現在也都是可選的,並且具有更好的預設值
- 自動選擇合適的 batch size,自動偵測並自動啟用或停用 FP16
- 更新基準測試中執行緒數的演算法 ./katago benchmark -config GTP_CONFIG.cfg -model MODEL.txt.gz
- 遊戲未結束或未完全清理時呼叫 final_status_list 和 final_score 指令,將使用神經網路來猜測局面評估
- 新增支援 fixed_handicap 指令
- 修復「思考中」與其他指令之間的競爭問題
- 改善讓子棋處理邏輯,允許透過「連續黑棋落子 + 白棋虛手」的方式設定讓子
- 新增在 train.py 訓練到固定回合數後自動停止,在 gatekeeper 完成傳遞後停止
- 取消自動對 Pascal 架構 GPU 啟用 FP16(導致精度損失或穩定性問題)
- 修正多項 GTP 協定錯誤與舊有讓子處理問題
- 改進程式容錯能力,使其更能處理非標準的讓子開局
|
2020年2月3日
|
| v1.3.1
|
- 設定檔中可刪除「根移動選擇和偏差」之後的所有內容,以取得更好的預設值
- 調整 cpuctExplorationLog 從 0.6 到 0.4
- 新增 lz-genmove_analyze 和 kata-genmove_analyze 指令,讓分析工具可即時顯示
- 修正領先值重大誤差的問題(大幅領先超過 70 目時,它可能嚴重低估差距)
|
2020年1月18日
|
| v1.3
|
- 支援「日式類規則」、「數子規則」等多種組合
- 新增 PDA (Playout Doubling Advantage) 設定,在讓子局中採取激進著法
- 由「平均得分」改為「領先目差」,即讓局勢公平所需的目數差,這更合理和直觀
- 重新設計 cPUCT 演算法,使其在高訪問次數下探索更充分,並提升強度
- 新增「分析引擎」./katago analysis -model <模型>.txt.gz -config <分析組態>.cfg -analysis-threads N
- 升級至 TensorFlow 1.5,並支援多 GPU 同步訓練 "-multi-gpus 0,1"
- 預設停用批次歸一化(可手動啟用)
- 調整訓練目標、訓練資料格式和其他細節,與舊訓練版本不相容
|
2020年1月14日
|
| v1.2
|
- 新增 Windows 與 OpenCL 後端支援
- 提供預編譯 Linux 版本(但仍需安裝對應的共享函式庫與 CUDA/CUDNN)
- 預設執行檔名稱改為 katago / katago.exe(原為 main)
- 在小於 19x19 棋盤時使用較小記憶體空間,以提升效能
- 修正 Windows 上 .gz 模型檔載入失敗的問題
- 新增 analysisPVLen 參數,設定分析路徑的最長長度
- 新增 dynamicScoreZeroWeight參數,調整分數效用函式,主要用於讓子棋的策略控制
- 預設啟用自動認輸,並對範例 GTP 組態參數進行細微變更
- 支援 loadsgf 指令,可直接從 SGF 檔載入棋譜
- 新增記錄 GTP_Extensions 擴充指令的文件
- 修復各種錯誤並進行內部清理
- 修正日誌檔案中評估符號翻轉的錯誤
- 修正在棋局結束後仍嘗試落子會導致非法手的錯誤
- 增加一些邏輯來預設為 OpenCL 選擇合理的裝置
- 改進讓子棋與貼目更新及棋盤清理邏輯
- 預設 OpenCL 共享調校結果於所有棋盤尺寸,避免每種尺寸都重新調校造成延遲
|
2019年7月21日
|
| v1.1
|
- 全新一輪訓練(g104),棋力已達到或略強於 Leela Zero ELFv2
- 實現 LCB,顯著提升對戰強度
- .npz 資料檔案的格式略有變化,與舊版本產生的訓練資料不相容
- 改良超參數與訓練策略,顯著提升訓練效率
- 改進並修復各種錯誤
|
2019年6月20日
|
| Initial
|
- 首個訓練運行(g65),棋力達到 Leela Zero LZ130 左右水準
|
2019年2月27日
|