llama: finally move the string KV override value to the stack
This commit is contained in:
parent
2606bc97bf
commit
4bd26644bf
4 changed files with 4 additions and 19 deletions
|
@ -266,7 +266,7 @@ bool parse_kv_override(const char * data, std::vector<llama_model_kv_override> &
|
||||||
} else if (strncmp(sep, "str:", 4) == 0) {
|
} else if (strncmp(sep, "str:", 4) == 0) {
|
||||||
sep += 4;
|
sep += 4;
|
||||||
kvo.tag = LLAMA_KV_OVERRIDE_TYPE_STR;
|
kvo.tag = LLAMA_KV_OVERRIDE_TYPE_STR;
|
||||||
kvo.str_value = strdup(sep);
|
strncpy(kvo.str_value, sep, 128);
|
||||||
} else {
|
} else {
|
||||||
fprintf(stderr, "%s: invalid type for KV override '%s'\n", __func__, data);
|
fprintf(stderr, "%s: invalid type for KV override '%s'\n", __func__, data);
|
||||||
return false;
|
return false;
|
||||||
|
@ -2232,10 +2232,6 @@ std::tuple<struct llama_model *, struct llama_context *> llama_init_from_gpt_par
|
||||||
return std::make_tuple(nullptr, nullptr);
|
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);
|
auto cparams = llama_context_params_from_gpt_params(params);
|
||||||
|
|
||||||
llama_context * lctx = llama_new_context_with_model(model, cparams);
|
llama_context * lctx = llama_new_context_with_model(model, cparams);
|
||||||
|
@ -2956,11 +2952,3 @@ llama_control_vector_data llama_control_vector_load(const std::vector<llama_cont
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
void llama_model_kv_override_free(struct llama_model_kv_override * kv_overrides) {
|
|
||||||
for (const struct llama_model_kv_override *p = kv_overrides; p->key[0] != 0; p++) {
|
|
||||||
if (p->tag == LLAMA_KV_OVERRIDE_TYPE_STR) {
|
|
||||||
delete p->str_value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -172,9 +172,6 @@ struct gpt_params {
|
||||||
|
|
||||||
bool parse_kv_override(const char * data, std::vector<llama_model_kv_override> & overrides);
|
bool parse_kv_override(const char * data, std::vector<llama_model_kv_override> & 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_ex(int argc, char ** argv, gpt_params & params);
|
||||||
|
|
||||||
bool gpt_params_parse(int argc, char ** argv, gpt_params & params);
|
bool gpt_params_parse(int argc, char ** argv, gpt_params & params);
|
||||||
|
|
|
@ -305,14 +305,14 @@ int main(int argc, char ** argv) {
|
||||||
llama_model_kv_override kvo;
|
llama_model_kv_override kvo;
|
||||||
std::strcpy(kvo.key, LLM_KV_QUANTIZE_IMATRIX_FILE);
|
std::strcpy(kvo.key, LLM_KV_QUANTIZE_IMATRIX_FILE);
|
||||||
kvo.tag = LLAMA_KV_OVERRIDE_TYPE_STR;
|
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));
|
kv_overrides.emplace_back(std::move(kvo));
|
||||||
}
|
}
|
||||||
if (!imatrix_dataset.empty()) {
|
if (!imatrix_dataset.empty()) {
|
||||||
llama_model_kv_override kvo;
|
llama_model_kv_override kvo;
|
||||||
std::strcpy(kvo.key, LLM_KV_QUANTIZE_IMATRIX_DATASET);
|
std::strcpy(kvo.key, LLM_KV_QUANTIZE_IMATRIX_DATASET);
|
||||||
kvo.tag = LLAMA_KV_OVERRIDE_TYPE_STR;
|
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));
|
kv_overrides.emplace_back(std::move(kvo));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
2
llama.h
2
llama.h
|
@ -201,11 +201,11 @@ extern "C" {
|
||||||
struct llama_model_kv_override {
|
struct llama_model_kv_override {
|
||||||
char key[128];
|
char key[128];
|
||||||
enum llama_model_kv_override_type tag;
|
enum llama_model_kv_override_type tag;
|
||||||
|
char str_value[128];
|
||||||
union {
|
union {
|
||||||
int64_t int_value;
|
int64_t int_value;
|
||||||
double float_value;
|
double float_value;
|
||||||
bool bool_value;
|
bool bool_value;
|
||||||
char * str_value;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue