From 4bd26644bf690ac482d9c60bced2228e8ad7948a Mon Sep 17 00:00:00 2001 From: Pierrick HYMBERT Date: Sat, 20 Apr 2024 13:24:58 +0200 Subject: [PATCH] llama: finally move the string KV override value to the stack --- common/common.cpp | 14 +------------- common/common.h | 3 --- examples/quantize/quantize.cpp | 4 ++-- llama.h | 2 +- 4 files changed, 4 insertions(+), 19 deletions(-) diff --git a/common/common.cpp b/common/common.cpp index c30b9e59f..f07b4d1a4 100644 --- a/common/common.cpp +++ b/common/common.cpp @@ -266,7 +266,7 @@ bool parse_kv_override(const char * data, std::vector & } else if (strncmp(sep, "str:", 4) == 0) { sep += 4; kvo.tag = LLAMA_KV_OVERRIDE_TYPE_STR; - kvo.str_value = strdup(sep); + strncpy(kvo.str_value, sep, 128); } else { fprintf(stderr, "%s: invalid type for KV override '%s'\n", __func__, data); return false; @@ -2232,10 +2232,6 @@ std::tuple llama_init_from_gpt_par return std::make_tuple(nullptr, nullptr); } - if (!params.kv_overrides.empty()) { - llama_model_kv_override_free(params.kv_overrides.data()); - } - auto cparams = llama_context_params_from_gpt_params(params); llama_context * lctx = llama_new_context_with_model(model, cparams); @@ -2956,11 +2952,3 @@ llama_control_vector_data llama_control_vector_load(const std::vectorkey[0] != 0; p++) { - if (p->tag == LLAMA_KV_OVERRIDE_TYPE_STR) { - delete p->str_value; - } - } -} diff --git a/common/common.h b/common/common.h index 916023e25..562d3a119 100644 --- a/common/common.h +++ b/common/common.h @@ -172,9 +172,6 @@ struct gpt_params { bool parse_kv_override(const char * data, std::vector & overrides); -// Frees all allocated memory -void llama_model_kv_override_free(struct llama_model_kv_override * ctx); - bool gpt_params_parse_ex(int argc, char ** argv, gpt_params & params); bool gpt_params_parse(int argc, char ** argv, gpt_params & params); diff --git a/examples/quantize/quantize.cpp b/examples/quantize/quantize.cpp index a0d9a2f46..b6464be3d 100644 --- a/examples/quantize/quantize.cpp +++ b/examples/quantize/quantize.cpp @@ -305,14 +305,14 @@ int main(int argc, char ** argv) { llama_model_kv_override kvo; std::strcpy(kvo.key, LLM_KV_QUANTIZE_IMATRIX_FILE); kvo.tag = LLAMA_KV_OVERRIDE_TYPE_STR; - kvo.str_value = strdup(imatrix_file.c_str()); + strncpy(kvo.str_value, imatrix_file.c_str(), 128); kv_overrides.emplace_back(std::move(kvo)); } if (!imatrix_dataset.empty()) { llama_model_kv_override kvo; std::strcpy(kvo.key, LLM_KV_QUANTIZE_IMATRIX_DATASET); kvo.tag = LLAMA_KV_OVERRIDE_TYPE_STR; - kvo.str_value = strdup(imatrix_dataset.c_str()); + strncpy(kvo.str_value, imatrix_dataset.c_str(), 128); kv_overrides.emplace_back(std::move(kvo)); } diff --git a/llama.h b/llama.h index 0cc0d3f29..73d9733f7 100644 --- a/llama.h +++ b/llama.h @@ -201,11 +201,11 @@ extern "C" { struct llama_model_kv_override { char key[128]; enum llama_model_kv_override_type tag; + char str_value[128]; union { int64_t int_value; double float_value; bool bool_value; - char * str_value; }; };