| 版本
|
更新内容
|
日期
|
| 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日
|