From e8b0d2a5c4f17e288d4a02b46d27bd7d6b34bd9e Mon Sep 17 00:00:00 2001 From: Sander Land Date: Fri, 1 May 2020 18:43:14 +0200 Subject: [PATCH] selfplay fix --- README.md | 9 +- ai_performance.pickle | Bin 271849 -> 0 bytes bots/BOTS.md | 3 +- bots/ai_performance.pickle | Bin 0 -> 22641 bytes bots/selfplay.py | 190 +++++++++++++++++++++++++ selfplay.py | 279 ------------------------------------- 6 files changed, 196 insertions(+), 285 deletions(-) delete mode 100644 ai_performance.pickle create mode 100644 bots/ai_performance.pickle create mode 100644 bots/selfplay.py delete mode 100644 selfplay.py diff --git a/README.md b/README.md index 63f4fc0..ed22d77 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,7 @@ but has since grown to include a wide range of features, including: | ![screenshot](img/screenshot_analyze.png) | ![screenshot](img/screenshot_play.png) | ## Quickstart + * You can right-click most button or checkbox labels to get a tooltip with help. * To analyze a game, load it using the button in the bottom right, or press `ctrl-L` * To play against AI, pick an AI from the drop down a color and either 'human' or 'teach' for yourself and start playing. @@ -28,8 +29,8 @@ but has since grown to include a wide range of features, including: ### Quick Installation for Windows users -* Currently not available for this pre-release, will be added soon. - + * See the [releases tab](https://github.com/sanderland/katrain/releases) for pre-built installers. + ### Installation from source for Windows users * Download the repository by clicking the green *Clone or download* on this page and *Download zip*. Extract the contents. @@ -53,7 +54,7 @@ Under the 'play' tab you can select who is playing black and white. * Human is simple play with potential feedback, but without auto-undo. * Teach will give you instant feedback, and auto-undo bad moves to give you a second chance. * Settings for this mode can be found under 'Configure Teacher' -* AI will activate the AI in the dropdown next to the buttons. +* AI will activate the AI in the dropdown menu next to the buttons. * Settings for all AIs can be found under 'Configure AIs' If you do not want to see 'Points lost' or other feedback for your moves, @@ -70,8 +71,6 @@ The dots indicate how many points were lost by that move. In short, if you are a weaker player you should mostly on large dots that are red or purple, while stronger players can pay more attention to smaller mistakes. - - #### AIs Available AIs, with strength indicating an estimate for the default settings, are: diff --git a/ai_performance.pickle b/ai_performance.pickle deleted file mode 100644 index 53352effa00d7b57b458a47bbd2ee70d84f59109..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 271849 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 O}-c6Cmj*tOIepzu@>oj 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

