Sampling: Add additive param to overrides

Additive is used to add collections together. Currently, it's used
for lists, but it can be used for dictionaries in the future.

Signed-off-by: kingbri <bdashore3@proton.me>
This commit is contained in:
kingbri 2024-03-31 01:09:59 -04:00
parent 05b5700334
commit d716527b92
2 changed files with 15 additions and 3 deletions

View file

@ -325,6 +325,16 @@ def apply_forced_sampler_overrides(params: BaseSamplerRequest):
for var, value in overrides.items():
override = value.get("override")
force = unwrap(value.get("force"), False)
if force and override:
setattr(params, var, override)
original_value = getattr(params, var, None)
# Force takes precedence over additive
# Additive only works on lists and doesn't remove duplicates
if override:
if unwrap(value.get("force"), False):
setattr(params, var, override)
elif (
unwrap(value.get("additive"), False)
and isinstance(override, list)
and isinstance(original_value, list)
):
setattr(params, var, override + original_value)

View file

@ -14,6 +14,7 @@ max_tokens:
stop:
override: []
force: false
additive: false
token_healing:
override: false
force: false
@ -104,6 +105,7 @@ ban_eos_token:
logit_bias:
override:
force: false
additive: false
# MARK: CFG scale
cfg_scale: