PyTorch1.7发布,支持CUDA11分布式训练( 三 )

下面让我们以流程图的方式来解释:
PyTorch1.7发布,支持CUDA11分布式训练文章插图
search 函数的流程图
下一步是进行 alpha-beta 的剪枝来优化执行速度 。
PyTorch1.7发布,支持CUDA11分布式训练文章插图
来自维基百科的 alpha-beta 剪枝说明
代码如下:
def alphabeta(alpha, beta, depthleft):bestscore = -9999if (depthleft == 0):return quiesce(alpha, beta)for move in board.legal_moves:board.push(move)score = -alphabeta(-beta, -alpha, depthleft - 1)board.pop()if (score >= beta):return scoreif (score > bestscore):bestscore = scoreif (score > alpha):alpha = scorereturn bestscore现在 , 让我们用下面给出的流程图来调整 alphabeta 函数:
PyTorch1.7发布,支持CUDA11分布式训练文章插图
现在是静态搜索 , 这种搜索旨在仅评估静态位置 , 即不存在致胜战术移动的位置 。 该搜索需要避免由搜索算法的深度限制所引起的水平线效应(horizon effect) 。
代码如下:
def quiesce(alpha, beta):stand_pat = evaluate_board()if (stand_pat >= beta):return betaif (alpha < stand_pat):alpha = stand_patfor move in board.legal_moves:if board.is_capture(move):board.push(move)score = -quiesce(-beta, -alpha)board.pop()if (score >= beta):return betaif (score > alpha):alpha = scorereturn alpha简单总结一下 quiesce 函数:
PyTorch1.7发布,支持CUDA11分布式训练文章插图
quiesce 函数流程图 。
测试 AI
开始测试前 , 需要导入一些库:
测试有 3 项:

  • AI 对弈人类;
  • AI 对弈 AI;
  • AI 对弈 Stockfish 。
1. AI 对弈人类:
PyTorch1.7发布,支持CUDA11分布式训练文章插图
AI 选择从 g1 到 f3 , 这是一个很明智的选择 。
2. AI 对弈 AI:
PyTorch1.7发布,支持CUDA11分布式训练文章插图
3. AI 对弈 Stockfish:
PyTorch1.7发布,支持CUDA11分布式训练文章插图
可以得出:AI 还不够智能 , 不足以打败 stockfish 12 , 但仍然坚持走了 20 步 。
接口测试
上述测试方式看起来代码很多 , 你也可以写一个接口测试 AI 。
然后执行:
PyTorch1.7发布,支持CUDA11分布式训练文章插图
最终输出