From d716527b928e86faf65baa500c18be59cc1d1053 Mon Sep 17 00:00:00 2001 From: kingbri Date: Sun, 31 Mar 2024 01:09:59 -0400 Subject: [PATCH] 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 --- common/sampling.py | 16 +++++++++++++--- sampler_overrides/sample_preset.yml | 2 ++ 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/common/sampling.py b/common/sampling.py index a72dd4f..022030c 100644 --- a/common/sampling.py +++ b/common/sampling.py @@ -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) diff --git a/sampler_overrides/sample_preset.yml b/sampler_overrides/sample_preset.yml index 88dee47..d91b1a1 100644 --- a/sampler_overrides/sample_preset.yml +++ b/sampler_overrides/sample_preset.yml @@ -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: