diff --git a/aiserver.py b/aiserver.py index 47932121..51ff1326 100644 --- a/aiserver.py +++ b/aiserver.py @@ -2306,7 +2306,7 @@ def patch_transformers(): option = koboldai_vars.actions.actions[koboldai_vars.actions.action_count+1]['Options'][x] if option['Pinned'] or option["Previous Selection"] or option["Edited"]: option_offset = x+1 - batch_offset = int((koboldai_vars.generated_tkns-1) / koboldai_vars.genamt) if koboldai_vars.alt_multi_gen and koboldai_vars.experimental_features else 0 + batch_offset = int((koboldai_vars.generated_tkns-1) / koboldai_vars.genamt) if koboldai_vars.alt_multi_gen else 0 for batch_index, batch in enumerate(scores): probs = F.softmax(batch, dim = -1).cpu().numpy() @@ -2489,7 +2489,7 @@ def patch_transformers(): self.halt = not koboldai_vars.lua_koboldbridge.generating koboldai_vars.lua_koboldbridge.regeneration_required = False - for i in range(koboldai_vars.numseqs) if not (koboldai_vars.alt_multi_gen and koboldai_vars.experimental_features) else range(1): + for i in range(koboldai_vars.numseqs) if not koboldai_vars.alt_multi_gen else range(1): koboldai_vars.lua_koboldbridge.generated[i+1][koboldai_vars.generated_tkns] = int(input_ids[i, -1].item()) return self.regeneration_required or self.halt @@ -4612,6 +4612,14 @@ def get_message(msg): koboldai_vars.show_probs = msg['data'] settingschanged() refresh_settings() + elif(msg['cmd'] == 'alttextgen'): + koboldai_vars.alt_gen = msg['data'] + settingschanged() + refresh_settings() + elif(msg['cmd'] == 'alt_multi_gen'): + koboldai_vars.alt_multi_gen = msg['data'] + settingschanged() + refresh_settings() elif(not koboldai_vars.host and msg['cmd'] == 'importwi'): wiimportrequest() elif(msg['cmd'] == 'debug'): @@ -5403,7 +5411,7 @@ def core_generate(text: list, _min: int, _max: int, found_entries: set, is_core: numseqs = koboldai_vars.numseqs total_gens = None - for i in range(koboldai_vars.numseqs if koboldai_vars.alt_multi_gen and koboldai_vars.experimental_features else 1): + for i in range(koboldai_vars.numseqs if koboldai_vars.alt_multi_gen else 1): while True: # The reason this is a loop is due to how Dynamic WI works. We # cannot simply add the WI to the context mid-generation, so we @@ -5416,7 +5424,7 @@ def core_generate(text: list, _min: int, _max: int, found_entries: set, is_core: max_new=koboldai_vars.genamt, do_streaming=koboldai_vars.output_streaming, do_dynamic_wi=koboldai_vars.dynamicscan, - batch_count=numseqs if not (koboldai_vars.alt_multi_gen and koboldai_vars.experimental_features) else 1, + batch_count=numseqs if not koboldai_vars.alt_multi_gen else 1, # Real max length is handled by CoreStopper. bypass_hf_maxlength=koboldai_vars.dynamicscan, is_core=True, @@ -5428,7 +5436,7 @@ def core_generate(text: list, _min: int, _max: int, found_entries: set, is_core: already_generated += len(genout[0]) try: - assert already_generated <= koboldai_vars.genamt * koboldai_vars.numseqs if koboldai_vars.alt_multi_gen and koboldai_vars.experimental_features else 1 + assert already_generated <= koboldai_vars.genamt * koboldai_vars.numseqs if koboldai_vars.alt_multi_gen else 1 except AssertionError: print("AlreadyGenerated", already_generated) print("genamt", koboldai_vars.genamt) @@ -6533,7 +6541,10 @@ def refresh_settings(): socketio.emit('from_server', {'cmd': 'updatefrmtadsnsp', 'data': koboldai_vars.frmtadsnsp}, broadcast=True, room="UI_1") socketio.emit('from_server', {'cmd': 'updatesingleline', 'data': koboldai_vars.singleline}, broadcast=True, room="UI_1") socketio.emit('from_server', {'cmd': 'updateoutputstreaming', 'data': koboldai_vars.output_streaming}, broadcast=True, room="UI_1") + socketio.emit('from_server', {'cmd': 'updateshowbudget', 'data': koboldai_vars.show_budget}, broadcast=True, room="UI_1") socketio.emit('from_server', {'cmd': 'updateshowprobs', 'data': koboldai_vars.show_probs}, broadcast=True, room="UI_1") + socketio.emit('from_server', {'cmd': 'updatealt_text_gen', 'data': koboldai_vars.alt_gen}, broadcast=True, room="UI_1") + socketio.emit('from_server', {'cmd': 'updatealt_multi_gen', 'data': koboldai_vars.alt_multi_gen}, broadcast=True, room="UI_1") # Allow toggle events again socketio.emit('from_server', {'cmd': 'allowtoggle', 'data': True}, broadcast=True, room="UI_1") diff --git a/gensettings.py b/gensettings.py index a816bdca..1e6f94fa 100644 --- a/gensettings.py +++ b/gensettings.py @@ -414,7 +414,6 @@ gensettingstf = [ "ui_level": 2 }, { - "UI_V2_Only": True, "uitype": "toggle", "unit": "bool", "label": "Alt Multi Gen", diff --git a/koboldai_settings.py b/koboldai_settings.py index c011eb30..9aca0a21 100644 --- a/koboldai_settings.py +++ b/koboldai_settings.py @@ -780,13 +780,13 @@ class model_settings(settings): #Setup TQDP for token generation elif name == "generated_tkns" and 'tqdm' in self.__dict__: if value == 0: - self.tqdm.reset(total=self.genamt * (self.numseqs if self.alt_multi_gen and self.koboldai_vars.experimental_features else 1) ) + self.tqdm.reset(total=self.genamt * (self.numseqs if self.alt_multi_gen else 1) ) self.tqdm_progress = 0 else: self.tqdm.update(value-self.tqdm.n) - self.tqdm_progress = int(float(self.generated_tkns)/float(self.genamt * (self.numseqs if self.alt_multi_gen and self.koboldai_vars.experimental_features else 1))*100) + self.tqdm_progress = int(float(self.generated_tkns)/float(self.genamt * (self.numseqs if self.alt_multi_gen else 1))*100) if self.tqdm.format_dict['rate'] is not None: - self.tqdm_rem_time = str(datetime.timedelta(seconds=int(float((self.genamt * (self.numseqs if self.alt_multi_gen and self.koboldai_vars.experimental_features else 1))-self.generated_tkns)/self.tqdm.format_dict['rate']))) + self.tqdm_rem_time = str(datetime.timedelta(seconds=int(float((self.genamt * (self.numseqs if self.alt_multi_gen else 1))-self.generated_tkns)/self.tqdm.format_dict['rate']))) #Setup TQDP for model loading elif name == "loaded_layers" and 'tqdm' in self.__dict__: if value == 0: @@ -1791,8 +1791,8 @@ class KoboldStoryRegister(object): self.story_settings.gamesaved = False def stream_tokens(self, text_list): - if len(text_list) > 1 or (self.koboldai_vars.alt_multi_gen and self.koboldai_vars.experimental_features and self.koboldai_vars.numseqs > 1): - if self.koboldai_vars.alt_multi_gen and self.koboldai_vars.experimental_features: + if len(text_list) > 1 or (self.koboldai_vars.alt_multi_gen and self.koboldai_vars.numseqs > 1): + if self.koboldai_vars.alt_multi_gen: #since alt_multi_gen is really just several single gens the text list is always 1 deep, so we need some #other way to figure out wich spot in our options list we're on. We'll figure it out by seeing how many #tokens we generated vs how many each option should take diff --git a/static/application.js b/static/application.js index f2ebb075..b7cf1b4a 100644 --- a/static/application.js +++ b/static/application.js @@ -2735,6 +2735,10 @@ $(document).ready(function(){ } else { token_prob_menu.addClass("hidden"); } + } else if(msg.cmd == "updatealt_text_gen") { + $("#alttextgen").prop('checked', msg.data).change(); + } else if(msg.cmd == "updatealt_multi_gen") { + $("#alt_multi_gen").prop('checked', msg.data).change(); } else if(msg.cmd == "allowtoggle") { // Allow toggle change states to propagate allowtoggle = msg.data;