diff --git a/backend/backend.proto b/backend/backend.proto index 47ee7c6ef..1cbc0f14c 100644 --- a/backend/backend.proto +++ b/backend/backend.proto @@ -258,6 +258,8 @@ message ModelOptions { repeated GrammarTrigger GrammarTriggers = 65; bool Reranking = 71; + + repeated string Overrides = 72; } message Result { diff --git a/backend/cpp/llama/grpc-server.cpp b/backend/cpp/llama/grpc-server.cpp index 1b56e9fe4..535bf5d57 100644 --- a/backend/cpp/llama/grpc-server.cpp +++ b/backend/cpp/llama/grpc-server.cpp @@ -12,6 +12,7 @@ #include "backend.pb.h" #include "backend.grpc.pb.h" +#include "common.h" #include #include #include @@ -260,6 +261,13 @@ static void params_parse(const backend::ModelOptions* request, } } + // Add kv_overrides + if (request->overrides_size() > 0) { + for (int i = 0; i < request->overrides_size(); i++) { + string_parse_kv_override(request->overrides(i).c_str(), params.kv_overrides); + } + } + // TODO: Add yarn if (!request->tensorsplit().empty()) { diff --git a/core/backend/options.go b/core/backend/options.go index 7d4754c74..7f4623c2d 100644 --- a/core/backend/options.go +++ b/core/backend/options.go @@ -143,6 +143,7 @@ func grpcModelOpts(c config.BackendConfig) *pb.ModelOptions { CLIPModel: c.Diffusers.ClipModel, CLIPSubfolder: c.Diffusers.ClipSubFolder, Options: c.Options, + Overrides: c.Overrides, CLIPSkip: int32(c.Diffusers.ClipSkip), ControlNet: c.Diffusers.ControlNet, ContextSize: int32(ctxSize), diff --git a/core/config/backend_config.go b/core/config/backend_config.go index c3a6eae85..113ae131a 100644 --- a/core/config/backend_config.go +++ b/core/config/backend_config.go @@ -70,7 +70,8 @@ type BackendConfig struct { Description string `yaml:"description"` Usage string `yaml:"usage"` - Options []string `yaml:"options"` + Options []string `yaml:"options"` + Overrides []string `yaml:"overrides"` } // Pipeline defines other models to use for audio-to-audio