This commit is contained in:
Sander Land committed 2020-08-26 10:59:58 +02:00
1 parent 6fb9d55d43
commit 3dff117355
4 files changed
+42 -21

No files matched your search

+11 -3
View File
@@ -80,15 +80,23 @@ maxVisits = 500
# But there's no substitute for experimenting and seeing what's best for your hardware and your usage case. # But there's no substitute for experimenting and seeing what's best for your hardware and your usage case.
# Keep in mind that the number of threads you want doesn't necessarily have much to do with how many cores you # Keep in mind that the number of threads you want doesn't necessarily have much to do with how many cores you
# have on your system, and could easily exceed the number of cores. GPU batching is (usually) the dominant consideration. # have on your system, and could easily exceed the number of cores. GPU batching is (usually) the dominant consideration.
numAnalysisThreads = 8
numSearchThreadsPerAnalysisThread = 8
numSearchThreads = 8 numSearchThreads = 8
# nnMaxBatchSize is the max number of positions to send to a single GPU at once. Generally, it should be the case that: # nnMaxBatchSize is the max number of positions to send to a single GPU at once. Generally, it should be the case that:
# (number of GPUs you will use * nnMaxBatchSize) >= (numSearchThreads * num-analysis-threads) # (number of GPUs you will use * nnMaxBatchSize) >= (numSearchThreads * num-analysis-threads)
# That way, when each threads tries to request a GPU eval, your batch size summed across GPUs is large enough to handle them # That way, when each threads tries to request a GPU eval, your batch size summed across GPUs is large enough to handle them
# all at once. However, it can be sensible to set this a little smaller if you are limited on GPU memory, # all at once. However, it can be sensible to set this a little smaller if you are limited on GPU memory,
# too large a number may fail if the GPU doesn't have enough memory. # too large a number may fail if the GPU doesn't have enough memory.
nnMaxBatchSize = 96 nnMaxBatchSize = 64
# Eigen-specific settings--------------------------------------
# These only apply when using the Eigen (pure CPU) version of KataGo.
# This is the number of CPU threads for evaluating the neural net on the Eigen backend.
# It defaults to min(numAnalysisThreads * numSearchThreadsPerAnalysisThread, numCPUCores).
# numEigenThreadsPerModel = X
# Uncomment and set these smaller if you ONLY are going to use the analysis engine for smaller boards (or plan to # Uncomment and set these smaller if you ONLY are going to use the analysis engine for smaller boards (or plan to
# run multiple instances, with some instances only handling smaller boards). It should improve performance. # run multiple instances, with some instances only handling smaller boards). It should improve performance.
@@ -104,7 +112,7 @@ nnMaxBatchSize = 96
# Other General GPU Settings------------------------------------------------------------------------------- # Other General GPU Settings-------------------------------------------------------------------------------
# Cache up to 2 ** this many neural net evaluations in case of transpositions in the tree. # Cache up to 2 ** this many neural net evaluations in case of transpositions in the tree.
nnCacheSizePowerOfTwo = 19 nnCacheSizePowerOfTwo = 20
# Size of mutex pool for nnCache is 2 ** this # Size of mutex pool for nnCache is 2 ** this
nnMutexPoolSizePowerOfTwo = 16 nnMutexPoolSizePowerOfTwo = 16
# Randomize board orientation when running neural net evals? # Randomize board orientation when running neural net evals?
Binary file not shown.
+19 -9
View File
@@ -10,7 +10,7 @@ from kivy.core.window import Window
from kivy.graphics.context_instructions import Color from kivy.graphics.context_instructions import Color
from kivy.graphics.vertex_instructions import Ellipse, Line, Rectangle from kivy.graphics.vertex_instructions import Ellipse, Line, Rectangle
from kivy.metrics import dp from kivy.metrics import dp
from kivy.properties import BooleanProperty, ListProperty, ObjectProperty, NumericProperty from kivy.properties import BooleanProperty, ListProperty, NumericProperty, ObjectProperty
from kivy.uix.dropdown import DropDown from kivy.uix.dropdown import DropDown
from kivy.uix.widget import Widget from kivy.uix.widget import Widget
from kivymd.app import MDApp from kivymd.app import MDApp
@@ -308,26 +308,36 @@ class BadukPanWidget(Widget):
# ownership - allow one move out of date for smooth animation # ownership - allow one move out of date for smooth animation
ownership = current_node.ownership or (current_node.parent and current_node.parent.ownership) ownership = current_node.ownership or (current_node.parent and current_node.parent.ownership)
if katrain.analysis_controls.ownership.active and ownership: if katrain.analysis_controls.ownership.active and ownership:
ownership_grid = var_to_grid(ownership, (board_size_x, board_size_y)) rsz = self.grid_size * 0.2
if ( if (
current_node.children current_node.children
and katrain.controls.status_state[1] == STATUS_TEACHING and katrain.controls.status_state[1] == STATUS_TEACHING
and self.animating_pv
and current_node.children[-1].auto_undo and current_node.children[-1].auto_undo
and current_node.children[-1].ownership and current_node.children[-1].ownership
): ): # loss
ownership_grid = var_to_grid( loss_grid = var_to_grid(
[a - b for a, b in zip(current_node.children[-1].ownership, ownership)], [a - b for a, b in zip(current_node.children[-1].ownership, ownership)],
(board_size_x, board_size_y), (board_size_x, board_size_y),
) )
rsz = self.grid_size * 0.2 for y in range(board_size_y - 1, -1, -1):
for x in range(board_size_x):
loss = max(0, (-1 if current_node.children[-1].move.player == "B" else 1) * loss_grid[y][x])
if loss > 0:
Color(*EVAL_COLORS[self.trainer_config["theme"]][1][:3], loss)
Rectangle(
pos=(self.gridpos_x[x] - rsz / 2, self.gridpos_y[y] - rsz / 2), size=(rsz, rsz)
)
else:
ownership_grid = var_to_grid(ownership, (board_size_x, board_size_y))
for y in range(board_size_y - 1, -1, -1): for y in range(board_size_y - 1, -1, -1):
for x in range(board_size_x): for x in range(board_size_x):
ix_owner = "B" if ownership_grid[y][x] > 0 else "W" ix_owner = "B" if ownership_grid[y][x] > 0 else "W"
if ix_owner != (has_stone.get((x, y), -1)): if ix_owner != (has_stone.get((x, y), -1)):
Color(*STONE_COLORS[ix_owner][:3], abs(ownership_grid[y][x])) Color(*STONE_COLORS[ix_owner][:3], abs(ownership_grid[y][x]))
Rectangle(pos=(self.gridpos_x[x] - rsz / 2, self.gridpos_y[y] - rsz / 2), size=(rsz, rsz)) Rectangle(
pos=(self.gridpos_x[x] - rsz / 2, self.gridpos_y[y] - rsz / 2), size=(rsz, rsz)
)
policy = current_node.policy policy = current_node.policy
if ( if (
@@ -531,8 +541,8 @@ class BadukPanWidget(Widget):
): ):
self.animating_pv = (pv, node, time.time(), self.last_mouse_pos) self.animating_pv = (pv, node, time.time(), self.last_mouse_pos)
if self.katrain.controls.status_state[1] == STATUS_TEACHING: if self.katrain.controls.status_state[1] == STATUS_TEACHING and self.katrain.analysis_controls.ownership.active:
self.draw_board_contents() self.draw_board_contents() # loss visualization
else: else:
self.draw_hover_contents() self.draw_hover_contents()
+12 -9
View File
@@ -445,17 +445,19 @@ class ConfigPopup(QuickConfigGui):
KATAGOS = { KATAGOS = {
"win": { "win": {
"Official OpenCL v1.6.0": "https://github.com/lightvector/KataGo/releases/download/v1.6.0/katago-v1.6.0-gpu-opencl-windows-x64.zip", "OpenCL v1.6.1": "https://github.com/lightvector/KataGo/releases/download/v1.6.1/katago-v1.6.1-gpu-opencl-windows-x64.zip",
"Official OpenCL v1.6.0 (32 bit)": "https://github.com/lightvector/KataGo/releases/download/v1.6.0/katago-v1.6.0-gpu-opencl-windows-x32-dont-use-unless-actually-32bit-windows.zip", "OpenCL v1.6.1 (32 bit)": "https://github.com/lightvector/KataGo/releases/download/v1.6.1/katago-v1.6.1-gpu-opencl-windows-x32-dont-use-unless-actually-32bit-windows.zip",
"Official CUDA v1.6.0 (New NVIDIA cards)": "https://github.com/lightvector/KataGo/releases/download/v1.6.0/katago-v1.6.0-gpu-cuda10.2-windows-x64.zip", "CUDA v1.6.1 (New NVIDIA cards)": "https://github.com/lightvector/KataGo/releases/download/v1.6.1/katago-v1.6.1-gpu-cuda10.2-windows-x64.zip",
"Eigen AVX2 (Modern CPUs) v1.6.0": "https://github.com/lightvector/KataGo/releases/download/v1.6.0/katago-v1.6.0-cpu-eigen-avx2-windows-x64.zip", "Eigen AVX2 (Modern CPUs) v1.6.1": "https://github.com/lightvector/KataGo/releases/download/v1.6.1/katago-v1.6.1-cpu-eigen-avx2-windows-x64.zip",
"Eigen (CPU, Non-optimized) v1.6.0": "https://github.com/lightvector/KataGo/releases/download/v1.6.0/katago-v1.6.0-cpu-eigen-windows-x64.zip", "Eigen (CPU, Non-optimized) v1.6.1": "https://github.com/lightvector/KataGo/releases/download/v1.6.1/katago-v1.6.1-cpu-eigen-windows-x64.zip",
"OpenCL v1.6.1 (bigger boards)": "https://github.com/lightvector/KataGo/releases/download/v1.6.1%2Bbs29/katago-v1.6.1+bs29-gpu-opencl-windows-x64.zip",
}, },
"linux": { "linux": {
"Official OpenCL v1.6.0": "https://github.com/lightvector/KataGo/releases/download/v1.6.0/katago-v1.6.0-gpu-opencl-linux-x64.zip", "OpenCL v1.6.1": "https://github.com/lightvector/KataGo/releases/download/v1.6.1/katago-v1.6.1-gpu-opencl-linux-x64.zip",
"Official CUDA v1.6.0 (New NVIDIA cards)": "https://github.com/lightvector/KataGo/releases/download/v1.6.0/katago-v1.6.0-gpu-cuda10.2-linux-x64.zip", "CUDA v1.6.1 (New NVIDIA cards)": "https://github.com/lightvector/KataGo/releases/download/v1.6.1/katago-v1.6.1-gpu-cuda10.2-linux-x64.zip",
"Eigen AVX2 (Modern CPUs) v1.6.0": "https://github.com/lightvector/KataGo/releases/download/v1.6.0/katago-v1.6.0-cpu-eigen-avx2-linux-x64.zip", "Eigen AVX2 (Modern CPUs) v1.6.1": "https://github.com/lightvector/KataGo/releases/download/v1.6.1/katago-v1.6.1-cpu-eigen-avx2-linux-x64.zip",
"Eigen (CPU, Non-optimized) v1.6.0": "https://github.com/lightvector/KataGo/releases/download/v1.6.0/katago-v1.6.0-cpu-eigen-linux-x64.zip", "Eigen (CPU, Non-optimized) v1.6.1": "https://github.com/lightvector/KataGo/releases/download/v1.6.1/katago-v1.6.1-cpu-eigen-linux-x64.zip",
"OpenCL v1.6.1 (bigger boards)": "https://github.com/lightvector/KataGo/releases/download/v1.6.1%2Bbs29/katago-v1.6.1+bs29-gpu-opencl-linux-x64.zip",
}, },
} }
@@ -525,6 +527,7 @@ class ConfigPopup(QuickConfigGui):
if f.lower().endswith("dll"): if f.lower().endswith("dll"):
with open(os.path.join(os.path.split(path)[0], f), "wb") as fout: with open(os.path.join(os.path.split(path)[0], f), "wb") as fout:
fout.write(zipObj.read(f)) fout.write(zipObj.read(f))
os.remove(tmp_path)
else: else:
os.rename(tmp_path, path) os.rename(tmp_path, path)
self.katrain.log(f"Download of katago binary {binary} model complete -> {path}", OUTPUT_INFO) self.katrain.log(f"Download of katago binary {binary} model complete -> {path}", OUTPUT_INFO)