Add explanation for advanced settings

This commit is contained in:
SillyLossy
2023-03-18 17:58:09 +02:00
parent cddbc60587
commit 7b6eaf6ed0
3 changed files with 171 additions and 3 deletions

View File

@ -506,8 +506,11 @@
<hr>
<div id="ai-presets-and-config-block">
<h4>Preset settings <a href="/notes/4" class="notes-link" target="_blank"><span
class="note-link-span">?</span></a></h4>
<h3>Preset settings
<a href="/notes/4" class="notes-link" target="_blank">
<span class="note-link-span">?</span>
</a>
</h3>
<select id="settings_perset">
<option value="gui">GUI KoboldAI Settings</option>
</select>
@ -545,7 +548,11 @@
</div>
<div class="drawer">
<div class="drawer-toggle drawer-header">
<h3>Advanced Settings</h3>
<h3>Advanced Settings
<a href="/notes/kai_advanced" class="notes-link" target="_blank">
<span class="note-link-span">?</span>
</a>
</h3>
<div class="drawer-icon down"></div>
</div>
<div class="drawer-content">

View File

@ -0,0 +1,78 @@
<html>
<head>
<title>Advanced Settings</title>
<link rel="stylesheet" href="/css/notes.css">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="">
<link
href="https://fonts.googleapis.com/css2?family=Noto+Sans:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&amp;display=swap"
rel="stylesheet">
</head>
<body>
<div id="main">
<div id="content">
<h2>Advanced Settings</h2>
<p>
The settings provided in this section offer a more detailed level of control over the text generation
process. It is important to be careful when making changes to these settings without proper
consideration, as doing so may result in degraded quality of responses.
</p>
<h3>Top P Sampling</h3>
<p>
This setting controls how much of the text generated is based on the most likely options.
The top P words with the highest probabilities are considered. A word is then chosen at random, with a
higher chance of selecting words with higher probabilities.
</p>
<p>
Set value to 1 to disable its effect.
</p>
<h3>Top K Sampling</h3>
<p>
This setting limits the number of words to choose from to the top K most likely options. Can be used
together with Top P sampling.
</p>
<p>
Set value to 0 to disable its effect.
</p>
<h3>Top A Sampling</h3>
<p>
This setting allows for a more flexible version of sampling, where the number of words chosen from
the most likely options is automatically determined based on the likelihood distribution of the options,
but instead of choosing the top P or K words, it chooses all words with probabilities above a certain
threshold.
</p>
<p>
Set value to 0 to disable its effect.
</p>
<h3>Typical Sampling</h3>
<p>
This setting selects words randomly from the list of possible words, with each word having an equal
chance of being selected. This method can produce text that is more diverse but may also be less
coherent.
</p>
<p>
Set value to 1 to disable its effect.
</p>
<h3>Tail Free Sampling</h3>
<p>
This setting removes the least probable words from consideration during text generation, which can
improve the quality and coherence of the generated text.
</p>
<p>
Set value to 1 to disable its effect.
</p>
<h3>Repetition Penalty Slope</h3>
<p>
If both this and Repetition Penalty Range are below 0, then repetition penalty will have more effect
closer to the end of the prompt. The higher the value, the stronger the effect.
</p>
<p>Set value to 1 for linear interpolation or 0 to disable interpolation.</p>
</div>
</div>
</body>
</html>

View File

@ -0,0 +1,83 @@
import {
saveSettingsDebounced,
} from "../script.js";
export {
kai_settings,
loadKoboldSettings,
};
const kai_settings = {
top_p: 1,
top_a: 1,
top_k: 0,
typical: 1,
tfs: 1,
rep_pen_slope: 0.9,
};
function loadKoboldSettings(preset) {
for (const name of Object.keys(kai_settings)) {
kai_settings[name] = preset[name];
$(`#${name}`).val(kai_settings[name]);
$(`#${name}_counter`).text(kai_settings[name]);
}
}
// Cohee's TODO: Merge with sliders block in script.js
const sliders = [
{
sliderId: "#top_p",
counterId: "#top_p_counter",
format: (val) => val,
setValue: (val) => { kai_settings.top_p = Number(val); },
},
{
sliderId: "#top_a",
counterId: "#top_a_counter",
format: (val) => val,
setValue: (val) => { kai_settings.top_a = Number(val); },
},
{
sliderId: "#top_k",
counterId: "#top_k_counter",
format: (val) => val,
setValue: (val) => { kai_settings.top_k = Number(val); },
},
{
sliderId: "#typical",
counterId: "#typical_counter",
format: (val) => val,
setValue: (val) => { kai_settings.typical = Number(val); },
},
{
sliderId: "#tfs",
counterId: "#tfs_counter",
format: (val) => val,
setValue: (val) => { kai_settings.tfs = Number(val); },
},
{
sliderId: "#rep_pen_slope",
counterId: "#rep_pen_slope_counter",
format: (val) => val,
setValue: (val) => { kai_settings.rep_pen_slope = Number(val); },
},
];
$(document).ready(function () {
$('.drawer-toggle').click(function () {
var icon = $(this).find('.drawer-icon');
icon.toggleClass('down up');
$(this).closest('.drawer').find('.drawer-content').slideToggle();
});
sliders.forEach(slider => {
$(document).on("input", slider.sliderId, function () {
const value = $(this).val();
const formattedValue = slider.format(value);
slider.setValue(value);
$(slider.counterId).html(formattedValue);
saveSettingsDebounced();
});
});
});