For Mancer:
- Allow logprobs (works) - Allow multiswipe (not yet) - Adjust visible samplers Fix: 0 logprob is 100% chance, handle accordingly.
This commit is contained in:
parent
76cde592ad
commit
6f7e7b85ab
|
@ -1167,7 +1167,7 @@
|
||||||
<div class="fa-solid fa-circle-info opacity50p" title="Set all samplers to their neutral/disabled state." data-i18n="[title]Set all samplers to their neutral/disabled state."></div>
|
<div class="fa-solid fa-circle-info opacity50p" title="Set all samplers to their neutral/disabled state." data-i18n="[title]Set all samplers to their neutral/disabled state."></div>
|
||||||
</small>
|
</small>
|
||||||
</div>
|
</div>
|
||||||
<div data-newbie-hidden data-tg-type="aphrodite" class="flex-container flexFlowColumn alignitemscenter flexBasis100p flexGrow flexShrink gap0">
|
<div data-newbie-hidden data-tg-type="mancer, aphrodite" class="flex-container flexFlowColumn alignitemscenter flexBasis100p flexGrow flexShrink gap0">
|
||||||
<small data-i18n="Multiple swipes per generation">Multiple swipes per generation</small>
|
<small data-i18n="Multiple swipes per generation">Multiple swipes per generation</small>
|
||||||
<input type="number" id="n_textgenerationwebui" class="text_pole textAlignCenter" min="1" value="1" step="1" />
|
<input type="number" id="n_textgenerationwebui" class="text_pole textAlignCenter" min="1" value="1" step="1" />
|
||||||
</div>
|
</div>
|
||||||
|
@ -1228,7 +1228,7 @@
|
||||||
<input class="neo-range-slider" type="range" id="tfs_textgenerationwebui" name="volume" min="0" max="1" step="0.01">
|
<input class="neo-range-slider" type="range" id="tfs_textgenerationwebui" name="volume" min="0" max="1" step="0.01">
|
||||||
<input class="neo-range-input" type="number" min="0" max="1" step="0.01" data-for="tfs_textgenerationwebui" id="tfs_counter_textgenerationwebui">
|
<input class="neo-range-input" type="number" min="0" max="1" step="0.01" data-for="tfs_textgenerationwebui" id="tfs_counter_textgenerationwebui">
|
||||||
</div>
|
</div>
|
||||||
<div data-newbie-hidden data-tg-type="ooba" class="alignitemscenter flex-container flexFlowColumn flexBasis48p flexGrow flexShrink gap0">
|
<div data-newbie-hidden data-tg-type="ooba,mancer" class="alignitemscenter flex-container flexFlowColumn flexBasis48p flexGrow flexShrink gap0">
|
||||||
<small>
|
<small>
|
||||||
<span data-i18n="Epsilon Cutoff">Epsilon Cutoff</span>
|
<span data-i18n="Epsilon Cutoff">Epsilon Cutoff</span>
|
||||||
<div class="fa-solid fa-circle-info opacity50p" data-i18n="[title]Epsilon cutoff sets a probability floor below which tokens are excluded from being sampled" title="Epsilon cutoff sets a probability floor below which tokens are excluded from being sampled. In units of 1e-4; a reasonable value is 3. Set to 0 to disable."></div>
|
<div class="fa-solid fa-circle-info opacity50p" data-i18n="[title]Epsilon cutoff sets a probability floor below which tokens are excluded from being sampled" title="Epsilon cutoff sets a probability floor below which tokens are excluded from being sampled. In units of 1e-4; a reasonable value is 3. Set to 0 to disable."></div>
|
||||||
|
@ -1236,7 +1236,7 @@
|
||||||
<input class="neo-range-slider" type="range" id="epsilon_cutoff_textgenerationwebui" name="volume" min="0" max="9" step="0.01">
|
<input class="neo-range-slider" type="range" id="epsilon_cutoff_textgenerationwebui" name="volume" min="0" max="9" step="0.01">
|
||||||
<input class="neo-range-input" type="number" min="0" max="9" step="0.01" data-for="epsilon_cutoff_textgenerationwebui" id="epsilon_cutoff_counter_textgenerationwebui">
|
<input class="neo-range-input" type="number" min="0" max="9" step="0.01" data-for="epsilon_cutoff_textgenerationwebui" id="epsilon_cutoff_counter_textgenerationwebui">
|
||||||
</div>
|
</div>
|
||||||
<div data-newbie-hidden data-tg-type="ooba" class="alignitemscenter flex-container flexFlowColumn flexBasis48p flexGrow flexShrink gap0">
|
<div data-newbie-hidden data-tg-type="ooba,mancer" class="alignitemscenter flex-container flexFlowColumn flexBasis48p flexGrow flexShrink gap0">
|
||||||
<small>
|
<small>
|
||||||
<span data-i18n="Eta Cutoff">Eta Cutoff</span>
|
<span data-i18n="Eta Cutoff">Eta Cutoff</span>
|
||||||
<div class="fa-solid fa-circle-info opacity50p" data-i18n="[title]Eta cutoff is the main parameter of the special Eta Sampling technique. In units of 1e-4; a reasonable value is 3. Set to 0 to disable. See the paper Truncation Sampling as Language Model Desmoothing by Hewitt et al. (2022) for details." title="Eta cutoff is the main parameter of the special Eta Sampling technique. In units of 1e-4; a reasonable value is 3. Set to 0 to disable. See the paper Truncation Sampling as Language Model Desmoothing by Hewitt et al. (2022) for details."></div>
|
<div class="fa-solid fa-circle-info opacity50p" data-i18n="[title]Eta cutoff is the main parameter of the special Eta Sampling technique. In units of 1e-4; a reasonable value is 3. Set to 0 to disable. See the paper Truncation Sampling as Language Model Desmoothing by Hewitt et al. (2022) for details." title="Eta cutoff is the main parameter of the special Eta Sampling technique. In units of 1e-4; a reasonable value is 3. Set to 0 to disable. See the paper Truncation Sampling as Language Model Desmoothing by Hewitt et al. (2022) for details."></div>
|
||||||
|
@ -1274,7 +1274,7 @@
|
||||||
<input class="neo-range-slider" type="range" id="no_repeat_ngram_size_textgenerationwebui" name="volume" min="0" max="20" step="1">
|
<input class="neo-range-slider" type="range" id="no_repeat_ngram_size_textgenerationwebui" name="volume" min="0" max="20" step="1">
|
||||||
<input class="neo-range-input" type="number" min="0" max="20" step="1" data-for="no_repeat_ngram_size_textgenerationwebui" id="no_repeat_ngram_size_counter_textgenerationwebui">
|
<input class="neo-range-input" type="number" min="0" max="20" step="1" data-for="no_repeat_ngram_size_textgenerationwebui" id="no_repeat_ngram_size_counter_textgenerationwebui">
|
||||||
</div>
|
</div>
|
||||||
<div data-newbie-hidden data-tg-type="ooba, dreamgen" class="alignitemscenter flex-container flexFlowColumn flexBasis48p flexGrow flexShrink gap0">
|
<div data-newbie-hidden data-tg-type="mancer, ooba, dreamgen" class="alignitemscenter flex-container flexFlowColumn flexBasis48p flexGrow flexShrink gap0">
|
||||||
<small data-i18n="Min Length">Min Length</small>
|
<small data-i18n="Min Length">Min Length</small>
|
||||||
<input class="neo-range-slider" type="range" id="min_length_textgenerationwebui" name="volume" min="0" max="2000" step="1" />
|
<input class="neo-range-slider" type="range" id="min_length_textgenerationwebui" name="volume" min="0" max="2000" step="1" />
|
||||||
<input class="neo-range-input" type="number" min="0" max="2000" step="1" data-for="min_length_textgenerationwebui" id="min_length_counter_textgenerationwebui">
|
<input class="neo-range-input" type="number" min="0" max="2000" step="1" data-for="min_length_textgenerationwebui" id="min_length_counter_textgenerationwebui">
|
||||||
|
@ -1284,20 +1284,22 @@
|
||||||
<input class="neo-range-slider" type="range" id="max_tokens_second_textgenerationwebui" name="volume" min="0" max="20" step="1" />
|
<input class="neo-range-slider" type="range" id="max_tokens_second_textgenerationwebui" name="volume" min="0" max="20" step="1" />
|
||||||
<input class="neo-range-input" type="number" min="0" max="20" step="1" data-for="max_tokens_second_textgenerationwebui" id="max_tokens_second_counter_textgenerationwebui">
|
<input class="neo-range-input" type="number" min="0" max="20" step="1" data-for="max_tokens_second_textgenerationwebui" id="max_tokens_second_counter_textgenerationwebui">
|
||||||
</div>
|
</div>
|
||||||
<div data-newbie-hidden name="smoothingBlock" class="wide100p">
|
<div data-newbie-hidden data-tg-type="mancer, ooba, koboldcpp, aphrodite, tabby" name="smoothingBlock" class="wide100p">
|
||||||
<h4 class="wide100p textAlignCenter">
|
<h4 class="wide100p textAlignCenter">
|
||||||
<label data-i18n="Smooth Sampling">Smooth Sampling</label>
|
<label data-i18n="Smooth Sampling">Smooth Sampling</label>
|
||||||
<div class=" fa-solid fa-circle-info opacity50p " data-i18n="[title]Smooth Sampling" title="Allows you to use quadratic/cubic transformations to adjust the distribution. Lower Smoothing Factor values will be more creative, usually between 0.2-0.3 is the sweetspot (assuming the curve = 1). Higher Smoothing Curve values will make the curve steeper, which will punish low probability choices more aggressively. 1.0 curve is equivalent to only using Smoothing Factor."></div>
|
<div class=" fa-solid fa-circle-info opacity50p " data-i18n="[title]Smooth Sampling" title="Allows you to use quadratic/cubic transformations to adjust the distribution. Lower Smoothing Factor values will be more creative, usually between 0.2-0.3 is the sweetspot (assuming the curve = 1). Higher Smoothing Curve values will make the curve steeper, which will punish low probability choices more aggressively. 1.0 curve is equivalent to only using Smoothing Factor."></div>
|
||||||
</h4>
|
</h4>
|
||||||
<div data-newbie-hidden data-tg-type="ooba, koboldcpp, aphrodite, tabby" class="alignitemscenter flex-container flexFlowColumn flexBasis48p flexGrow flexShrink gap0">
|
<div class="flex-container flexFlowRow gap10px flexShrink">
|
||||||
<small data-i18n="Smoothing Factor">Smoothing Factor</small>
|
<div data-newbie-hidden class="alignitemscenter flex-container flexFlowColumn flexBasis48p flexGrow flexShrink gap0">
|
||||||
<input class="neo-range-slider" type="range" id="smoothing_factor_textgenerationwebui" name="volume" min="0" max="10" step="0.01" />
|
<small data-i18n="Smoothing Factor">Smoothing Factor</small>
|
||||||
<input class="neo-range-input" type="number" min="0" max="10" step="0.01" data-for="smoothing_factor_textgenerationwebui" id="smoothing_factor_counter_textgenerationwebui">
|
<input class="neo-range-slider" type="range" id="smoothing_factor_textgenerationwebui" name="volume" min="0" max="10" step="0.01" />
|
||||||
</div>
|
<input class="neo-range-input" type="number" min="0" max="10" step="0.01" data-for="smoothing_factor_textgenerationwebui" id="smoothing_factor_counter_textgenerationwebui">
|
||||||
<div data-newbie-hidden data-tg-type="ooba, koboldcpp, aphrodite, tabby" class="alignitemscenter flex-container flexFlowColumn flexBasis48p flexGrow flexShrink gap0">
|
</div>
|
||||||
<small data-i18n="Smoothing Curve">Smoothing Curve</small>
|
<div data-newbie-hidden class="alignitemscenter flex-container flexFlowColumn flexBasis48p flexGrow flexShrink gap0">
|
||||||
<input class="neo-range-slider" type="range" id="smoothing_curve_textgenerationwebui" name="volume" min="1" max="10" step="0.01" />
|
<small data-i18n="Smoothing Curve">Smoothing Curve</small>
|
||||||
<input class="neo-range-input" type="number" min="1" max="10" step="0.01" data-for="smoothing_curve_textgenerationwebui" id="smoothing_curve_counter_textgenerationwebui">
|
<input class="neo-range-slider" type="range" id="smoothing_curve_textgenerationwebui" name="volume" min="1" max="10" step="0.01" />
|
||||||
|
<input class="neo-range-input" type="number" min="1" max="10" step="0.01" data-for="smoothing_curve_textgenerationwebui" id="smoothing_curve_counter_textgenerationwebui">
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!--
|
<!--
|
||||||
|
@ -1322,7 +1324,7 @@
|
||||||
<input class="neo-range-input" type="number" min="0" max="5" step="1" data-for="prompt_log_probs_aphrodite" id="prompt_log_probs_aphrodite_counter_textgenerationwebui">
|
<input class="neo-range-input" type="number" min="0" max="5" step="1" data-for="prompt_log_probs_aphrodite" id="prompt_log_probs_aphrodite_counter_textgenerationwebui">
|
||||||
</div>
|
</div>
|
||||||
-->
|
-->
|
||||||
<div data-newbie-hidden data-tg-type="ooba, koboldcpp, tabby, llamacpp, aphrodite" name="dynaTempBlock" class="wide100p">
|
<div data-newbie-hidden data-tg-type="ooba, mancer, koboldcpp, tabby, llamacpp, aphrodite" name="dynaTempBlock" class="wide100p">
|
||||||
<h4 class="wide100p textAlignCenter" data-i18n="DynaTemp">
|
<h4 class="wide100p textAlignCenter" data-i18n="DynaTemp">
|
||||||
<div class="flex-container alignitemscenter" style="justify-content: center;">
|
<div class="flex-container alignitemscenter" style="justify-content: center;">
|
||||||
<div class="checkbox_label" for="dynatemp_textgenerationwebui">
|
<div class="checkbox_label" for="dynatemp_textgenerationwebui">
|
||||||
|
@ -1492,7 +1494,7 @@
|
||||||
<div class="logit_bias_list"></div>
|
<div class="logit_bias_list"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div data-newbie-hidden data-forAphro="False" class="wide100p">
|
<div data-newbie-hidden data-forAphro="False" data-tg-type="ooba, tabby, koboldcpp, togetherai, llamacpp, ollama, infermaticai, dreamgen, openrouter" class="wide100p">
|
||||||
<hr class="width100p">
|
<hr class="width100p">
|
||||||
<h4 data-i18n="CFG" class="textAlignCenter">CFG
|
<h4 data-i18n="CFG" class="textAlignCenter">CFG
|
||||||
<div class="margin5 fa-solid fa-circle-info opacity50p " data-i18n="[title]Classifier Free Guidance. More helpful tip coming soon" title="Classifier Free Guidance. More helpful tip coming soon."></div>
|
<div class="margin5 fa-solid fa-circle-info opacity50p " data-i18n="[title]Classifier Free Guidance. More helpful tip coming soon" title="Classifier Free Guidance. More helpful tip coming soon."></div>
|
||||||
|
|
|
@ -4531,6 +4531,7 @@ function parseAndSaveLogprobs(data, continueFrom) {
|
||||||
logprobs = data?.completion_probabilities?.map(x => parseTextgenLogprobs(x.content, [x])) || null;
|
logprobs = data?.completion_probabilities?.map(x => parseTextgenLogprobs(x.content, [x])) || null;
|
||||||
} break;
|
} break;
|
||||||
case textgen_types.APHRODITE:
|
case textgen_types.APHRODITE:
|
||||||
|
case textgen_types.MANCER:
|
||||||
case textgen_types.TABBY: {
|
case textgen_types.TABBY: {
|
||||||
logprobs = parseTabbyLogprobs(data) || null;
|
logprobs = parseTabbyLogprobs(data) || null;
|
||||||
} break;
|
} break;
|
||||||
|
@ -4585,7 +4586,7 @@ function extractMultiSwipes(data, type) {
|
||||||
return swipes;
|
return swipes;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (main_api === 'openai' || (main_api === 'textgenerationwebui' && textgen_settings.type === textgen_types.APHRODITE)) {
|
if (main_api === 'openai' || main_api === 'mancer' || (main_api === 'textgenerationwebui' && textgen_settings.type === textgen_types.APHRODITE)) {
|
||||||
if (!Array.isArray(data.choices)) {
|
if (!Array.isArray(data.choices)) {
|
||||||
return swipes;
|
return swipes;
|
||||||
}
|
}
|
||||||
|
|
|
@ -139,7 +139,7 @@ function renderTopLogprobs() {
|
||||||
const candidates = topLogprobs
|
const candidates = topLogprobs
|
||||||
.sort(([, logA], [, logB]) => logB - logA)
|
.sort(([, logA], [, logB]) => logB - logA)
|
||||||
.map(([text, log]) => {
|
.map(([text, log]) => {
|
||||||
if (log < 0) {
|
if (log <= 0) {
|
||||||
const probability = Math.exp(log);
|
const probability = Math.exp(log);
|
||||||
sum += probability;
|
sum += probability;
|
||||||
return [text, probability, log];
|
return [text, probability, log];
|
||||||
|
|
|
@ -850,6 +850,7 @@ export function parseTextgenLogprobs(token, logprobs) {
|
||||||
switch (settings.type) {
|
switch (settings.type) {
|
||||||
case TABBY:
|
case TABBY:
|
||||||
case APHRODITE:
|
case APHRODITE:
|
||||||
|
case MANCER:
|
||||||
case OOBA: {
|
case OOBA: {
|
||||||
/** @type {Record<string, number>[]} */
|
/** @type {Record<string, number>[]} */
|
||||||
const topLogprobs = logprobs.top_logprobs;
|
const topLogprobs = logprobs.top_logprobs;
|
||||||
|
@ -971,6 +972,7 @@ export function getTextGenGenerationData(finalPrompt, maxTokens, isImpersonate,
|
||||||
'typical_p': settings.typical_p,
|
'typical_p': settings.typical_p,
|
||||||
'typical': settings.typical_p,
|
'typical': settings.typical_p,
|
||||||
'sampler_seed': settings.seed,
|
'sampler_seed': settings.seed,
|
||||||
|
'seed': settings.seed,
|
||||||
'min_p': settings.min_p,
|
'min_p': settings.min_p,
|
||||||
'repetition_penalty': settings.rep_pen,
|
'repetition_penalty': settings.rep_pen,
|
||||||
'frequency_penalty': settings.freq_pen,
|
'frequency_penalty': settings.freq_pen,
|
||||||
|
@ -1000,12 +1002,12 @@ export function getTextGenGenerationData(finalPrompt, maxTokens, isImpersonate,
|
||||||
'skip_special_tokens': settings.skip_special_tokens,
|
'skip_special_tokens': settings.skip_special_tokens,
|
||||||
'top_a': settings.top_a,
|
'top_a': settings.top_a,
|
||||||
'tfs': settings.tfs,
|
'tfs': settings.tfs,
|
||||||
'epsilon_cutoff': settings.type === OOBA ? settings.epsilon_cutoff : undefined,
|
'epsilon_cutoff': [OOBA, MANCER].includes(settings.type) ? settings.epsilon_cutoff : undefined,
|
||||||
'eta_cutoff': settings.type === OOBA ? settings.eta_cutoff : undefined,
|
'eta_cutoff': [OOBA, MANCER].includes(settings.type) ? settings.eta_cutoff : undefined,
|
||||||
'mirostat_mode': settings.mirostat_mode,
|
'mirostat_mode': settings.mirostat_mode,
|
||||||
'mirostat_tau': settings.mirostat_tau,
|
'mirostat_tau': settings.mirostat_tau,
|
||||||
'mirostat_eta': settings.mirostat_eta,
|
'mirostat_eta': settings.mirostat_eta,
|
||||||
'custom_token_bans': settings.type === textgen_types.APHRODITE ?
|
'custom_token_bans': [APHRODITE, MANCER].includes(settings.type) ?
|
||||||
toIntArray(getCustomTokenBans()) :
|
toIntArray(getCustomTokenBans()) :
|
||||||
getCustomTokenBans(),
|
getCustomTokenBans(),
|
||||||
'api_type': settings.type,
|
'api_type': settings.type,
|
||||||
|
@ -1022,7 +1024,6 @@ export function getTextGenGenerationData(finalPrompt, maxTokens, isImpersonate,
|
||||||
'penalty_alpha': settings.type === OOBA ? settings.penalty_alpha : undefined,
|
'penalty_alpha': settings.type === OOBA ? settings.penalty_alpha : undefined,
|
||||||
'temperature_last': (settings.type === OOBA || settings.type === APHRODITE || settings.type == TABBY) ? settings.temperature_last : undefined,
|
'temperature_last': (settings.type === OOBA || settings.type === APHRODITE || settings.type == TABBY) ? settings.temperature_last : undefined,
|
||||||
'do_sample': settings.type === OOBA ? settings.do_sample : undefined,
|
'do_sample': settings.type === OOBA ? settings.do_sample : undefined,
|
||||||
'seed': settings.seed,
|
|
||||||
'guidance_scale': cfgValues?.guidanceScale?.value ?? settings.guidance_scale ?? 1,
|
'guidance_scale': cfgValues?.guidanceScale?.value ?? settings.guidance_scale ?? 1,
|
||||||
'negative_prompt': cfgValues?.negativePrompt ?? substituteParams(settings.negative_prompt) ?? '',
|
'negative_prompt': cfgValues?.negativePrompt ?? substituteParams(settings.negative_prompt) ?? '',
|
||||||
'grammar_string': settings.grammar_string,
|
'grammar_string': settings.grammar_string,
|
||||||
|
@ -1045,6 +1046,17 @@ export function getTextGenGenerationData(finalPrompt, maxTokens, isImpersonate,
|
||||||
//'logprobs': settings.log_probs_aphrodite,
|
//'logprobs': settings.log_probs_aphrodite,
|
||||||
//'prompt_logprobs': settings.prompt_log_probs_aphrodite,
|
//'prompt_logprobs': settings.prompt_log_probs_aphrodite,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if (settings.type === MANCER) {
|
||||||
|
params.n = canMultiSwipe ? settings.n : 1
|
||||||
|
params.epsilon_cutoff /= 1000
|
||||||
|
params.eta_cutoff /= 1000
|
||||||
|
params.dynatemp_mode =
|
||||||
|
params.dynatemp_min = params.dynamic_temperature ? params.dynatemp_low : 0
|
||||||
|
params.dynatemp_max = params.dynamic_temperature ? params.dynatemp_high : 0
|
||||||
|
delete params.dynatemp_low, params.dynatemp_high
|
||||||
|
}
|
||||||
|
|
||||||
if (settings.type === APHRODITE) {
|
if (settings.type === APHRODITE) {
|
||||||
params = Object.assign(params, aphroditeParams);
|
params = Object.assign(params, aphroditeParams);
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in New Issue