|d7g}(E^=IuhA->dt)twNvh+>_72KQsYOTXL5 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 F{{fGZsZ#&| diff --git a/bots/BOTS.md b/bots/BOTS.md index e860de1..aa63724 100644 --- a/bots/BOTS.md +++ b/bots/BOTS.md @@ -1,2 +1,3 @@ # Bots -This directory contains the source code used to run the katrain-* bots on OGS. +This directory contains the source code used to run the katrain-* bots on OGS, + and some code to test them. It is liable to break without warning. diff --git a/bots/ai_performance.pickle b/bots/ai_performance.pickle new file mode 100644 index 0000000000000000000000000000000000000000..32e6b2b18b74c8c6de361fd032086b93d016b367 GIT binary patch literal 22641 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 literal 0 HcmV?d00001 diff --git a/bots/selfplay.py b/bots/selfplay.py new file mode 100644 index 0000000..3375587 --- /dev/null +++ b/bots/selfplay.py @@ -0,0 +1,190 @@ +# This is a script I use to test the performance of AIs +import pickle +import sys +import threading +import time +import traceback +from collections import defaultdict +from concurrent.futures.thread import ThreadPoolExecutor + +from ai import ai_move +from common import OUTPUT_DEBUG, OUTPUT_ERROR, OUTPUT_INFO +from elote import EloCompetitor +from engine import KataGoEngine +from game import Game +import json + +DB_FILENAME = "bots/ai_performance.pickle" + + +class Logger: + def log(self, msg, level): + if level <= OUTPUT_INFO: + print(msg) + if level <= OUTPUT_ERROR: + print(msg, file=sys.stderr) + + +logger = Logger() + +with open("config.json") as f: + settings = json.load(f) + DEFAULT_AI_SETTINGS = settings["ai"] + + +class AI: + DEFAULT_ENGINE_SETTINGS = { + "katago": "KataGo/katago-bs", + "model": "KataGo/models/b15-1.3.2.txt.gz", + "config": "KataGo/analysis_config.cfg", + "max_visits": 1, + "max_time": 300.0, + "_enable_ownership": False, + } + NUM_THREADS = 8 + IGNORE_SETTINGS_IN_TAG = {"threads", "_enable_ownership", "katago"} # katago for switching from/to bs version + ENGINES = [] + LOCK = threading.Lock() + + def __init__(self, strategy, ai_settings, engine_settings=None): + self.elo_comp = EloCompetitor(initial_rating=1000) + self.strategy = strategy + self.ai_settings = ai_settings + self.engine_settings = engine_settings or {} + fmt_settings = [f"{k}={v}" for k, v in {**self.ai_settings, **self.engine_settings}.items() if k not in AI.IGNORE_SETTINGS_IN_TAG] + self.name = f"{strategy}({ ','.join(fmt_settings) })" + self.fix_settings() + + def fix_settings(self): + self.ai_settings = {**DEFAULT_AI_SETTINGS[self.strategy], **self.ai_settings} + self.engine_settings = {**AI.DEFAULT_ENGINE_SETTINGS, **self.engine_settings, "threads": AI.NUM_THREADS} + + def get_engine(self): # factory + with AI.LOCK: + for existing_engine_settings, engine in AI.ENGINES: + if existing_engine_settings == self.engine_settings: + return engine + engine = KataGoEngine(logger, self.engine_settings) + AI.ENGINES.append((self.engine_settings, engine)) + print("Creating new engine for", self.engine_settings, "now have", len(AI.ENGINES), "engines up") + return engine + + def __eq__(self, other): + return self.name == other.name # should capture all relevant setting differences + + +try: + with open(DB_FILENAME, "rb") as f: + ai_database, all_results = pickle.load(f) + for ai in ai_database: + ai.fix_settings() # update as required +except FileNotFoundError: + ai_database = [] + all_results = [] + + +def add_ai(ai): + if ai not in ai_database: + ai_database.append(ai) + print(f"Adding {ai.name}") + else: + print(f"AI {ai.name} already in DB") + + +def retrieve_ais(selected_ais): + return [ai for ai in ai_database if ai in selected_ais] + + +test_ais = [ + # AI("Jigo", {}, {"max_visits": 100}), + AI("Policy", {}), + AI("P:Local", {}), + AI("P:Pick", {}), + AI("P:Noise", {}), + AI("P:Tenuki", {}), + AI("P:Local", {}), + AI("P:Influence", {}), + AI("P:Territory", {}), +] + +for ai in test_ais: + add_ai(ai) + +N_GAMES = 25 + +ais_to_test = retrieve_ais(test_ais) + +results = defaultdict(list) + + +def play_games(black: AI, white: AI, n: int = N_GAMES): + players = {"B": black, "W": white} + engines = {"B": black.get_engine(), "W": white.get_engine()} + tag = f"{black.name} vs {white.name}" + try: + for i in range(n): + game = Game(Logger(), engines, {}) + game.root.add_list_property("PW", [white.name]) + game.root.add_list_property("PB", [black.name]) + start_time = time.time() + while not game.ended: + p = game.current_node.next_player + move = ai_move(game, players[p].strategy, players[p].ai_settings) + while not game.current_node.analysis_ready: + time.sleep(0.001) + game.game_id += f"_{game.current_node.format_score()}" + print(f"{tag}\tGame {i+1} finished in {time.time()-start_time:.1f}s {game.current_node.format_score()} -> {game.write_sgf('sgf_selfplay/')}", file=sys.stderr) + score = game.current_node.score + if score > 0.3: + black.elo_comp.beat(white.elo_comp) + elif score > -0.3: + black.elo_comp.tied(white.elo_comp) + + results[tag].append(score) + all_results.append((black.name, white.name, score)) + + with open("bots/tmp.pickle", "wb") as f: + pickle.dump((ai_database, all_results), f) + except Exception as e: + print(f"Exception in playing {tag}: {e}") + print(f"Exception in playing {tag}: {e}", file=sys.stderr) + traceback.print_exc() + traceback.print_exc(file=sys.stderr) + + +def fmt_score(score): + return f"{'B' if score >= 0 else 'W'}+{abs(score):.1f}" + + +print(len(ais_to_test), "ais to test") +global_start = time.time() + +with ThreadPoolExecutor(max_workers=16) as threadpool: + for b in ais_to_test: + for w in ais_to_test: + if b is not w: + threadpool.submit(play_games, b, w) + +print("POOL EXIT") + +print("---- RESULTS ----") +for k, v in results.items(): + b_win = sum([s > 0.3 for s in v]) + w_win = sum([s < -0.3 for s in v]) + print(f"{b_win} {k} {w_win} : {list(map(fmt_score,v))}") + +print("---- ELO ----") +for ai in sorted(ai_database, key=lambda a: -a.elo_comp.rating): + wins = [(b, w, s) for (b, w, s) in all_results if s > 0.3 and b == ai.name or w == ai.name and s < -0.3] + losses = [(b, w, s) for (b, w, s) in all_results if s < -0.3 and b == ai.name or w == ai.name and s > -0.3] + draws = [(b, w, s) for (b, w, s) in all_results if -0.3 <= s <= 0.3 and (b == ai.name or w == ai.name)] + out = f"{'*' if ai in ais_to_test else ' '} {ai.name}: ELO {ai.elo_comp.rating:.1f} WINS {len(wins)} LOSSES {len(losses)} DRAWS {len(draws)}" + # print("Wins:",wins) + print(out) + print(out, file=sys.stderr) + +with open(DB_FILENAME, "wb") as f: + pickle.dump((ai_database, all_results), f) + +print(f"Done! saving {len(all_results)} to pickle", file=sys.stderr) +print(f"Time taken {time.time()-global_start:.1f}s", file=sys.stderr) diff --git a/selfplay.py b/selfplay.py deleted file mode 100644 index acd395c..0000000 --- a/selfplay.py +++ /dev/null @@ -1,279 +0,0 @@ -# This is a script I use to test the performance of AIs -import pickle -import sys -import threading -import time -import traceback -from collections import defaultdict -from concurrent.futures.thread import ThreadPoolExecutor - -from ai import ai_move -from common import OUTPUT_DEBUG, OUTPUT_ERROR, OUTPUT_INFO -from elote import EloCompetitor -from engine import KataGoEngine -from game import Game - -DB_FILENAME = "ai_performance.pickle" - - -class Logger: - def log(self, msg, level): - if level <= OUTPUT_INFO: - print(msg) - if level <= OUTPUT_ERROR: - print(msg, file=sys.stderr) - - -logger = Logger() - - -class AI: - DEFAULT_ENGINE_SETTINGS = { - "katago": "KataGo/katago-bs", - "model": " models/b15-1.3.2.txt.gz", - "config": "KataGo/analysis_config.cfg", - "max_visits": 1, - "max_time": 300.0, - "enable_ownership": False, - } - NUM_THREADS = 8 - DEFAULT_SETTINGS = { - "target_score": 2, - "random_loss": 1, - "max_loss": 5, - "min_visits": 20, - "noise_strength": 0.8, - "pick_n": 10, - "pick_frac": 0.2, - "local_stddev": 10, - "line_weight": 10, - "pick_override": 0.95, - } - IGNORE_SETTINGS_IN_TAG = {"threads", "enable_ownership", "katago"} # katago for switching from/to bs version - ENGINES = [] - LOCK = threading.Lock() - - def __init__(self, strategy, ai_settings, engine_settings={}): - self.elo_comp = EloCompetitor(initial_rating=1000) - self.strategy = strategy - self.ai_settings = ai_settings - self.engine_settings = engine_settings - fmt_settings = [f"{k}={v}" for k, v in {**ai_settings, **engine_settings}.items() if k not in AI.IGNORE_SETTINGS_IN_TAG] - self.name = f"{strategy}({ ','.join(fmt_settings) })" - self.fix_settings() - - def fix_settings(self): - self.ai_settings = {**AI.DEFAULT_SETTINGS, **self.ai_settings} - self.engine_settings = {**AI.DEFAULT_ENGINE_SETTINGS, **self.engine_settings} - self.engine_settings["threads"] = AI.NUM_THREADS - - def get_engine(self): # factory - with AI.LOCK: - for existing_engine_settings, engine in AI.ENGINES: - if existing_engine_settings == self.engine_settings: - return engine - engine = KataGoEngine(logger, self.engine_settings) - AI.ENGINES.append((self.engine_settings, engine)) - print("Creating new engine for", self.engine_settings, "now have", len(AI.ENGINES), "engines up") - return engine - - def __eq__(self, other): - return self.name == other.name # should capture all relevant setting differences - - -try: - with open(DB_FILENAME, "rb") as f: - ai_database, all_results = pickle.load(f) - for ai in ai_database: - ai.fix_settings() # update as required -except FileNotFoundError: - ai_database = [] - all_results = [] - - -def add_ai(ai): - if ai not in ai_database: - ai_database.append(ai) - print(f"Adding {ai.name}") - else: - print(f"AI {ai.name} already in DB") - - -def retrieve_ais(selected_ais): - return [ai for ai in ai_database if ai in selected_ais] - - -test_ais = [ - AI("P:Local", {"local_stddev": 1, "pick_frac": 0.1}), - AI("P:Local", {"local_stddev": 1, "pick_frac": 0.05}), - AI("P:Local", {"local_stddev": 5}), - AI("P:Pick", {"pick_frac": 0.4, "pick_n": 20}), - AI("P:Noise", {"noise_strength": 0.8}), - AI("P:Noise", {"noise_strength": 0.9}), - AI("P:Tenuki", {"local_stddev": 1}), - AI("P:Tenuki", {"local_stddev": 5}), - AI("P:Tenuki", {"local_stddev": 10}), - AI("P:Pick", {"pick_frac": 0.2, "pick_n": 10}), - AI("P:Pick", {"pick_frac": 0.3, "pick_n": 10}), - AI("P:Local", {"local_stddev": 10}), - AI("P:Local", {"local_stddev": 5}), - AI("P:Pick", {"pick_frac": 0.0, "pick_n": 1}), - AI("Jigo", {}, {"max_visits": 50}), - AI("Policy", {}), - # AI("Policy", {},{'model':'models/g170-b40c256x2-s2990766336-d830712531.bin.gz'}), -] - -test_ais = [ - AI("Policy", {}), - AI("P:Noise", {"noise_strength": 0.6}), - AI("P:Noise", {"noise_strength": 0.7}), - AI("P:Noise", {"noise_strength": 0.8}), - AI("P:Noise", {"noise_strength": 0.9}), - AI("P:Pick", {}), - AI("P:Pick", {"pick_frac": 0.3, "pick_n": 20}), - AI("P:Pick", {"pick_frac": 0.5, "pick_n": 0}), - AI("P:Influence", {"pick_frac": 0.2, "pick_n": 20}), - AI("P:Territory", {"pick_frac": 0.2, "pick_n": 20}), - AI("P:Influence", {"pick_frac": 0.33, "line_weight": 20}), - AI("P:Territory", {"pick_frac": 0.33, "line_weight": 20}), - AI("P:Pick", {"pick_frac": 0.0, "pick_n": 1}), - AI("P:Tenuki", {"local_stddev": 20}), - AI("P:Tenuki", {"local_stddev": 10}), - AI("P:Tenuki", {"local_stddev": 5}), - AI("P:Local", {"local_stddev": 10}), - AI("P:Local", {"local_stddev": 5}), - AI("P:Local", {"local_stddev": 1}), - AI("P:Local", {"local_stddev": 1, "pick_frac": 0.0, "pick_n": 20}), - 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", {}), - AI("P:Weighted", {"pick_override": 1.0, "lower_bound": 0.0, "weaken_fac": 1}), - AI("P:Weighted", {"pick_override": 1.0, "lower_bound": 0.01, "weaken_fac": 1}), - AI("P:Weighted", {"pick_override": 1.0, "lower_bound": 0.001, "weaken_fac": 1}), - AI("P:Weighted", {"pick_override": 1.0, "lower_bound": 0.005, "weaken_fac": 1}), -] - - -# test_ais = [ -# AI("Policy", {}), -# AI("P:Noise", {"noise_strength": 0.4}), -# AI("P:Noise", {"noise_strength": 0.5}), -# AI("P:Noise", {"noise_strength": 0.6}), -# AI("P:Noise", {"noise_strength": 0.7}), -# AI("P:Noise", {"noise_strength": 0.8}), -# ] - -# ai_database = [ai for ai in ai_database if "Territory" not in ai.name and "Influence" not in ai.name] -for ai in test_ais: - add_ai(ai) - -N_GAMES = 20 - -ais_to_test = retrieve_ais(test_ais) -# ais_to_test = ai_database -# ais_to_test = [ai for ai in ai_database if 'visits' not in ai.name] -# ais_to_test = [ai for ai in ai_database if 'visits' not in ai.name and (not 'model' in ai.name or 'b40' in ai.name)] - - -results = defaultdict(list) - - -def play_games(black: AI, white: AI, n: int = N_GAMES): - players = {"B": black, "W": white} - engines = {"B": black.get_engine(), "W": white.get_engine()} - tag = f"{black.name} vs {white.name}" - try: - for i in range(n): - game = Game(Logger(), engines, {}) - game.root.add_list_property("PW", [white.name]) - game.root.add_list_property("PB", [black.name]) - start_time = time.time() - while not game.ended: - p = game.current_node.next_player - move = ai_move(game, players[p].strategy, players[p].ai_settings) - while not game.current_node.analysis_ready: - time.sleep(0.001) - game.game_id += f"_{game.current_node.format_score()}" - print(f"{tag}\tGame {i+1} finished in {time.time()-start_time:.1f}s {game.current_node.format_score()} -> {game.write_sgf('sgf_selfplay/')}", file=sys.stderr) - score = game.current_node.score - if score > 0.3: - black.elo_comp.beat(white.elo_comp) - elif score > -0.3: - black.elo_comp.tied(white.elo_comp) - - results[tag].append(score) - all_results.append((black.name, white.name, score)) - - with open("tmp.pickle", "wb") as f: - pickle.dump((ai_database, all_results), f) - except Exception as e: - print(f"Exception in playing {tag}: {e}") - print(f"Exception in playing {tag}: {e}", file=sys.stderr) - traceback.print_exc() - traceback.print_exc(file=sys.stderr) - - -def fmt_score(score): - return f"{'B' if score >= 0 else 'W'}+{abs(score):.1f}" - - -print(len(ais_to_test), "ais to test") -global_start = time.time() - -with ThreadPoolExecutor(max_workers=16) as threadpool: - for b in ais_to_test: - for w in ais_to_test: - if b is not w: - threadpool.submit(play_games, b, w) - -print("POOL EXIT") - -print("---- RESULTS ----") -for k, v in results.items(): - b_win = sum([s > 0.3 for s in v]) - w_win = sum([s < -0.3 for s in v]) - print(f"{b_win} {k} {w_win} : {list(map(fmt_score,v))}") - -print("---- ELO ----") -for ai in sorted(ai_database, key=lambda a: -a.elo_comp.rating): - wins = [(b, w, s) for (b, w, s) in all_results if s > 0.3 and b == ai.name or w == ai.name and s < -0.3] - losses = [(b, w, s) for (b, w, s) in all_results if s < -0.3 and b == ai.name or w == ai.name and s > -0.3] - draws = [(b, w, s) for (b, w, s) in all_results if -0.3 <= s <= 0.3 and (b == ai.name or w == ai.name)] - out = f"{'*' if ai in ais_to_test else ' '} {ai.name}: ELO {ai.elo_comp.rating:.1f} WINS {len(wins)} LOSSES {len(losses)} DRAWS {len(draws)}" - # print("Wins:",wins) - print(out) - print(out, file=sys.stderr) - -with open(DB_FILENAME, "wb") as f: - pickle.dump((ai_database, all_results), f) - -print(f"Done! saving {len(all_results)} to pickle", file=sys.stderr) -print(f"Time taken {time.time()-global_start:.1f}s", file=sys.stderr)