Merge pull request #3094 from AlpinDale/top-nsigma feat: add top nsigma sampler support

0791f5bbae4e4858325ea536adfef5d1b00a41e5

Cohee <18619528+Cohee1207@users.noreply.github.com>

Signed
3 files changed, +17 -0Showing whitespace changes
public/index.html+8 -0
@@ -1291,6 +1291,14 @@
12911291 <input class="neo-range-slider" type="range" id="epsilon_cutoff_textgenerationwebui" name="volume" min="0" max="9" step="0.01">
12921292 <input class="neo-range-input" type="number" min="0" max="9" step="0.01" data-for="epsilon_cutoff_textgenerationwebui" id="epsilon_cutoff_counter_textgenerationwebui">
12931293 </div>
1294+ <div data-tg-type="aphrodite" class="alignitemscenter flex-container flexFlowColumn flexBasis30p flexGrow flexShrink gap0">
1295+ <small>
1296+ <span data-i18n="Top nsigma">Top nsigma</span>
1297+ <div class="fa-solid fa-circle-info opacity50p" title="A sampling method that filters logits based on their statistical properties. It keeps tokens within n standard deviations of the maximum logit value, providing a simpler alternative to top-p/top-k sampling while maintaining sampling stability across different temperatures."></div>
1298+ </small>
1299+ <input class="neo-range-slider" type="range" id="nsigma_textgenerationwebui" name="volume" min="0" max="5" step="0.01">
1300+ <input class="neo-range-input" type="number" min="0" max="5" step="0.01" data-for="nsigma_textgenerationwebui" id="nsigma_counter_textgenerationwebui">
1301+ </div>
12941302 <div data-tg-type="ooba,mancer,aphrodite" class="alignitemscenter flex-container flexFlowColumn flexBasis30p flexGrow flexShrink gap0">
12951303 <small>
12961304 <span data-i18n="Eta Cutoff">Eta Cutoff</span>
public/scripts/power-user.js+5 -0
@@ -642,6 +642,10 @@ async function CreateZenSliders(elmnt) {
642642 numSteps = 50;
643643 decimals = 1;
644644 }
645+ if (sliderID == 'nsigma') {
646+ numSteps = 50;
647+ decimals = 1;
648+ }
645649 //customize steps
646650 if (sliderID == 'mirostat_mode_textgenerationwebui' ||
647651 sliderID == 'mirostat_mode_kobold') {
@@ -686,6 +690,7 @@ async function CreateZenSliders(elmnt) {
686690 sliderID == 'penalty_alpha_textgenerationwebui' ||
687691 sliderID == 'length_penalty_textgenerationwebui' ||
688692 sliderID == 'epsilon_cutoff_textgenerationwebui' ||
693+ sliderID == 'nsigma' ||
689694 sliderID == 'rep_pen_range' ||
690695 sliderID == 'eta_cutoff_textgenerationwebui' ||
691696 sliderID == 'top_a_textgenerationwebui' ||
public/scripts/textgen-settings.js+4 -0
@@ -193,6 +193,7 @@ const settings = {
193193 openrouter_allow_fallbacks: true,
194194 xtc_threshold: 0.1,
195195 xtc_probability: 0,
196+ nsigma: 0.0,
196197 featherless_model: '',
197198};
198199
@@ -265,6 +266,7 @@ export const setting_names = [
265266 'openrouter_allow_fallbacks',
266267 'xtc_threshold',
267268 'xtc_probability',
269+ 'nsigma',
268270];
269271
270272const DYNATEMP_BLOCK = document.getElementById('dynatemp_block_ooba');
@@ -1186,6 +1188,7 @@ export function getTextGenGenerationData(finalPrompt, maxTokens, isImpersonate,
11861188 'sampler_order': settings.type === textgen_types.KOBOLDCPP ? settings.sampler_order : undefined,
11871189 'xtc_threshold': settings.xtc_threshold,
11881190 'xtc_probability': settings.xtc_probability,
1191+ 'nsigma': settings.nsigma,
11891192 };
11901193 const nonAphroditeParams = {
11911194 'rep_pen': settings.rep_pen,
@@ -1253,6 +1256,7 @@ export function getTextGenGenerationData(finalPrompt, maxTokens, isImpersonate,
12531256 'dynatemp_exponent': dynatemp ? settings.dynatemp_exponent : undefined,
12541257 'xtc_threshold': settings.xtc_threshold,
12551258 'xtc_probability': settings.xtc_probability,
1259+ 'nsigma': settings.nsigma,
12561260 'custom_token_bans': toIntArray(banned_tokens),
12571261 };
12581262