From 7a0fe66d7091dd3d5cf0137bbcd893182571447e Mon Sep 17 00:00:00 2001 From: Sander Land Date: Tue, 28 Apr 2020 22:02:00 +0200 Subject: [PATCH] status, sgf --- TODO | 27 +++++++---------- ai.py | 25 ++++++++++++---- ai_performance.pickle | Bin 134690 -> 232385 bytes config.json | 66 +++++++++++++++++++++++++++++++++------- engine.py | 10 +++++-- game.py | 13 ++++---- game_node.py | 20 ++++++++++--- gui/badukpan.py | 6 +++- gui/controls.py | 6 ++-- gui/kivyutils.py | 13 +++++--- gui/popups.py | 28 ++++++++++------- katrain.kv | 68 +++++++++++++++++++++++------------------- katrain.py | 31 ++++++++++++++----- selfplay.py | 29 ++++++++++++++++-- sgf_parser.py | 2 +- 15 files changed, 241 insertions(+), 103 deletions(-) diff --git a/TODO b/TODO index 9af0a97..f6bab6d 100644 --- a/TODO +++ b/TODO @@ -16,34 +16,29 @@ [x] ogs bot connector [x] clarify score change vs score [x] List edit settings/object edit settings? -> Mostly superseded by popups. +[x] box to label ? split in status and comment? +[x] Currently, when saving an SGF after analyzing a game, Katrain stores data for every move by default. Like for dots, it would be great if it was possible to only store data for moves that we were interested in (e.g. only from this or that player, and/or only the most inefficient moves/most costly mistakes, etc.) +[x] Typing something in the comments window freezes Katrain -> probably keyboard shortcuts / solved by label +[x] In the 0.9 version I could hide dots from one player, which was handy to focus on my own mistakes when reviewing games, not my opponent's. For what I saw, we can't do that in the 1.0 version anymore, which is a shame IMO. +[x] Since dots help to discriminate between mistakes, it would be nice to be able to show only those that are big enough to worry about: for example showing only non-green dots, or showing only orange and red dots, or even only red dots, since strong and weak players will have different needs. In my case, when I was reviewing games (my own or classical Japanese ones) with the 0.9 version of Katrain, I would typically focus on moves that would be rated less than 80% efficient (ranging from orange to red, if I remember correctly). A slider going from 0 to 100% to show moves according to their efficiency would be handy, I think. Just an idea ^_^ +[x] engine status +[x?] sgf review improvements -- Likewise, in the 0.9 version, better alternatives to the played move were shown with squares, which was also pretty useful when using the sgf outside of Katrain. I mean, having the top move mentioned is all and good, but when you see multiple squares shown on the board as better alternatives to the move played in the game, it makes obvious how far from perfect that move actually was :D + [/] README -[] engine status -[] sgf review improvements -- Likewise, in the 0.9 version, better alternatives to the played move were shown with squares, which was also pretty useful when using the sgf outside of Katrain. I mean, having the top move mentioned is all and good, but when you see multiple squares shown on the board as better alternatives to the move played in the game, it makes obvious how far from perfect that move actually was :D -[] selective save dots / config [] Release notes -[] box to label ? split in status and comment? -[] pv with overlap? Low priority +[] pv with overlap? [] more teaching / groups in danger? hard [] When creating a new game, the 9 buttons on the right side aren't all that useful. Maybe the 9, 13 and 19 ones make sense since these three board sizes are the traditionally used ones, but why 2, 4 and 9 stones buttons? Why 0.5, 6.5 and -40pts komi buttons? [] Score instead of game end Wont do for now [] dual engine support -- easily possible but has weird effects on win rate etc -[] Currently, when saving an SGF after analyzing a game, Katrain stores data for every move by default. Like for dots, it would be great if it was possible to only store data for moves that we were interested in (e.g. only from this or that player, and/or only the most inefficient moves/most costly mistakes, etc.) -[] Typing something in the comments window freezes Katrain -> probably keyboard shortcuts / solved by label -[] Plus, you wouldn't need "B" and "W" beside these numbers if the top part of the window was black with the graph being white on top of it (and the bottom White with the graph being black as they are currently). +[/] The UI would be directly understood if there were bubbles with a short explanation popping up when hovering above buttons and labels, e.g "Performing additional analysis to 1502 visits" which appears currently in the comments window after pushing the Extra button would also make a perfect explanatory bubble when hovering over said button too. +--- partially solved by config with help for some bug/suggestion reports -- The territory span B+something W+something was confusing: it looked like the last move was both of them and it took me a while to figure out what it was about. It would be maybe clearer if these numbers appeared as dynamic graduations on the left outside of the winrate window, like graduations on a ruler. ---- Like, say if Black was 13pts ahead at some point in the game, the ruler would be: 15 / 10 / 5 / 0 / ... -15 - - --- The UI would be directly understood if there were bubbles with a short explanation popping up when hovering above buttons and labels, e.g "Performing additional analysis to 1502 visits" which appears currently in the comments window after pushing the Extra button would also make a perfect explanatory bubble when hovering over said button too. -- Plus, explanatory bubbles would help to clarify labels like "Debug" (are there bugs in the matrix? :p), "enable_ownership" (which didn't seem to prevent or allow visualizing territory ownership on the board, as that was already covered by the "owner" checkbox anyway... so I guess I missed something), etc. --- That would also prevent the need to go through the official documentation for every little thing, making Katrain more user friendly, IMO. -- In the 0.9 version I could hide dots from one player, which was handy to focus on my own mistakes when reviewing games, not my opponent's. For what I saw, we can't do that in the 1.0 version anymore, which is a shame IMO. --- Since dots help to discriminate between mistakes, it would be nice to be able to show only those that are big enough to worry about: for example showing only non-green dots, or showing only orange and red dots, or even only red dots, since strong and weak players will have different needs. In my case, when I was reviewing games (my own or classical Japanese ones) with the 0.9 version of Katrain, I would typically focus on moves that would be rated less than 80% efficient (ranging from orange to red, if I remember correctly). A slider going from 0 to 100% to show moves according to their efficiency would be handy, I think. Just an idea ^_^ diff --git a/ai.py b/ai.py index 1df3b37..69d6e6a 100644 --- a/ai.py +++ b/ai.py @@ -55,11 +55,26 @@ def ai_move(game: Game, ai_mode: str, ai_settings: Dict) -> Tuple[Move, GameNode aimove = top_policy_move ai_thoughts += f"Top policy move has weight > {ai_settings['pick_override']:.1%}, so overriding other strategies." elif top_5_pass or "weighted" in ai_mode: - weighted_coords = [(policy_grid[y][x], policy_grid[y][x], x, y) for x in range(size[0]) for y in range(size[1]) if policy_grid[y][x] > 0] - best = weighted_selection_without_replacement(weighted_coords, 1)[0] - aimove = Move(best[2:], player=cn.next_player) # just take a random move by policy w/o noise - ai_thoughts += f"Playing policy-weighted random move {aimove.gtp()} ({best[0]:.1%})" + ( - " because one of them is pass." if top_5_pass else " because strategy is weighted." + if top_5_pass: + lower_bound = 0.05 + weaken_fac = 1 + else: + lower_bound = max(0, ai_settings["lower_bound"]) + weaken_fac = max(0.01, ai_settings["weaken_fac"]) + weighted_coords = [(policy_grid[y][x], policy_grid[y][x] ** (1 / weaken_fac), x, y) for x in range(size[0]) for y in range(size[1]) if policy_grid[y][x] > lower_bound] + if top_5_pass or pass_policy > lower_bound: + weighted_coords.append([pass_policy, pass_policy ** (1 / weaken_fac), None, None]) + top = weighted_selection_without_replacement(weighted_coords, 1) + if top and top[0][2]: + best = top[0] + policy_value = best[0] + coords = best[2:] + else: + policy_value = pass_policy + coords = None + aimove = Move(coords, player=cn.next_player) # just take a random move by policy w/o noise + ai_thoughts += f"Playing policy-weighted random move {aimove.gtp()} ({policy_value:.1%})" + ( + " because one of them is pass." if top_5_pass else f" because strategy is weighted (lower bound={lower_bound:.2%}, num moves > lb={len(weighted_coords)})." ) elif "noise" in ai_mode: noise_str = ai_settings["noise_strength"] diff --git a/ai_performance.pickle b/ai_performance.pickle index b6e755ffbbc367492dfc308b8c527adde2469419..ccf868b3dac9bf99ede9819b0b7c89740ec5ffc7 100644 GIT binary patch literal 232385 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

1=i_jdo0q;}5P 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

