From a245a81a6f36d06facad15e7866e2c889996e2af Mon Sep 17 00:00:00 2001 From: Concedo Date: Sat, 13 Jul 2024 00:50:36 +0800 Subject: [PATCH] dry sampler features --- index.html | 124 +++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 101 insertions(+), 23 deletions(-) diff --git a/index.html b/index.html index ed4c1bd..d7ccd7b 100644 --- a/index.html +++ b/index.html @@ -1126,7 +1126,7 @@ } .settingcell { - padding: 4px; + padding: 3px; width: 100%; } @@ -4121,6 +4121,10 @@ miro_type: 0, miro_tau: 5.0, miro_eta: 0.1, + dry_multiplier: 0.0, + dry_base: 1.75, + dry_allowed_length: 2, + dry_sequence_breakers: ["\n", ":", "\"", "*"], sampler_order: [6, 0, 1, 3, 4, 2, 5], }; @@ -5141,6 +5145,10 @@ { return (custom_kobold_endpoint!="" && koboldcpp_version && koboldcpp_version!="" && compare_version_str(koboldcpp_version, "1.66") >= 0 && koboldcpp_has_whisper); } + function is_using_kcpp_with_dry() + { + return (custom_kobold_endpoint!="" && koboldcpp_version && koboldcpp_version!="" && compare_version_str(koboldcpp_version, "1.70") >= 0); + } //0 is none, 1 is pseudostreaming, 2 is true poll-streaming, 3 is sse-streaming @@ -7470,6 +7478,17 @@ },false,true); } + var pendingsequencebreakers = []; + function setDryBreakers() + { + let breakersString = pendingsequencebreakers.map((x) => x.replace("\n", "\\n")).join("\n") + inputBox("Enter each sequence breaker on a separate line.\nUse \\n for a newline token.\n","Set DRY Sequence Breakers",breakersString,"",()=>{ + let userinput = getInputBoxValue(); + pendingsequencebreakers = userinput.split("\n").filter(Boolean).map((x) => x.replace("\\n", "\n")); + console.log("Sequence breakers: " + pendingsequencebreakers.map((x) => x.replace("\n", "\\n"))); + },false,true); + } + function expand_tokens_section(targetid) { let tablist = ["expandregexreplace","expandtokenbans","expandlogitbias","expandplaceholdertags"]; @@ -9139,6 +9158,9 @@ document.getElementById("miro_type").value = localsettings.miro_type; document.getElementById("miro_tau").value = localsettings.miro_tau; document.getElementById("miro_eta").value = localsettings.miro_eta; + document.getElementById("dry_multiplier").value = localsettings.dry_multiplier; + document.getElementById("dry_base").value = localsettings.dry_base; + document.getElementById("dry_allowed_length").value = localsettings.dry_allowed_length; if(is_using_kcpp_with_mirostat()) { @@ -9151,6 +9173,18 @@ document.getElementById("mirounsupporteddiv").classList.remove("hidden"); } + if(is_using_kcpp_with_dry()) + { + document.getElementById("drysupporteddiv").classList.remove("hidden"); + document.getElementById("dryunsupporteddiv").classList.add("hidden"); + } + else + { + document.getElementById("drysupporteddiv").classList.add("hidden"); + document.getElementById("dryunsupporteddiv").classList.remove("hidden"); + } + pendingsequencebreakers = localsettings.dry_sequence_breakers; + document.getElementById("setgrammar").disabled = !is_using_kcpp_with_grammar(); document.getElementById("voice_typing_mode").disabled = !is_using_kcpp_with_whisper(); document.getElementById("grammar_retain_state").disabled = document.getElementById("setgrammar").disabled; @@ -9283,6 +9317,7 @@ document.getElementById("typ_s").value = found.typical; document.getElementById("tfs_s").value = found.tfs; document.getElementById("miro_type").value = 0; + document.getElementById("dry_multiplier").value = 0; document.getElementById("rep_pen").value = document.getElementById("rep_pen_slide").value = found.rep_pen; document.getElementById("rep_pen_range").value = found.rep_pen_range; document.getElementById("rep_pen_slope").value = found.rep_pen_slope; @@ -9505,6 +9540,10 @@ localsettings.miro_type = document.getElementById("miro_type").value; localsettings.miro_tau = document.getElementById("miro_tau").value; localsettings.miro_eta = document.getElementById("miro_eta").value; + localsettings.dry_multiplier = document.getElementById("dry_multiplier").value; + localsettings.dry_base = document.getElementById("dry_base").value; + localsettings.dry_allowed_length = document.getElementById("dry_allowed_length").value; + localsettings.dry_sequence_breakers = pendingsequencebreakers; localsettings.speech_synth = document.getElementById("ttsselect").value; localsettings.xtts_voice = document.getElementById("xtts_voices").value; @@ -9586,6 +9625,9 @@ localsettings.miro_type = cleannum(localsettings.miro_type, 0, 2); localsettings.miro_tau = cleannum(localsettings.miro_tau, 0, 30); localsettings.miro_eta = cleannum(localsettings.miro_eta, 0, 10); + localsettings.dry_multiplier = cleannum(localsettings.dry_multiplier, 0.0, 100.0); + localsettings.dry_base = cleannum(localsettings.dry_base, 0.0, 8.0); + localsettings.dry_allowed_length = cleannum(Math.floor(localsettings.dry_allowed_length), 0, 100); localsettings.sampler_seed = cleannum(localsettings.sampler_seed, -1, 999999); toggle_invert_colors(); @@ -11582,6 +11624,13 @@ submit_payload.params.banned_tokens = get_token_bans(); submit_payload.params.render_special = localsettings.render_special_tags; } + if((custom_kobold_endpoint != "" && is_using_kcpp_with_dry())) + { + submit_payload.params.dry_multiplier = localsettings.dry_multiplier; + submit_payload.params.dry_base = localsettings.dry_base; + submit_payload.params.dry_allowed_length = localsettings.dry_allowed_length; + submit_payload.params.dry_sequence_breakers = JSON.parse(JSON.stringify(localsettings.dry_sequence_breakers)); + } //presence pen and logit bias for OAI and newer kcpp if((custom_kobold_endpoint != "" && is_using_kcpp_with_mirostat()) || custom_oai_endpoint!="") { @@ -17281,6 +17330,26 @@ + +
+
+
EOS Token Ban ?Allow the End-Of-Stream (EOS) token and potentially other restricted special tokens to be generated.
+ +
+
+
Sampler Order ? + The order by which all 7 samplers are applied, separated by commas. 0=top_k, 1=top_a, 2=top_p, 3=tfs, 4=typ, 5=temp, 6=rep_pen
+
+
+
+
+
Mirostat ? @@ -17311,38 +17380,47 @@
Mirostat Not Supported
+ +
+
DRY (If supported) ?An advanced multi-token repetition penalty. May not be available depending on backend, not supported on Horde.
+
+
+
+
Mult.
+
+
+
+
+
Base
+
+
+
+
+
A.Len
+
+
+
+
+ +
+
DRY Not Supported
+
+ +
Grammar ? Grammar Sampling (KCPP) - Allows you to constrain output to fit specific structures. Resets grammar state every generation unless Retain is checked.
-
+
+
Retain
- + +
-
-
Smp.Order ? - The order by which all 7 samplers are applied, separated by commas. 0=top_k, 1=top_a, 2=top_p, 3=tfs, 4=typ, 5=temp, 6=rep_pen
-
-
-
-
-
- -
-
-
EOS Token Ban ?Allow the End-Of-Stream (EOS) token and potentially other restricted special tokens to be generated.
-
-