Merge pull request #3132 from AlpinDale/sampler_order aphrodite: sampler order block
Signed| @@ -1774,6 +1774,35 @@ | |||
| 1774 | <span data-i18n="Load default order">Load default order</span> | 1774 | <span data-i18n="Load default order">Load default order</span> |
| 1775 | </div> | 1775 | </div> |
| 1776 | </div> | 1776 | </div> |
| 1777 | <div id="sampler_priority_block_aphrodite" data-tg-type="aphrodite" class="range-block flexFlowColumn wide100p"> | ||
| 1778 | <hr class="wide100p"> | ||
| 1779 | <h4 class="range-block-title justifyCenter"> | ||
| 1780 | <span data-i18n="Sampler Order">Sampler Order</span> | ||
| 1781 | <div class="margin5 fa-solid fa-circle-info opacity50p" title="Aphrodite only. Determines the order of samplers. Skew is always applied post-softmax, so it's not included here." data-i18n="[title]Aphrodite only. Determines the order of samplers. Skew is always applied post-softmax, so it's not included here."></div> | ||
| 1782 | </h4> | ||
| 1783 | <div class="toggle-description widthUnset" data-i18n="Aphrodite only. Determines the order of samplers."> | ||
| 1784 | Aphrodite only. Determines the order of samplers. | ||
| 1785 | </div> | ||
| 1786 | <div id="sampler_priority_container_aphrodite" class="prompt_order"> | ||
| 1787 | <div data-name="dry" draggable="true"><span>DRY</span><small></small></div> | ||
| 1788 | <div data-name="penalties" draggable="true"><span>Penalties</span><small></small></div> | ||
| 1789 | <div data-name="no_repeat_ngram" draggable="true"><span>No Repeat Ngram</span><small></small></div> | ||
| 1790 | <div data-name="temperature" draggable="true"><span>Dynatemp & Temperature</span><small></small></div> | ||
| 1791 | <div data-name="top_nsigma" draggable="true"><span>Top Nsigma</span><small></small></div> | ||
| 1792 | <div data-name="top_p_top_k" draggable="true"><span>Top P & Top K</span><small></small></div> | ||
| 1793 | <div data-name="top_a" draggable="true"><span>Top A</span><small></small></div> | ||
| 1794 | <div data-name="min_p" draggable="true"><span>Min P</span><small></small></div> | ||
| 1795 | <div data-name="tfs" draggable="true"><span>Tail-Free Sampling</span><small></small></div> | ||
| 1796 | <div data-name="eta_cutoff" draggable="true"><span>Eta Cutoff</span><small></small></div> | ||
| 1797 | <div data-name="epsilon_cutoff" draggable="true"><span>Epsilon Cutoff</span><small></small></div> | ||
| 1798 | <div data-name="typical_p" draggable="true"><span>Typical P</span><small></small></div> | ||
| 1799 | <div data-name="quadratic" draggable="true"><span>Cubic and Quadratic Sampling</span><small></small></div> | ||
| 1800 | <div data-name="xtc" draggable="true"><span>XTC</span><small></small></div> | ||
| 1801 | </div> | ||
| 1802 | <div id="aphrodite_default_order" class="menu_button menu_button_icon"> | ||
| 1803 | <span data-i18n="Load default order">Load default order</span> | ||
| 1804 | </div> | ||
| 1805 | </div> | ||
| 1777 | </div> | 1806 | </div> |
| 1778 | </div><!-- end of textgen settings--> | 1807 | </div><!-- end of textgen settings--> |
| 1779 | <div id="openai_settings"> | 1808 | <div id="openai_settings"> |
| @@ -129,6 +129,10 @@ function setSamplerListListeners() { | |||
| 129 | relatedDOMElement = $('#sampler_priority_block_ooba'); | 129 | relatedDOMElement = $('#sampler_priority_block_ooba'); |
| 130 | } | 130 | } |
| 131 | 131 | ||
| 132 | if (samplerName === 'samplers_priorities') { //this is for aphrodite's sampler priority | ||
| 133 | relatedDOMElement = $('#sampler_priority_block_aphrodite'); | ||
| 134 | } | ||
| 135 | |||
| 132 | if (samplerName === 'penalty_alpha') { //contrastive search only has one sampler, does it need its own block? | 136 | if (samplerName === 'penalty_alpha') { //contrastive search only has one sampler, does it need its own block? |
| 133 | relatedDOMElement = $('#contrastiveSearchBlock'); | 137 | relatedDOMElement = $('#contrastiveSearchBlock'); |
| 134 | } | 138 | } |
| @@ -237,6 +241,11 @@ async function listSamplers(main_api, arrayOnly = false) { | |||
| 237 | displayname = 'Ooba Sampler Priority Block'; | 241 | displayname = 'Ooba Sampler Priority Block'; |
| 238 | } | 242 | } |
| 239 | 243 | ||
| 244 | if (sampler === 'samplers_priorities') { //this is for aphrodite's sampler priority | ||
| 245 | targetDOMelement = $('#sampler_priority_block_aphrodite'); | ||
| 246 | displayname = 'Aphrodite Sampler Priority Block'; | ||
| 247 | } | ||
| 248 | |||
| 240 | if (sampler === 'penalty_alpha') { //contrastive search only has one sampler, does it need its own block? | 249 | if (sampler === 'penalty_alpha') { //contrastive search only has one sampler, does it need its own block? |
| 241 | targetDOMelement = $('#contrastiveSearchBlock'); | 250 | targetDOMelement = $('#contrastiveSearchBlock'); |
| 242 | displayname = 'Contrast Search Block'; | 251 | displayname = 'Contrast Search Block'; |
| @@ -373,6 +382,10 @@ export async function validateDisabledSamplers(redraw = false) { | |||
| 373 | relatedDOMElement = $('#sampler_priority_block_ooba'); | 382 | relatedDOMElement = $('#sampler_priority_block_ooba'); |
| 374 | } | 383 | } |
| 375 | 384 | ||
| 385 | if (sampler === 'samplers_priorities') { //this is for aphrodite's sampler priority | ||
| 386 | relatedDOMElement = $('#sampler_priority_block_aphrodite'); | ||
| 387 | } | ||
| 388 | |||
| 376 | if (sampler === 'dry_multiplier') { | 389 | if (sampler === 'dry_multiplier') { |
| 377 | relatedDOMElement = $('#dryBlock'); | 390 | relatedDOMElement = $('#dryBlock'); |
| 378 | targetDisplayType = 'block'; | 391 | targetDisplayType = 'block'; |
| @@ -82,6 +82,22 @@ const OOBA_DEFAULT_ORDER = [ | |||
| 82 | 'encoder_repetition_penalty', | 82 | 'encoder_repetition_penalty', |
| 83 | 'no_repeat_ngram', | 83 | 'no_repeat_ngram', |
| 84 | ]; | 84 | ]; |
| 85 | const APHRODITE_DEFAULT_ORDER = [ | ||
| 86 | 'dry', | ||
| 87 | 'penalties', | ||
| 88 | 'no_repeat_ngram', | ||
| 89 | 'temperature', | ||
| 90 | 'top_nsigma', | ||
| 91 | 'top_p_top_k', | ||
| 92 | 'top_a', | ||
| 93 | 'min_p', | ||
| 94 | 'tfs', | ||
| 95 | 'eta_cutoff', | ||
| 96 | 'epsilon_cutoff', | ||
| 97 | 'typical_p', | ||
| 98 | 'quadratic', | ||
| 99 | 'xtc', | ||
| 100 | ]; | ||
| 85 | const BIAS_KEY = '#textgenerationwebui_api-settings'; | 101 | const BIAS_KEY = '#textgenerationwebui_api-settings'; |
| 86 | 102 | ||
| 87 | // Maybe let it be configurable in the future? | 103 | // Maybe let it be configurable in the future? |
| @@ -163,6 +179,7 @@ const settings = { | |||
| 163 | banned_tokens: '', | 179 | banned_tokens: '', |
| 164 | sampler_priority: OOBA_DEFAULT_ORDER, | 180 | sampler_priority: OOBA_DEFAULT_ORDER, |
| 165 | samplers: LLAMACPP_DEFAULT_ORDER, | 181 | samplers: LLAMACPP_DEFAULT_ORDER, |
| 182 | samplers_priorities: APHRODITE_DEFAULT_ORDER, | ||
| 166 | ignore_eos_token: false, | 183 | ignore_eos_token: false, |
| 167 | spaces_between_special_tokens: true, | 184 | spaces_between_special_tokens: true, |
| 168 | speculative_ngram: false, | 185 | speculative_ngram: false, |
| @@ -256,6 +273,7 @@ export const setting_names = [ | |||
| 256 | 'sampler_order', | 273 | 'sampler_order', |
| 257 | 'sampler_priority', | 274 | 'sampler_priority', |
| 258 | 'samplers', | 275 | 'samplers', |
| 276 | 'samplers_priorities', | ||
| 259 | 'n', | 277 | 'n', |
| 260 | 'logit_bias', | 278 | 'logit_bias', |
| 261 | 'custom_model', | 279 | 'custom_model', |
| @@ -553,6 +571,20 @@ function sortOobaItemsByOrder(orderArray) { | |||
| 553 | }); | 571 | }); |
| 554 | } | 572 | } |
| 555 | 573 | ||
| 574 | /** | ||
| 575 | * Sorts the Aphrodite sampler items by the given order. | ||
| 576 | * @param {string[]} orderArray Sampler order array. | ||
| 577 | */ | ||
| 578 | function sortAphroditeItemsByOrder(orderArray) { | ||
| 579 | console.debug('Preset samplers order: ', orderArray); | ||
| 580 | const $container = $('#sampler_priority_container_aphrodite'); | ||
| 581 | |||
| 582 | orderArray.forEach((name) => { | ||
| 583 | const $item = $container.find(`[data-name="${name}"]`).detach(); | ||
| 584 | $container.append($item); | ||
| 585 | }); | ||
| 586 | } | ||
| 587 | |||
| 556 | jQuery(function () { | 588 | jQuery(function () { |
| 557 | $('#koboldcpp_order').sortable({ | 589 | $('#koboldcpp_order').sortable({ |
| 558 | delay: getSortableDelay(), | 590 | delay: getSortableDelay(), |
| @@ -606,6 +638,19 @@ jQuery(function () { | |||
| 606 | }, | 638 | }, |
| 607 | }); | 639 | }); |
| 608 | 640 | ||
| 641 | $('#sampler_priority_container_aphrodite').sortable({ | ||
| 642 | delay: getSortableDelay(), | ||
| 643 | stop: function () { | ||
| 644 | const order = []; | ||
| 645 | $('#sampler_priority_container_aphrodite').children().each(function () { | ||
| 646 | order.push($(this).data('name')); | ||
| 647 | }); | ||
| 648 | settings.samplers_priorities = order; | ||
| 649 | console.log('Samplers reordered:', settings.samplers_priorities); | ||
| 650 | saveSettingsDebounced(); | ||
| 651 | }, | ||
| 652 | }); | ||
| 653 | |||
| 609 | $('#tabby_json_schema').on('input', function () { | 654 | $('#tabby_json_schema').on('input', function () { |
| 610 | const json_schema_string = String($(this).val()); | 655 | const json_schema_string = String($(this).val()); |
| 611 | 656 | ||
| @@ -624,6 +669,13 @@ jQuery(function () { | |||
| 624 | saveSettingsDebounced(); | 669 | saveSettingsDebounced(); |
| 625 | }); | 670 | }); |
| 626 | 671 | ||
| 672 | $('#aphrodite_default_order').on('click', function () { | ||
| 673 | sortAphroditeItemsByOrder(APHRODITE_DEFAULT_ORDER); | ||
| 674 | settings.samplers_priorities = APHRODITE_DEFAULT_ORDER; | ||
| 675 | console.log('Default samplers order loaded:', settings.samplers_priorities); | ||
| 676 | saveSettingsDebounced(); | ||
| 677 | }); | ||
| 678 | |||
| 627 | $('#textgen_type').on('change', function () { | 679 | $('#textgen_type').on('change', function () { |
| 628 | const type = String($(this).val()); | 680 | const type = String($(this).val()); |
| 629 | settings.type = type; | 681 | settings.type = type; |
| @@ -832,6 +884,14 @@ function setSettingByName(setting, value, trigger) { | |||
| 832 | return; | 884 | return; |
| 833 | } | 885 | } |
| 834 | 886 | ||
| 887 | if ('samplers_priorities' === setting) { | ||
| 888 | value = Array.isArray(value) ? value : APHRODITE_DEFAULT_ORDER; | ||
| 889 | insertMissingArrayItems(APHRODITE_DEFAULT_ORDER, value); | ||
| 890 | sortAphroditeItemsByOrder(value); | ||
| 891 | settings.samplers_priorities = value; | ||
| 892 | return; | ||
| 893 | } | ||
| 894 | |||
| 835 | if ('samplers' === setting) { | 895 | if ('samplers' === setting) { |
| 836 | value = Array.isArray(value) ? value : LLAMACPP_DEFAULT_ORDER; | 896 | value = Array.isArray(value) ? value : LLAMACPP_DEFAULT_ORDER; |
| 837 | insertMissingArrayItems(LLAMACPP_DEFAULT_ORDER, value); | 897 | insertMissingArrayItems(LLAMACPP_DEFAULT_ORDER, value); |
| @@ -1256,6 +1316,7 @@ export function getTextGenGenerationData(finalPrompt, maxTokens, isImpersonate, | |||
| 1256 | 'nsigma': settings.nsigma, | 1316 | 'nsigma': settings.nsigma, |
| 1257 | 'custom_token_bans': toIntArray(banned_tokens), | 1317 | 'custom_token_bans': toIntArray(banned_tokens), |
| 1258 | 'no_repeat_ngram_size': settings.no_repeat_ngram_size, | 1318 | 'no_repeat_ngram_size': settings.no_repeat_ngram_size, |
| 1319 | 'sampler_priority': settings.type === APHRODITE ? settings.samplers_priorities : undefined, | ||
| 1259 | }; | 1320 | }; |
| 1260 | 1321 | ||
| 1261 | if (settings.type === OPENROUTER) { | 1322 | if (settings.type === OPENROUTER) { |