7nXIK=?^}q+Vv3&OV^>MAC(sqqmqq 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

8O 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 literal 134690 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 diff --git a/config.json b/config.json index bc34f99..76eb994 100644 --- a/config.json +++ b/config.json @@ -5,12 +5,21 @@ "config": "KataGo/analysis_config.cfg", "threads": 8, "max_visits": 500, + "fast_visits": 50, "max_time": 3.0, "enable_ownership": true }, - "files": { + "sgf": { "sgf_load": "~/Downloads", - "sgf_save": "./sgfout" + "sgf_save": "./sgfout", + "save_feedback": [ + true, + true, + true, + true, + true, + true + ] }, "game": { "init_size": 19, @@ -37,7 +46,7 @@ 0 ], "eval_off_show_last": 3, - "eval_show_ai": false + "eval_show_ai": true }, "ai": { "Default": { @@ -62,9 +71,11 @@ "_help_left": "" }, "P:Weighted": { - "_help_right": "Strength is mainly affected by `model` in engine settings.", - "_help_left": "`pick_override` determines when top move is chosen without randomness, and is effectively disabled by default (1.0).", - "pick_override": 1.0 + "_help_right": "`lower_bound` determines the lower bound policy value that is allowed. `weaken_fac` influences how much more likely weaker moves are picked.", + "_help_left": "pick_override` determines when top move is chosen without randomness, and is effectively disabled by default (1.0).", + "pick_override": 1.0, + "lower_bound": 0.001, + "weaken_fac": 1 }, "P:Noise": { "pick_override": 0.95, @@ -112,14 +123,49 @@ "line_weight": 5, "_help_right": "Samples `pick_n + pick_frac * ` and plays the best one, biased to below the `threshold` line.", "_help_left": "Increase `line_weight` to penalize moves closer to the center more." + }, + "": { + "_help_right": "", + "_help_left": "" + } }, "board_ui": { + "engine_down_col": [ + 0.8, + 0, + 0, + 1 + ], + "engine_busy_col": [ + 0.9, + 0.4, + 0.1, + 1 + ], + "engine_little_busy_col": [ + 0.85, + 0.89, + 0.3, + 1 + ], + "engine_almost_done_col": [ + 0.67, + 0.9, + 0.18, + 1 + ], + "engine_ready_col": [ + 0.117, + 0.588, + 0, + 1 + ], "starpoint_size": 0.1, "stone_size": 0.475, "eval_dot_max_size": 0.5, - "eval_dot_min_size": 0.25, - "visit_frac_small": 0.1, + "eval_dot_min_size": 0.25, + "visit_frac_small": 0.1, "stones": { "B": [ 0.05, @@ -178,13 +224,13 @@ 0.67, 0.9, 0.18, - 0.0 + 1.0 ], [ 0.117, 0.588, 0, - 0.0 + 1.0 ] ], "line_color": [ diff --git a/engine.py b/engine.py index dc88f50..4e652b9 100644 --- a/engine.py +++ b/engine.py @@ -52,7 +52,7 @@ class KataGoEngine: self.queries = {} def shutdown(self, finish=False): - process = getattr(self, "katago_process", None) + process = self.katago_process if finish and process: while self.queries and process.poll() is None: time.sleep(0.1) @@ -120,6 +120,7 @@ class KataGoEngine: callback: Callable, error_callback: Optional[Callable] = None, visits: int = None, + analyze_fast: bool = False, time_limit=True, priority: int = 0, ownership: Optional[bool] = None, @@ -130,12 +131,17 @@ class KataGoEngine: moves.append(next_move) if ownership is None: ownership = self.config["enable_ownership"] and not next_move + if visits is None: + visits = self.config["max_visits"] + if analyze_fast and self.config.get("fast_visits"): + visits = self.config["fast_visits"] + size_x, size_y = analysis_node.board_size query = { "rules": self.get_rules(analysis_node), "priority": self.base_priority + priority, "analyzeTurns": [len(moves)], - "maxVisits": visits or self.config["max_visits"], + "maxVisits": visits, "komi": analysis_node.komi, "boardXSize": size_x, "boardYSize": size_y, diff --git a/game.py b/game.py index 588cf41..401dd23 100644 --- a/game.py +++ b/game.py @@ -24,7 +24,7 @@ class Game: DEFAULT_PROPERTIES = {"GM": 1, "FF": 4, "RU": "JP", "AP": "KaTrain:https://github.com/sanderland/katrain"} - def __init__(self, katrain, engine: Union[Dict, KataGoEngine], config: Dict, move_tree: GameNode = None): + def __init__(self, katrain, engine: Union[Dict, KataGoEngine], config: Dict, move_tree: GameNode = None, analyze_fast=False): self.katrain = katrain if isinstance(engine, KataGoEngine): engine = {"B": engine, "W": engine} @@ -45,11 +45,11 @@ class Game: self.current_node = self.root self._init_chains() - threading.Thread(target=lambda: self.analyze_all_nodes(-1_000_000), daemon=True).start() # return faster, but bypass Kivy Clock + threading.Thread(target=lambda: self.analyze_all_nodes(-1_000_000, analyze_fast=analyze_fast), daemon=True).start() # return faster, but bypass Kivy Clock - def analyze_all_nodes(self, priority=0): + def analyze_all_nodes(self, priority=0, analyze_fast=False): for node in self.root.nodes_in_tree: - node.analyze(self.engines[node.next_player], priority=priority) + node.analyze(self.engines[node.next_player], priority=priority, analyze_fast=analyze_fast) # -- move tree functions -- def _init_chains(self): @@ -199,7 +199,7 @@ class Game: def __repr__(self): return "\n".join("".join(Move.PLAYERS[self.chains[c][0].player] if c >= 0 else "-" for c in line) for line in self.board) + f"\ncaptures: {self.prisoner_count}" - def write_sgf(self, path=None, trainer_config={}, save_feedback=(True, True, True, True, True, True)): + def write_sgf(self, path=None, trainer_config={}, save_feedback=(True,), eval_thresholds=(0,)): black, white = self.root.get_property("PB"), self.root.get_property("PW") black = re.sub(r"['<>:\"/\\|?*]", "", black or "Black") white = re.sub(r"['<>:\"/\\|?*]", "", white or "White") @@ -208,8 +208,7 @@ class Game: os.makedirs(os.path.dirname(file_name), exist_ok=True) show_dots_for = {p: trainer_config.get("eval_show_ai", True) or "ai" not in self.katrain.controls.player_mode(p) for p in Move.PLAYERS} - thresholds = self.katrain.config("trainer/eval_thresholds") - sgf = self.root.sgf(save_comments_player=show_dots_for, save_comments_class=save_feedback, eval_thresholds=thresholds) + sgf = self.root.sgf(save_comments_player=show_dots_for, save_comments_class=save_feedback, eval_thresholds=eval_thresholds) with open(file_name, "w") as f: f.write(sgf) return f"SGF with analysis written to {file_name}" diff --git a/game_node.py b/game_node.py index 9b354e1..82d8044 100644 --- a/game_node.py +++ b/game_node.py @@ -25,18 +25,30 @@ class GameNode(SGFNode): show_class = save_comments_class[evaluation_class(self.points_lost, eval_thresholds)] else: show_class = False - if save_comments_player.get(self.player, False) and show_class: - best_sq = [] + if save_comments_player.get(self.player, False) and show_class and self.analysis_ready: + candidate_moves = self.candidate_moves + top_x = Move.from_gtp(candidate_moves[0]["move"]).sgf(self.board_size) + best_sq = [Move.from_gtp(d["move"]).sgf(self.board_size) for d in candidate_moves[1:] if d["pointsLost"] <= 0.5] if best_sq and "SQ" not in properties: properties["SQ"] = best_sq + if top_x and "MA" not in properties: + properties["MA"] = [top_x] comment = self.comment(sgf=True) if comment: properties["C"] = [properties.get("C", "") + comment] + if self.is_root: + properties["C"] = [ + "Moves marked 'X' indicate the top move according to KataGo, those with a square are all moves which lose at most 0.5 points.\n" + + properties.get("C", "") + + "\nSGF with review generated by KaTrain." + ] return properties # various analysis functions - def analyze(self, engine, priority=0, visits=None, time_limit=True, refine_move=None): - engine.request_analysis(self, lambda result: self.set_analysis(result, refine_move), priority=priority, visits=visits, time_limit=time_limit, next_move=refine_move) + def analyze(self, engine, priority=0, visits=None, time_limit=True, refine_move=None, analyze_fast=False): + engine.request_analysis( + self, lambda result: self.set_analysis(result, refine_move), priority=priority, visits=visits, analyze_fast=analyze_fast, time_limit=time_limit, next_move=refine_move + ) def update_move_analysis(self, move_analysis, move_gtp): cur = self.analysis["moves"].get(move_gtp) diff --git a/gui/badukpan.py b/gui/badukpan.py index ac0257c..1e7b084 100644 --- a/gui/badukpan.py +++ b/gui/badukpan.py @@ -255,7 +255,11 @@ class BadukPanWidget(Widget): m = child_node.single_move if m and m.coords is not None: undo_coords.add(m.coords) - evalcol = (*self.eval_color(points_lost), alpha) if points_lost is not None else None + if points_lost is None: + evalcol = None + else: + evalcol = self.eval_color(points_lost) + evalcol[3] = alpha scale = self.ui_config["child_scale"] self.draw_stone(m.coords[0], m.coords[1], (*stone_color[m.player][:3], alpha), None, None, evalcol, evalscale=scale, scale=scale) diff --git a/gui/controls.py b/gui/controls.py index 72727d8..85e4da5 100644 --- a/gui/controls.py +++ b/gui/controls.py @@ -12,7 +12,7 @@ class Controls(BoxLayout): def set_status(self, msg, at_node=None): self.status = msg - self.status_node = at_node or self.katrain.game and self.katrain.game.current_node + self.status_node = at_node or self.katrain and self.katrain.game and self.katrain.game.current_node self.status_label.text = msg self.update_evaluation() @@ -40,7 +40,7 @@ class Controls(BoxLayout): # handles showing completed analysis and score graph def update_evaluation(self): katrain = self.katrain - current_node = katrain.game and katrain.game.current_node + current_node = katrain and katrain.game and katrain.game.current_node if current_node is not self.status_node and not (self.status is not None and self.status_node is None and current_node.is_root): # startup errors on root self.status_label.text = "" @@ -79,7 +79,7 @@ class Controls(BoxLayout): config_popup.open() def configure_teacher(self): - config_popup = Popup(title="Edit Teacher Settings", size_hint=(0.6, 0.8)) + config_popup = Popup(title="Edit Teacher Settings", size_hint=(0.7, 0.8)) popup_contents = ConfigTeacherPopup(self.katrain, config_popup) config_popup.add_widget(popup_contents) config_popup.open() diff --git a/gui/kivyutils.py b/gui/kivyutils.py index 4d7a66d..7d5de69 100644 --- a/gui/kivyutils.py +++ b/gui/kivyutils.py @@ -213,6 +213,9 @@ class ScoreGraph(Label): dot_pos = ListProperty([0, 0]) highlighted_index = NumericProperty(None) y_scale = NumericProperty(4) + marginx = NumericProperty(0.015) + marginy = NumericProperty(0.01) + highlight_size = NumericProperty(5) def __init__(self, **kwargs): super().__init__(**kwargs) @@ -235,19 +238,21 @@ class ScoreGraph(Label): self.y_scale = math.ceil(max(4, max(-val_range[0], val_range[1])) / 2) * 2 - xscale = self.width * 0.9 / max(len(values) - 1, 15) + xscale = self.width * (1 - 2 * self.marginx) / max(len(values) - 1, 15) available_height = self.height * (1 - 2 * self.marginy) - line_points = [[self.pos[0] + self.marginx * self.width + i * xscale, self.pos[1] + available_height / 2 * (1 + val / self.y_scale)] for i, val in enumerate(values)] + line_points = [ + [self.pos[0] + self.marginx * self.width + i * xscale, self.pos[1] + self.height / 2 + available_height / 2 * (val / self.y_scale)] for i, val in enumerate(values) + ] self.line_points = sum(line_points, []) if self.highlighted_index is not None: self.highlighted_index = min(self.highlighted_index, len(values) - 1) dot_point = line_points[self.highlighted_index] if math.isnan(dot_point[1]): - dot_point[1] = self.pos[1] + available_height / 2 * (1 + (nn_values or [0])[-1] / self.y_scale) + dot_point[1] = self.pos[1] + self.height / 2 + available_height / 2 * ((nn_values or [0])[-1] / self.y_scale) self.dot_pos = [c - self.highlight_size / 2 for c in dot_point] - # print("Graph updated to ", len(line_points), "points, hl=", self.highlighted_index, self.dot_pos) + # print("Graph updated to ", len(line_points), "points, hl=", self.highlighted_index, self.dot_pos) def update_value(self, node): self.highlighted_index = index = node.depth diff --git a/gui/popups.py b/gui/popups.py index 29b9022..7832758 100644 --- a/gui/popups.py +++ b/gui/popups.py @@ -169,7 +169,8 @@ class ConfigPopup(QuickConfigGui): old_engine.shutdown(finish=True) else: self.katrain.game.analyze_all_nodes() # old engine was broken, so make sure we redo any failures - Clock.schedule_once(restart_engine, 0) + + Clock.schedule_once(restart_engine, 0) self.katrain.debug_level = self.config["debug"]["level"] self.katrain.update_state(redraw_board=True) @@ -235,6 +236,8 @@ class ConfigAIPopup(QuickConfigGui): class ConfigTeacherPopup(QuickConfigGui): def __init__(self, katrain, popup, **kwargs): self.settings = katrain.config("trainer") + self.sgf_settings = katrain.config("sgf") + print(self.sgf_settings, katrain.config("sgf")) self.ui_settings = katrain.config("board_ui") super().__init__(katrain, popup, self.settings, **kwargs) Clock.schedule_once(self._build, 0) @@ -245,18 +248,18 @@ class ConfigTeacherPopup(QuickConfigGui): thresholds = self.settings["eval_thresholds"] undos = self.settings["num_undo_prompts"] colors = self.ui_settings["eval_colors"] - thrbox = GridLayout(spacing=1, padding=2, cols=4, rows=len(thresholds) + 1) + thrbox = GridLayout(spacing=1, padding=2, cols=5, rows=len(thresholds) + 1) thrbox.add_widget(ScaledLightLabel(text="Point loss greater than", bold=True)) thrbox.add_widget(ScaledLightLabel(text="Gives this many undos", bold=True)) thrbox.add_widget(ScaledLightLabel(text="Color (fixed)", bold=True)) thrbox.add_widget(ScaledLightLabel(text="Show dots", bold=True)) - + thrbox.add_widget(ScaledLightLabel(text="Save in SGF", bold=True)) for i, (thr, undos, color) in enumerate(zip(thresholds, undos, colors)): thrbox.add_widget(LabelledFloatInput(text=str(thr), input_property=f"eval_thresholds::{i}")) thrbox.add_widget(LabelledFloatInput(text=str(undos), input_property=f"num_undo_prompts::{i}")) thrbox.add_widget(BackgroundLabel(background=color[:3])) thrbox.add_widget(LabelledCheckBox(text=str(color[3] == 1), input_property=f"alpha::{i}")) - + thrbox.add_widget(LabelledCheckBox(size_hint=(0.5, 1), text=str(self.sgf_settings["save_feedback"][i]), input_property=f"save_feedback::{i}")) self.add_widget(thrbox) xsettings = BoxLayout(size_hint=(1, 0.15), spacing=2) @@ -264,7 +267,7 @@ class ConfigTeacherPopup(QuickConfigGui): xsettings.add_widget(LabelledIntInput(size_hint=(0.5, 1), text=str(self.settings["eval_off_show_last"]), input_property="eval_off_show_last")) self.add_widget(xsettings) xsettings = BoxLayout(size_hint=(1, 0.15), spacing=2) - xsettings.add_widget(ScaledLightLabel(text="Show dots for AI players")) + xsettings.add_widget(ScaledLightLabel(text="Show dots/SGF comments for AI players")) xsettings.add_widget(LabelledCheckBox(size_hint=(0.5, 1), text=str(self.settings["eval_show_ai"]), input_property="eval_show_ai")) self.add_widget(xsettings) @@ -281,15 +284,20 @@ class ConfigTeacherPopup(QuickConfigGui): if "::" in k: k1, i = k.split("::") i = int(i) - if "alpha" not in k1: - if self.settings[k1][i] != v: - self.settings[k1][i] = v - self.katrain.log(f"Updating setting {k1}[{i}] = {v}", OUTPUT_DEBUG) - else: + if "alpha" in k1: v = 1.0 if v else 0.0 if self.ui_settings["eval_colors"][i][3] != v: self.katrain.log(f"Updating alpha {i} = {v}", OUTPUT_DEBUG) self.ui_settings["eval_colors"][i][3] = v + elif "save_feedback" in k1: + if self.sgf_settings[k1][i] != v: + self.sgf_settings[k1][i] = v + self.katrain.log(f"Updating setting sgf/{k1}[{i}] = {v}", OUTPUT_DEBUG) + + else: + if self.settings[k1][i] != v: + self.settings[k1][i] = v + self.katrain.log(f"Updating setting trainer/{k1}[{i}] = {v}", OUTPUT_DEBUG) else: if self.settings[k] != v: self.settings[k] = v diff --git a/katrain.kv b/katrain.kv index 6f8d462..a6b18fa 100644 --- a/katrain.kv +++ b/katrain.kv @@ -67,8 +67,8 @@ : : - padding: 3, 0.3*self.size[1] - font_size: 0.33*self.size[1] + padding: 3, 0.27*self.size[1] + font_size: 0.4*self.size[1] : font_size: 0.5*self.size[1] @@ -151,7 +151,6 @@ size: self.texture_size : - font_size: dp(12) color: BLACK halign: 'center' valign: 'center' @@ -161,21 +160,22 @@ orientation: 'horizontal' text: '' label: '' - ClickableLabel: - size_hint: 0.6,None - height: self.font_size * 1.5 + ClickableLabel: + size_hint: 0.6,1 id: desc text: root.label - font_size: dp(20) - on_press: value.opacity = 1 if value.opacity==0 else 0 + font_size: self.size[1] * 0.8 + on_press: + value.opacity = 1 if value.opacity==0 else 0 DarkLabel: - size_hint: 0.4,None + size_hint: 0.4,1 text: root.text - height: desc.height font_size: desc.font_size id: value bold: True + + : text: '' color: WHITE @@ -216,9 +216,6 @@ size: self.texture_size : - highlight_size: 5 - marginx: 0.05 - marginy: 0.01 whalf: root.pos[1]+self.height*0.25*(1 + 2 * root.marginy) bhalf: root.pos[1]+self.height*0.75*(1 - 2/3 * root.marginy) mid: root.pos[1]+self.height*0.5 @@ -227,19 +224,19 @@ Color: rgba: GREY Line: - points: [root.pos[0]+self.width*root.marginx,root.whalf,root.pos[0]+self.width*0.95,root.whalf] + points: [root.pos[0]+self.width*root.marginx,root.whalf,root.pos[0]+self.width*(1-root.marginx),root.whalf] width: 1.0 dashes: [1,2] Line: - points: [root.pos[0]+self.width*root.marginx,root.mid,root.pos[0]+self.width*0.95,root.mid] + points: [root.pos[0]+self.width*root.marginx,root.mid,root.pos[0]+self.width*(1-root.marginx),root.mid] width: 1.0 dashes: [4,4] Line: - points: [root.pos[0]+self.width*root.marginx,root.bhalf,root.pos[0]+self.width*0.95,root.bhalf] + points: [root.pos[0]+self.width*root.marginx,root.bhalf,root.pos[0]+self.width*(1-root.marginx),root.bhalf] width: 1.0 dashes: [1,2] Line: - rectangle: [root.pos[0] + root.marginx * self.width, root.pos[1] + root.marginy*self.height, root.width*0.9, root.height*(1-2*root.marginy)] + rectangle: [root.pos[0] + root.marginx * self.width, root.pos[1] + root.marginy*self.height, self.width*(1-2*root.marginx), root.height*(1-2*root.marginy)] canvas.after: Color: rgba: BLACK @@ -357,6 +354,11 @@ Ellipse: pos: self.pos[0] + self.width/2 - self.height/5, self.pos[1] + self.height/2 - self.height/5 size: self.height/2.5,self.height/2.5 + Color: + rgba: BLACK + Line: + circle: self.pos[0] + self.width/2, self.pos[1] + self.height/2, self.height/5 - 1 + width: 1.1 Label: size_hint: 0.025, 1 @@ -374,11 +376,11 @@ Color: rgba: [*[(c+1)/2 for c in root.border_color[:3]], root.border_color[3]] Line: - rectangle: [self.pos[0]+1,self.pos[1]+2,self.width-3,self.height-4] + rectangle: [self.pos[0]+1,self.pos[1]+2,self.width-3,self.height-3] width:1 Label: padding: 5, 5 - font_size: dp(20) + font_size: dp(18) color: BLACK size_hint_y: None height: self.texture_size[1] @@ -500,16 +502,20 @@ ScoreGraph: id: graph size_hint: 1,0.7 - CensorableLabel: - id: win_rate - size_hint: 1, 0.15 - label: 'Win rate' - text: '' - CensorableLabel: - id: score - size_hint: 1, 0.15 - label: 'Score' - text: '' + BoxLayout: + orientation: 'vertical' + size_hint: 1,0.3 + spacing: 3 + CensorableLabel: + id: win_rate + size_hint: 1, 0.5 + label: 'Win rate' + text: '' + CensorableLabel: + id: score + size_hint: 1, 0.5 + label: 'Score' + text: '' BoxLayout: # ----------- play ----------- orientation: 'vertical' size_hint: 1,1 @@ -563,7 +569,7 @@ StyledButton: text: 'Configure Teacher' on_press: root.configure_teacher() - size_hint: 1.33, 1 + size_hint: 1.425, 1 StyledButton: text: 'Configure AIs' on_press: root.configure_ais() @@ -572,7 +578,7 @@ size_hint: 1,0.2 CensorableLabel: id: score_change - size_hint: 1, 0.0225 + size_hint: 1, 0.025 label: 'Score change' text: '' BoxLayout: diff --git a/katrain.py b/katrain.py index 3ca50a6..37515de 100644 --- a/katrain.py +++ b/katrain.py @@ -111,6 +111,19 @@ class KaTrainGui(BoxLayout): self.board_controls.mid_circles_container.add_widget(top) self.board_controls.black_prisoners.text = str(prisoners[1]) self.board_controls.white_prisoners.text = str(prisoners[0]) + + # update engine status dot + if not self.engine or not self.engine.katago_process or self.engine.katago_process.poll() is not None: + self.board_controls.engine_status_col = self.config("board_ui/engine_down_col") + elif len(self.engine.queries) >= 4: + self.board_controls.engine_status_col = self.config("board_ui/engine_busy_col") + elif len(self.engine.queries) >= 2: + self.board_controls.engine_status_col = self.config("board_ui/engine_little_busy_col") + elif len(self.engine.queries) == 0: + self.board_controls.engine_status_col = self.config("board_ui/engine_ready_col") + else: + self.board_controls.engine_status_col = self.config("board_ui/engine_almost_done_col") + # redraw if redraw_board: Clock.schedule_once(self.board_gui.draw_board, -1) # main thread needs to do this Clock.schedule_once(self.board_gui.draw_board_contents, -1) @@ -137,9 +150,9 @@ class KaTrainGui(BoxLayout): if self.game: self.message_queue.put([self.game.game_id, message, *args]) - def _do_new_game(self, move_tree=None): + def _do_new_game(self, move_tree=None, analyze_fast=False): self.engine.on_new_game() # clear queries - self.game = Game(self, self.engine, self.config("game"), move_tree=move_tree) + self.game = Game(self, self.engine, self.config("game"), move_tree=move_tree, analyze_fast=analyze_fast) self.controls.select_mode("analyze" if move_tree and len(move_tree.nodes_in_tree) > 1 else "play") self.controls.graph.initialize_from_game(self.game.root) self.update_state(redraw_board=True) @@ -148,7 +161,6 @@ class KaTrainGui(BoxLayout): if node is None or self.game.current_node == node: mode = self.controls.ai_mode(self.game.current_node.next_player) settings = self.config(f"ai/{mode}") - print(mode, settings) if settings: ai_move(self.game, mode, settings) @@ -174,7 +186,7 @@ class KaTrainGui(BoxLayout): fileselect_popup = Popup(title="Double Click SGF file to analyze", size_hint=(0.8, 0.8)) popup_contents = LoadSGFPopup() fileselect_popup.add_widget(popup_contents) - popup_contents.filesel.path = os.path.expanduser(self.config("files/sgf_load")) + popup_contents.filesel.path = os.path.expanduser(self.config("sgf/sgf_load")) def readfile(files, _mouse): fileselect_popup.dismiss() @@ -183,7 +195,7 @@ class KaTrainGui(BoxLayout): except ParseError as e: self.log(f"Failed to load SGF. Parse Error: {e}", OUTPUT_ERROR) return - self._do_new_game(move_tree=move_tree) + self._do_new_game(move_tree=move_tree, analyze_fast=fileselect_popup.fast.active) popup_contents.filesel.on_submit = readfile fileselect_popup.open() @@ -207,7 +219,12 @@ class KaTrainGui(BoxLayout): self.game.root.set_property( f"P{pl}", f"AI {self.controls.ai_mode(pl)} (KataGo { os.path.splitext(model_file)[0]})" if "ai" in self.controls.player_mode(pl) else "Player" ) - msg = self.game.write_sgf(self.config("files/sgf_save"), trainer_config=self.config("trainer"), save_feedback=self.config("sgf/save_feedback")) + msg = self.game.write_sgf( + self.config("sgf/sgf_save"), + trainer_config=self.config("trainer"), + save_feedback=self.config("sgf/save_feedback"), + eval_thresholds=self.config("trainer/eval_thresholds"), + ) self.log(msg, OUTPUT_INFO) self.controls.set_status(msg) @@ -264,7 +281,7 @@ class KaTrainGui(BoxLayout): self.controls.set_status(f"Failed to imported game from clipboard: {e}\nClipboard contents: {clipboard[:50]}...") return move_tree.nodes_from_root[-1].analyze(self.engine) # speed up result for looking at end of game - self._do_new_game(move_tree=move_tree) + self._do_new_game(move_tree=move_tree, analyze_fast=True) self("redo", 999) self.log("Imported game from clipboard.", OUTPUT_INFO) return True diff --git a/selfplay.py b/selfplay.py index a9a6587..7959714 100644 --- a/selfplay.py +++ b/selfplay.py @@ -18,7 +18,7 @@ DB_FILENAME = "ai_performance.pickle" class Logger: def log(self, msg, level): - if level <= OUTPUT_DEBUG: + if level <= OUTPUT_INFO: print(msg) if level <= OUTPUT_ERROR: print(msg, file=sys.stderr) @@ -147,6 +147,31 @@ test_ais = [ AI("P:Weighted", {"pick_override": 1.0}), ] +test_ais = [ + AI("Policy", {}), + AI("P:Noise", {"noise_strength": 0.8}), + AI("P:Weighted", {"pick_override": 1.0, "lower_bound": 0.0, "weaken_fac": 1}), + AI("P:Weighted", {"pick_override": 0.95, "lower_bound": 0.0, "weaken_fac": 1}), + AI("P:Weighted", {"pick_override": 0.9, "lower_bound": 0.0, "weaken_fac": 1}), + AI("P:Weighted", {"pick_override": 1.0, "lower_bound": 0.0, "weaken_fac": 0.5}), + AI("P:Weighted", {"pick_override": 1.0, "lower_bound": 0.0, "weaken_fac": 1}), + AI("P:Weighted", {"pick_override": 1.0, "lower_bound": 0.0, "weaken_fac": 1.5}), + AI("P:Weighted", {"pick_override": 1.0, "lower_bound": 0.0, "weaken_fac": 2}), + AI("P:Weighted", {"pick_override": 1.0, "lower_bound": 0.01, "weaken_fac": 0.5}), + AI("P:Weighted", {"pick_override": 1.0, "lower_bound": 0.01, "weaken_fac": 1}), + AI("P:Weighted", {"pick_override": 1.0, "lower_bound": 0.01, "weaken_fac": 1.5}), + AI("P:Weighted", {"pick_override": 1.0, "lower_bound": 0.01, "weaken_fac": 2}), + AI("P:Weighted", {"pick_override": 1.0, "lower_bound": 0.001, "weaken_fac": 0.5}), + AI("P:Weighted", {"pick_override": 1.0, "lower_bound": 0.001, "weaken_fac": 1}), + AI("P:Weighted", {"pick_override": 1.0, "lower_bound": 0.001, "weaken_fac": 1.5}), + AI("P:Weighted", {"pick_override": 1.0, "lower_bound": 0.001, "weaken_fac": 2}), + AI("P:Weighted", {"pick_override": 1.0, "lower_bound": 0.005, "weaken_fac": 0.5}), + AI("P:Weighted", {"pick_override": 1.0, "lower_bound": 0.005, "weaken_fac": 1}), + AI("P:Weighted", {"pick_override": 1.0, "lower_bound": 0.005, "weaken_fac": 1.5}), + AI("P:Weighted", {"pick_override": 1.0, "lower_bound": 0.005, "weaken_fac": 2}), + AI("P:Pick", {"pick_frac": 0.5, "pick_n": 0}), +] + # test_ais = [ # AI("Policy", {}), @@ -161,7 +186,7 @@ test_ais = [ for ai in test_ais: add_ai(ai) -N_GAMES = 5 +N_GAMES = 3 ais_to_test = retrieve_ais(test_ais) # ais_to_test = ai_database diff --git a/sgf_parser.py b/sgf_parser.py index 4a6d66e..499944e 100644 --- a/sgf_parser.py +++ b/sgf_parser.py @@ -82,7 +82,7 @@ class SGFNode: sys.setrecursionlimit(max(sys.getrecursionlimit(), 3 * 29 * 29)) # thanks to lightvector for causing stack overflows sgf_str = "".join([prop + "".join(f"[{v}]" for v in values) for prop, values in self.sgf_properties(**xargs).items() if values]) if self.children: - children = [c.sgf() for c in self.children] + children = [c.sgf(**xargs) for c in self.children] if len(children) == 1: sgf_str += ";" + children[0] else: