Skip to content

Instantly share code, notes, and snippets.

@kenming
Created May 24, 2025 08:09
Show Gist options
  • Select an option

  • Save kenming/8a473b2c35b9fca4bd7e7ad35fe0312d to your computer and use it in GitHub Desktop.

Select an option

Save kenming/8a473b2c35b9fca4bd7e7ad35fe0312d to your computer and use it in GitHub Desktop.
KataGo GTP 配置文件範例 (2025/05) - 使用 DeepSeek 生成繁體中文註解說明
# KataGo C++ GTP 引擎的配置檔
# 使用指令運行程式:`./katago.exe gtp`
# 在此範例配置中,若參數以註解形式給出預設值,
# 則該值為預設值(除非另有說明)。若需修改,可取消註解(刪除井號)並更改數值。
# ===========================================================================
# 在線上伺服器或正式比賽中使用
# ===========================================================================
# 若計劃在線上或比賽中使用,請仔細閱讀下方「規則」部分,
# 以正確處理貼目、讓子、終局清理等細節。
# ===========================================================================
# 效能與記憶體使用注意事項
# ===========================================================================
# 重要:為獲得最佳效能,建議調整下方「搜索限制」區塊中的「numSearchThreads」參數!
# 可運行「./katago benchmark」測試 KataGo 並獲取建議值。
# 若使用多 GPU 系統,請參閱「OpenCL GPU 設定」或「CUDA GPU 設定」。
# 使用 OpenCL 時,請確認 KataGo 選擇了正確的裝置!部分系統可能同時有
# Intel CPU 的 OpenCL 和 GPU 的 OpenCL。若選擇錯誤,
# 請通過指定「openclGpuToUse」修正。
# 根據使用場景,可調整「maxVisits」、「ponderingEnabled」、「resignThreshold」等參數。
# ===========================================================================
# 命令列參數
# ===========================================================================
# 所有下方參數均可通過命令列覆蓋:
# -override-config KEY=VALUE,KEY=VALUE,...
# ===========================================================================
# 日誌與檔案
# ===========================================================================
# 此部分定義日誌的存儲位置與內容。
# 每次運行 KataGo 會將日誌寫入此目錄的單獨檔案。
# 此為預設行為。
logDir = gtp_logs
# 取消註解並指定此參數以按日期生成子目錄
# logDirDated = gtp_logs
# 取消註解並指定此參數以將日誌寫入單一檔案
# logFile = gtp.log
# 日誌選項
logAllGTPCommunication = true
logSearchInfo = true
logSearchInfoForChosenMove = false
logToStderr = false
# KataGo 會在 GTP 啟動時顯示訊息至 stderr
# 取消註解下一行並設為 false 以禁止顯示
# startupPrintMessageToStderr = true
# 將資訊寫入 stderr,供 OGS 聊天等用途使用。
# ogsChatToStderr = false
# 取消註解並設定目錄以覆蓋 OpenCL 調校檔案等緩存數據的存儲位置。
# 預設情況下,Windows 會存至當前目錄的子目錄,Linux 則存至 ~/.katago。
# homeDataDir = 目錄路徑
# ===========================================================================
# 分析設定
# ===========================================================================
# 此部分配置分析功能參數。
# 分析指令(如 kata-analyze 或 lz-analyze)顯示的變化手數上限。
# analysisPVLen = 15
# 報告勝率時的視角(BLACK|WHITE|SIDETOMOVE)。
# 多數 GUI 和分析工具預期使用 SIDETOMOVE。
# reportAnalysisWinratesAs = SIDETOMOVE
# 增加根節點噪聲以擴展探索範圍。數值越大,KataGo 會分析更多非典型選點。
# 極端值如 1 會強制分配計算量至所有選點(即使明顯不佳)。
# 僅影響分析,不影響實際對弈。
# analysisWideRootNoise = 0.04
# 避免歷史手順中的潛在錯誤影響當前位置的預測。
# analysisIgnorePreRootHistory = true
# ===========================================================================
# 規則
# ===========================================================================
# 此部分配置計分與對弈規則。規則也可在運行中通過 GTP 指令修改。
# 詳見:https://lightvector.github.io/KataGo/rules.html
# GTP 指令說明:https://github.com/lightvector/KataGo/blob/master/docs/GTP_Extensions.md
# 以字串指定規則。合法值包括:
# chinese, japanese, korean, aga, chinese-ogs, new-zealand, stone-scoring,
# ancient-territory, bga, aga-button
# 部分複雜規則(如日韓規則)在特殊局面可能無法完全精確模擬。
rules = tromp-taylor
# 預設使用「rules」參數,但若註解「rules」並取消註解下方選項,
# 可自定義各項規則組合。
# koRule = SIMPLE # 簡單劫爭規則(三劫循環無勝負)
# koRule = POSITIONAL # 位置超級劫
# koRule = SITUATIONAL # 情形超級劫
# scoringRule = AREA # 數子法
# scoringRule = TERRITORY # 數目法(計算機友好版)
# taxRule = NONE # 所有被圍空點計分
# taxRule = SEKI # 劫爭中的眼不計分
# taxRule = ALL # 所有群組扣除兩眼所需點數
# 多子自殺是否合法?(單子自殺恆非法)
# multiStoneSuicideLegal = false
# multiStoneSuicideLegal = true
# 「按鈕制」——數子法中第一手PASS獎勵0.5目且不結束對局。
# hasButton = false
# hasButton = true
# 人類規則下是否允許未清理死子前PASS?
# friendlyPassOk = false
# friendlyPassOk = true
# 讓子局貼目補償方式
# whiteHandicapBonus = 0 # 白方無補償(Tromp-taylor、新西蘭、日本規則)
# whiteHandicapBonus = N-1 # 白方獲N-1目補償(AGA規則)
# whiteHandicapBonus = N # 白方獲N目補償(中國規則)
# ------------------------------
# 其他規則調整
# ------------------------------
# 取消註解並修改以設定預設棋盤大小(當GTP未指定時生效)
# defaultBoardSize = 19
# 預設使用GTP控制器設定的貼目。取消註解並設此值以強制固定貼目。
# ignoreGTPAndForceKomi = 7
# ===========================================================================
# 機器人行為
# ===========================================================================
# ------------------------------
# 投子
# ------------------------------
# 若連續 resignConsecTurns 回合勝率低於 resignThreshold,則投子。
allowResignation = true
resignThreshold = -0.90
resignConsecTurns = 3
# 預設情況下,KataGo可能在勝率極低時投子,即使目差接近。
# 取消註解並設此值以在目差小於等於此值時禁止投子。
# resignMinScoreDifference = 10
# 根據棋盤面積禁止早期投子。例如 0.25 表示19x19棋局需至少90手後方可投子。
# resignMinMovesPerBoardArea = 0.00
# ------------------------------
# 讓子
# ------------------------------
# 若黑方在開局連續下多手,視為讓子局。部分伺服器或SGF檔案需要此設定。
# 若伺服器未按此慣例補償貼目,可取消註解並設為 false。
# assumeMultipleStartingBlackMovesAreHandicap = true
# 讓子或貼目調整時動態調整策略,提升讓子局強度。
# 不影響分析功能(如Lizzie)。
# dynamicPlayoutDoublingAdvantageCapPerOppLead = 0.045
# 取消註解並設此值以固定策略強弱(-3.0 至 3.0)。
# 此設定會影響分析工具。
# playoutDoublingAdvantage = 0.0
# 當使用「playoutDoublingAdvantage」時,指定適用方。
# playoutDoublingAdvantagePla = BLACK
# playoutDoublingAdvantagePla = WHITE
# ------------------------------
# PASS與終局
# ------------------------------
# 禁止假設PASS會直接結束對局(適用於非Tromp-Taylor計分的伺服器)。
# conservativePass = true
# 數目法下禁止進入特殊清理階段(用於測試其他嚴格實作規則的AI)。
# preventCleanupPhase = true
# ------------------------------
# 其他行為
# ------------------------------
# 對稱局面下僅搜索等效選點之一(超級劫處理可能不完美)。
# rootSymmetryPruning = true
# 避免特定錯誤定式(提升對抗特定AI的開局多樣性)。
# avoidMYTDaggerHack = false
# 避免在棋盤各角重複相同定式。
# 預設:0(平局)、0.005(讓子局)
# avoidRepeatedPatternUtility = 0.0
# 實驗性功能:對抗鏡像棋(預設在GTP對弈啟用,分析時禁用)。
# antiMirror = true
# 修復PASS導致搜索異常的罕見情況。
# enablePassingHacks = true
# 避免歷史手順中的潛在錯誤影響當前選點。
# ignorePreRootHistory = false
# ===========================================================================
# 搜索限制
# ===========================================================================
# 術語:
# 「Playouts」為每回合新增的搜索量。
# 「Visits」包含先前回合仍適用的搜索量。
# 「Time」為時間(秒)。
# 例如:若上回合搜索200節點,對手回應後仍有50節點有效,
# 則「maxVisits = 200」允許新增150節點(總200),
# 而「maxPlayouts = 200」允許新增200節點(總250)。
# 此外,KataGo可能因時間控制(如讀秒)提前落子。
# 當前回合搜索限制(未指定則無限制)。
maxVisits = 500
# maxPlayouts = 300
# maxTime = 10.0
# 啟用對手回合的長考(ponder)。
ponderingEnabled = false
# 長考時的搜索限制(建議限制時間以防資源過度消耗)。
# maxVisitsPondering = 5000
# maxPlayoutsPondering = 3000
maxTimePondering = 60.0
# ------------------------------
# 其他搜索限制
# ------------------------------
# 預留緩衝時間(秒)以應對GTP時間控制的延遲。
lagBuffer = 1.0
# 重要!需調整此參數!
# 搜索線程數。GPU強大時可設高於CPU核心數以提升批次效率。
# 運行「./katago benchmark」以測試最佳值。
numSearchThreads = 6
# 對手PASS時加速落子(人性化設定,比賽時可註解以固定計算量)。
searchFactorAfterOnePass = 0.50
searchFactorAfterTwoPass = 0.25
# 大幅領先時加速落子(同理,比賽時可註解)。
searchFactorWhenWinning = 0.40
searchFactorWhenWinningThreshold = 0.95
# ===========================================================================
# GPU 設定
# ===========================================================================
# 此部分配置GPU參數。
# 單次傳送至GPU的最大數據量。預設約等於numSearchThreads,
# 可手動調整以解決記憶體不足或多GPU分配問題。
# nnMaxBatchSize = <整數>
# 神經網路緩存大小(影響記憶體使用)。公式:2^nnCacheSizePowerOfTwo
# 每條目約佔1.5KB(使用全盤視覺化時3KB)。例如 2^18 = 262144 條目。
# nnCacheSizePowerOfTwo = 20
# 緩存互斥鎖池大小(2^nnMutexPoolSizePowerOfTwo)。
# nnMutexPoolSizePowerOfTwo = 16
# 隨機旋轉盤面以增強多樣性。取消註解並設為 false 以禁用。
# nnRandomize = true
# 強制固定隨機種子。
# nnRandSeed = abcdefg
# 強制使用最大棋盤尺寸緩衝區(避免頻繁調整GPU緩衝區,適用於多棋局並行)。
# gtpForceMaxNNSize = false
# ------------------------------
# 多GPU設定
# ------------------------------
# 使用GPU數量。若大於1,需取消註解對應後端設定。
# numNNServerThreadsPerModel = 1
# ------------------------------
# TENSORRT GPU 設定
# ------------------------------
# 單GPU:取消註解並指定裝置ID(若非0)。
# trtDeviceToUse = 0
# 多GPU範例(需設定numNNServerThreadsPerModel):
# trtDeviceToUseThread0 = 0
# trtDeviceToUseThread1 = 1
# ------------------------------
# CUDA GPU 設定
# ------------------------------
# 單GPU:取消註解並指定裝置ID(若非0)。
# cudaDeviceToUse = 0
# 多GPU範例:
# cudaDeviceToUseThread0 = 0
# cudaDeviceToUseThread1 = 1
# 強制指定FP16與NHWC格式(預設自動檢測)。
# cudaUseFP16 = auto
# cudaUseNHWC = auto
# ------------------------------
# Metal GPU 設定
# ------------------------------
# 單Metal實例:預設裝置。
# metalDeviceToUse = 0
# 多Metal實例範例:
# metalDeviceToUseThread0 = 0
# metalDeviceToUseThread1 = 1
# ------------------------------
# OpenCL GPU 設定
# ------------------------------
# 取消註解以針對不同棋盤尺寸重新調校。
# openclReTunePerBoardSize = false
# 單GPU:取消註解並指定裝置ID(若自動選擇錯誤)。
# openclDeviceToUse = 0
# 多GPU範例(需查看啟動日誌確認裝置ID):
# openclDeviceToUseThread0 = X
# openclDeviceToUseThread1 = Y
# 強制指定FP16使用(預設自動檢測)。
# openclUseFP16 = auto
# ------------------------------
# Eigen (純CPU) 設定
# ------------------------------
# 神經網路評估的CPU線程數(預設同numSearchThreads)。
# numEigenThreadsPerModel = X
# ===========================================================================
# 根節點選點與偏差
# ===========================================================================
# 取消註解並修改以下值以調整預設行為。
# 強制指定搜索隨機種子。
# searchRandSeed = hijklmn
# 佈局階段選點隨機性溫度。
# chosenMoveTemperatureEarly = 0.5
# 佈局階段溫度衰減週期(手數按棋盤尺寸縮放)。
# chosenMoveTemperatureHalflife = 19
# 終盤階段選點隨機性溫度。
# chosenMoveTemperature = 0.10
# 選點前扣除的訪問次數(降低低概率選點權重)。
# chosenMoveSubtract = 0
# 修剪低於此閾值的選點(不影響chosenMoveSubtract)。
# chosenMovePrune = 1
# 根節點對稱採樣數量。
# rootNumSymmetriesToSample = 1
# 使用LCB(最低置信邊界)選點?
# useLcbForSelection = true
# LCB選點所需標準差倍數。
# lcbStdevs = 5.0
# 僅當選點訪問量達頂部選點此比例時啟用LCB。
# minVisitPropForLCB = 0.15
# ===========================================================================
# 內部參數
# ===========================================================================
# 取消註解並修改以下值以調整預設行為。
# 勝負效用縮放因子。
# winLossUtilityFactor = 1.0
# 最大化目差的效用縮放因子。
# staticScoreUtilityFactor = 0.10
# dynamicScoreUtilityFactor = 0.30
# 動態目差中心向零值調整的比例與縮放。
# dynamicScoreCenterZeroWeight = 0.20
# dynamicScoreCenterScale = 0.75
# 無勝負(如三劫循環)對白方的效用。
# noResultUtilityForWhite = 0.0
# 和局對白方的等效勝局數。
# drawEquivalentWinsForWhite = 0.5
# MCTS 探索常數。
# cpuctExploration = 1.0
# cpuctExplorationLog = 0.45
# 波動局面與穩定局面的探索參數。
# cpuctUtilityStdevPrior = 0.40
# cpuctUtilityStdevPriorWeight = 2.0
# cpuctUtilityStdevScale = 0.85
# MCTS FPU 削減常數。
# fpuReductionMax = 0.2
# rootFpuReductionMax = 0.1
# fpuParentWeightByVisitedPolicy = true
# 基於網路不確定性的評估加權。
# useUncertainty = true
# uncertaintyExponent = 1.0
# uncertaintyCoeff = 0.25
# 樂觀策略探索。
# rootPolicyOptimism = 0.2
# policyOptimism = 1.0
# 劣勢選點削減指數。
# valueWeightExponent = 0.25
# 終局人性化獎勵(如避免填子浪費時間)。
# rootEndingBonusPoints = 0.5
# 修剪無意義的拖延手。
# rootPruneUselessMoves = true
#
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment