mirror of
https://github.com/ggerganov/llama.cpp.git
synced 2024-12-27 06:39:25 +01:00
server: (web UI) Add samplers sequence customization (#10255)
* Samplers sequence: simplified and input field. * Removed unused function * Modify and use `settings-modal-short-input` * rename "name" --> "label" --------- Co-authored-by: Xuan Son Nguyen <son@huggingface.co>
This commit is contained in:
parent
f245cc28d4
commit
bcdb7a2386
@ -212,6 +212,9 @@
|
|||||||
<details class="collapse collapse-arrow bg-base-200 mb-2 overflow-visible">
|
<details class="collapse collapse-arrow bg-base-200 mb-2 overflow-visible">
|
||||||
<summary class="collapse-title font-bold">Other sampler settings</summary>
|
<summary class="collapse-title font-bold">Other sampler settings</summary>
|
||||||
<div class="collapse-content">
|
<div class="collapse-content">
|
||||||
|
<!-- Samplers queue -->
|
||||||
|
<settings-modal-short-input label="Samplers queue" :config-key="'samplers'" :config-default="configDefault" :config-info="configInfo" v-model="config.samplers"></settings-modal-short-input>
|
||||||
|
<!-- Samplers -->
|
||||||
<template v-for="configKey in ['dynatemp_range', 'dynatemp_exponent', 'typical_p', 'xtc_probability', 'xtc_threshold']">
|
<template v-for="configKey in ['dynatemp_range', 'dynatemp_exponent', 'typical_p', 'xtc_probability', 'xtc_threshold']">
|
||||||
<settings-modal-short-input :config-key="configKey" :config-default="configDefault" :config-info="configInfo" v-model="config[configKey]" />
|
<settings-modal-short-input :config-key="configKey" :config-default="configDefault" :config-info="configInfo" v-model="config[configKey]" />
|
||||||
</template>
|
</template>
|
||||||
@ -231,6 +234,7 @@
|
|||||||
<summary class="collapse-title font-bold">Advanced config</summary>
|
<summary class="collapse-title font-bold">Advanced config</summary>
|
||||||
<div class="collapse-content">
|
<div class="collapse-content">
|
||||||
<label class="form-control mb-2">
|
<label class="form-control mb-2">
|
||||||
|
<!-- Custom parameters input -->
|
||||||
<div class="label inline">Custom JSON config (For more info, refer to <a class="underline" href="https://github.com/ggerganov/llama.cpp/blob/master/examples/server/README.md" target="_blank" rel="noopener noreferrer">server documentation</a>)</div>
|
<div class="label inline">Custom JSON config (For more info, refer to <a class="underline" href="https://github.com/ggerganov/llama.cpp/blob/master/examples/server/README.md" target="_blank" rel="noopener noreferrer">server documentation</a>)</div>
|
||||||
<textarea class="textarea textarea-bordered h-24" placeholder="Example: { "mirostat": 1, "min_p": 0.1 }" v-model="config.custom"></textarea>
|
<textarea class="textarea textarea-bordered h-24" placeholder="Example: { "mirostat": 1, "min_p": 0.1 }" v-model="config.custom"></textarea>
|
||||||
</label>
|
</label>
|
||||||
@ -253,7 +257,7 @@
|
|||||||
<label class="input input-bordered join-item grow flex items-center gap-2 mb-2">
|
<label class="input input-bordered join-item grow flex items-center gap-2 mb-2">
|
||||||
<!-- Show help message on hovering on the input label -->
|
<!-- Show help message on hovering on the input label -->
|
||||||
<div class="dropdown dropdown-hover">
|
<div class="dropdown dropdown-hover">
|
||||||
<div tabindex="0" role="button" class="font-bold">{{ configKey }}</div>
|
<div tabindex="0" role="button" class="font-bold">{{ label || configKey }}</div>
|
||||||
<div class="dropdown-content menu bg-base-100 rounded-box z-10 w-64 p-2 shadow mt-4">
|
<div class="dropdown-content menu bg-base-100 rounded-box z-10 w-64 p-2 shadow mt-4">
|
||||||
{{ configInfo[configKey] || '(no help message available)' }}
|
{{ configInfo[configKey] || '(no help message available)' }}
|
||||||
</div>
|
</div>
|
||||||
@ -282,6 +286,7 @@
|
|||||||
apiKey: '',
|
apiKey: '',
|
||||||
systemMessage: 'You are a helpful assistant.',
|
systemMessage: 'You are a helpful assistant.',
|
||||||
// make sure these default values are in sync with `common.h`
|
// make sure these default values are in sync with `common.h`
|
||||||
|
samplers: 'dkypmxt',
|
||||||
temperature: 0.8,
|
temperature: 0.8,
|
||||||
dynatemp_range: 0.0,
|
dynatemp_range: 0.0,
|
||||||
dynatemp_exponent: 1.0,
|
dynatemp_exponent: 1.0,
|
||||||
@ -305,6 +310,7 @@
|
|||||||
const CONFIG_INFO = {
|
const CONFIG_INFO = {
|
||||||
apiKey: 'Set the API Key if you are using --api-key option for the server.',
|
apiKey: 'Set the API Key if you are using --api-key option for the server.',
|
||||||
systemMessage: 'The starting message that defines how model should behave.',
|
systemMessage: 'The starting message that defines how model should behave.',
|
||||||
|
samplers: 'The order at which samplers are applied, in simplified way. Default is "dkypmxt": dry->top_k->typ_p->top_p->min_p->xtc->temperature',
|
||||||
temperature: 'Controls the randomness of the generated text by affecting the probability distribution of the output tokens. Higher = more random, lower = more focused.',
|
temperature: 'Controls the randomness of the generated text by affecting the probability distribution of the output tokens. Higher = more random, lower = more focused.',
|
||||||
dynatemp_range: 'Addon for the temperature sampler. The added value to the range of dynamic temperature, which adjusts probabilities by entropy of tokens.',
|
dynatemp_range: 'Addon for the temperature sampler. The added value to the range of dynamic temperature, which adjusts probabilities by entropy of tokens.',
|
||||||
dynatemp_exponent: 'Addon for the temperature sampler. Smoothes out the probability redistribution based on the most probable token.',
|
dynatemp_exponent: 'Addon for the temperature sampler. Smoothes out the probability redistribution based on the most probable token.',
|
||||||
@ -352,10 +358,16 @@
|
|||||||
{ props: ["source"] }
|
{ props: ["source"] }
|
||||||
);
|
);
|
||||||
|
|
||||||
// inout field to be used by settings modal
|
// input field to be used by settings modal
|
||||||
const SettingsModalShortInput = defineComponent({
|
const SettingsModalShortInput = defineComponent({
|
||||||
template: document.getElementById('settings-modal-short-input').innerHTML,
|
template: document.getElementById('settings-modal-short-input').innerHTML,
|
||||||
props: ['configKey', 'configDefault', 'configInfo', 'modelValue'],
|
props: {
|
||||||
|
label: { type: String, required: false },
|
||||||
|
configKey: String,
|
||||||
|
configDefault: Object,
|
||||||
|
configInfo: Object,
|
||||||
|
modelValue: [Object, String, Number],
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
// coversations is stored in localStorage
|
// coversations is stored in localStorage
|
||||||
@ -546,6 +558,7 @@
|
|||||||
],
|
],
|
||||||
stream: true,
|
stream: true,
|
||||||
cache_prompt: true,
|
cache_prompt: true,
|
||||||
|
samplers: this.config.samplers,
|
||||||
temperature: this.config.temperature,
|
temperature: this.config.temperature,
|
||||||
dynatemp_range: this.config.dynatemp_range,
|
dynatemp_range: this.config.dynatemp_range,
|
||||||
dynatemp_exponent: this.config.dynatemp_exponent,
|
dynatemp_exponent: this.config.dynatemp_exponent,
|
||||||
|
@ -927,7 +927,8 @@ struct server_context {
|
|||||||
|
|
||||||
{
|
{
|
||||||
const auto & samplers = data.find("samplers");
|
const auto & samplers = data.find("samplers");
|
||||||
if (samplers != data.end() && samplers->is_array()) {
|
if (samplers != data.end()) {
|
||||||
|
if (samplers->is_array()) {
|
||||||
std::vector<std::string> sampler_names;
|
std::vector<std::string> sampler_names;
|
||||||
for (const auto & name : *samplers) {
|
for (const auto & name : *samplers) {
|
||||||
if (name.is_string()) {
|
if (name.is_string()) {
|
||||||
@ -935,6 +936,13 @@ struct server_context {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
slot.sparams.samplers = common_sampler_types_from_names(sampler_names, false);
|
slot.sparams.samplers = common_sampler_types_from_names(sampler_names, false);
|
||||||
|
} else if (samplers->is_string()){
|
||||||
|
std::string sampler_string;
|
||||||
|
for (const auto & name : *samplers) {
|
||||||
|
sampler_string += name;
|
||||||
|
}
|
||||||
|
slot.sparams.samplers = common_sampler_types_from_chars(sampler_string);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
slot.sparams.samplers = default_sparams.samplers;
|
slot.sparams.samplers = default_sparams.samplers;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user