From 73c06bf0a51bc73ab51f060213995abfe872f136 Mon Sep 17 00:00:00 2001 From: YellowRoseCx <80486540+YellowRoseCx@users.noreply.github.com> Date: Thu, 15 Jun 2023 16:02:20 -0500 Subject: [PATCH 1/7] add adventuremode stopper adds a stopper token for adventure mode when it detects the bot generating impersonating text after " > You" --- modeling/stoppers.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/modeling/stoppers.py b/modeling/stoppers.py index 94c09e85..0fc6ce10 100644 --- a/modeling/stoppers.py +++ b/modeling/stoppers.py @@ -116,6 +116,28 @@ class Stoppers: return True return False + def adventure_mode_stopper( + model: InferenceModel, + input_ids: torch.LongTensor, + ) -> bool: + if not utils.koboldai_vars.adventure: + return False + + data = [model.tokenizer.decode(x) for x in input_ids] + # null_character = model.tokenizer.encode(chr(0))[0] + if "completed" not in model.gen_state: + model.gen_state["completed"] = [False] * len(input_ids) + + for i in range(len(input_ids)): + if (data[i][-6:] == " > You"): + model.gen_state["completed"][i] = True + + if all(model.gen_state["completed"]): + utils.koboldai_vars.generated_tkns = utils.koboldai_vars.genamt + del model.gen_state["completed"] + return True + return False + @staticmethod def stop_sequence_stopper( model: InferenceModel, From 877028ec7f2125cd6d550d5a913ca6b602ddad69 Mon Sep 17 00:00:00 2001 From: YellowRoseCx <80486540+YellowRoseCx@users.noreply.github.com> Date: Thu, 15 Jun 2023 16:07:54 -0500 Subject: [PATCH 2/7] Update hf_torch.py with adv mode stopper --- modeling/inference_models/hf_torch.py | 1 + 1 file changed, 1 insertion(+) diff --git a/modeling/inference_models/hf_torch.py b/modeling/inference_models/hf_torch.py index 2f575e73..10fd3cb6 100644 --- a/modeling/inference_models/hf_torch.py +++ b/modeling/inference_models/hf_torch.py @@ -69,6 +69,7 @@ class HFTorchInferenceModel(HFInferenceModel): Stoppers.dynamic_wi_scanner, Stoppers.singleline_stopper, Stoppers.chat_mode_stopper, + Stoppers.adventure_mode_stopper, Stoppers.stop_sequence_stopper, ] From 83493dff2e7d76fad008dad3cfe8b6c400134d34 Mon Sep 17 00:00:00 2001 From: YellowRoseCx <80486540+YellowRoseCx@users.noreply.github.com> Date: Thu, 15 Jun 2023 17:15:33 -0500 Subject: [PATCH 3/7] modify adv stopper --- modeling/stoppers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modeling/stoppers.py b/modeling/stoppers.py index 0fc6ce10..8fe5c229 100644 --- a/modeling/stoppers.py +++ b/modeling/stoppers.py @@ -129,7 +129,7 @@ class Stoppers: model.gen_state["completed"] = [False] * len(input_ids) for i in range(len(input_ids)): - if (data[i][-6:] == " > You"): + if (data[i][-6:] == "> You " or data[i][-4:] == "You:"): model.gen_state["completed"][i] = True if all(model.gen_state["completed"]): From 8b742b2bd4e346e6ec45d4642a6af374402697ad Mon Sep 17 00:00:00 2001 From: YellowRoseCx <80486540+YellowRoseCx@users.noreply.github.com> Date: Thu, 15 Jun 2023 17:20:38 -0500 Subject: [PATCH 4/7] add missing @staticmethod --- modeling/stoppers.py | 1 + 1 file changed, 1 insertion(+) diff --git a/modeling/stoppers.py b/modeling/stoppers.py index 8fe5c229..d9f212dd 100644 --- a/modeling/stoppers.py +++ b/modeling/stoppers.py @@ -116,6 +116,7 @@ class Stoppers: return True return False + @staticmethod def adventure_mode_stopper( model: InferenceModel, input_ids: torch.LongTensor, From 91d543bf5a41fda8dfd5d166b47f36bf5e420cb1 Mon Sep 17 00:00:00 2001 From: YellowRoseCx <80486540+YellowRoseCx@users.noreply.github.com> Date: Thu, 29 Jun 2023 02:34:08 -0500 Subject: [PATCH 5/7] Update stoppers.py --- modeling/stoppers.py | 33 ++++++++++----------------------- 1 file changed, 10 insertions(+), 23 deletions(-) diff --git a/modeling/stoppers.py b/modeling/stoppers.py index d9f212dd..e36eb522 100644 --- a/modeling/stoppers.py +++ b/modeling/stoppers.py @@ -116,28 +116,6 @@ class Stoppers: return True return False - @staticmethod - def adventure_mode_stopper( - model: InferenceModel, - input_ids: torch.LongTensor, - ) -> bool: - if not utils.koboldai_vars.adventure: - return False - - data = [model.tokenizer.decode(x) for x in input_ids] - # null_character = model.tokenizer.encode(chr(0))[0] - if "completed" not in model.gen_state: - model.gen_state["completed"] = [False] * len(input_ids) - - for i in range(len(input_ids)): - if (data[i][-6:] == "> You " or data[i][-4:] == "You:"): - model.gen_state["completed"][i] = True - - if all(model.gen_state["completed"]): - utils.koboldai_vars.generated_tkns = utils.koboldai_vars.genamt - del model.gen_state["completed"] - return True - return False @staticmethod def stop_sequence_stopper( @@ -149,7 +127,12 @@ class Stoppers: # null_character = model.tokenizer.encode(chr(0))[0] if "completed" not in model.gen_state: model.gen_state["completed"] = [False] * len(input_ids) - + if utils.koboldai_vars.adventure: + extra_options = ["> You", "You:", "\n\n You", "\n\nYou", ". You"] + for option in extra_options: + if option not in utils.koboldai_vars.stop_sequence: + utils.koboldai_vars.stop_sequence.append(option) + #one issue is that the stop sequence may not actual align with the end of token #if its a subsection of a longer token for stopper in utils.koboldai_vars.stop_sequence: @@ -163,6 +146,10 @@ class Stoppers: if all(model.gen_state["completed"]): utils.koboldai_vars.generated_tkns = utils.koboldai_vars.genamt del model.gen_state["completed"] + if utils.koboldai_vars.adventure: # Remove added adventure mode stop sequences + for option in extra_options: + if option in utils.koboldai_vars.stop_sequence: + utils.koboldai_vars.stop_sequence.remove(option) return True return False From 6e6c4ee5d4346e874265d63db9d154ddda9843bb Mon Sep 17 00:00:00 2001 From: YellowRoseCx <80486540+YellowRoseCx@users.noreply.github.com> Date: Thu, 29 Jun 2023 02:34:57 -0500 Subject: [PATCH 6/7] Update hf_torch.py --- modeling/inference_models/hf_torch.py | 1 - 1 file changed, 1 deletion(-) diff --git a/modeling/inference_models/hf_torch.py b/modeling/inference_models/hf_torch.py index 10fd3cb6..2f575e73 100644 --- a/modeling/inference_models/hf_torch.py +++ b/modeling/inference_models/hf_torch.py @@ -69,7 +69,6 @@ class HFTorchInferenceModel(HFInferenceModel): Stoppers.dynamic_wi_scanner, Stoppers.singleline_stopper, Stoppers.chat_mode_stopper, - Stoppers.adventure_mode_stopper, Stoppers.stop_sequence_stopper, ] From 13405d836e5cd092cdb2db8aec03e3b577d3d969 Mon Sep 17 00:00:00 2001 From: YellowRoseCx <80486540+YellowRoseCx@users.noreply.github.com> Date: Thu, 29 Jun 2023 02:39:50 -0500 Subject: [PATCH 7/7] Update stoppers.py --- modeling/stoppers.py | 1 - 1 file changed, 1 deletion(-) diff --git a/modeling/stoppers.py b/modeling/stoppers.py index e36eb522..3f277f48 100644 --- a/modeling/stoppers.py +++ b/modeling/stoppers.py @@ -116,7 +116,6 @@ class Stoppers: return True return False - @staticmethod def stop_sequence_stopper( model: InferenceModel,