mirror of
https://github.com/ggerganov/llama.cpp.git
synced 2024-12-27 03:44:35 +00:00
add sanity check
This commit is contained in:
parent
0e16188985
commit
6c617e20ef
@ -18521,7 +18521,7 @@ static void llama_model_quantize_internal(const std::string & fname_inp, const s
|
|||||||
static void llama_lora_adapter_init_internal(struct llama_model * model, const char * path_lora, struct llama_lora_adapter & adapter) {
|
static void llama_lora_adapter_init_internal(struct llama_model * model, const char * path_lora, struct llama_lora_adapter & adapter) {
|
||||||
static const int n_inp_tensors = 5; // see llama_model
|
static const int n_inp_tensors = 5; // see llama_model
|
||||||
static const int n_out_tensors = 5; // see llama_model
|
static const int n_out_tensors = 5; // see llama_model
|
||||||
LLAMA_LOG_INFO("%s: applying lora adapter from '%s' - please wait ...\n", __func__, path_lora);
|
LLAMA_LOG_INFO("%s: applying lora adapter from '%s' ...\n", __func__, path_lora);
|
||||||
|
|
||||||
ggml_context * ctx = nullptr;
|
ggml_context * ctx = nullptr;
|
||||||
struct gguf_init_params meta_gguf_params = {
|
struct gguf_init_params meta_gguf_params = {
|
||||||
@ -18530,8 +18530,7 @@ static void llama_lora_adapter_init_internal(struct llama_model * model, const c
|
|||||||
};
|
};
|
||||||
struct gguf_context * ctx_gguf = gguf_init_from_file(path_lora, meta_gguf_params);
|
struct gguf_context * ctx_gguf = gguf_init_from_file(path_lora, meta_gguf_params);
|
||||||
if (!ctx_gguf) {
|
if (!ctx_gguf) {
|
||||||
LLAMA_LOG_ERROR("%s: failed to load lora adapter file from %s\n", __func__, path_lora);
|
throw std::runtime_error("failed to load lora adapter file from " + std::string(path_lora));
|
||||||
throw std::exception();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// check metadata
|
// check metadata
|
||||||
@ -18631,11 +18630,17 @@ static void llama_lora_adapter_init_internal(struct llama_model * model, const c
|
|||||||
if (!model_tensor) {
|
if (!model_tensor) {
|
||||||
gguf_free(ctx_gguf);
|
gguf_free(ctx_gguf);
|
||||||
ggml_free(ctx);
|
ggml_free(ctx);
|
||||||
throw std::runtime_error("LoRA tensor '" + name + "' does not exist in base model\n");
|
throw std::runtime_error("LoRA tensor '" + name + "' does not exist in base model");
|
||||||
}
|
}
|
||||||
struct ggml_context * dev_ctx = ctx_map.at(ggml_backend_buffer_get_type(model_tensor->buffer));
|
struct ggml_context * dev_ctx = ctx_map.at(ggml_backend_buffer_get_type(model_tensor->buffer));
|
||||||
// TODO: validate tensor shape
|
// validate tensor shape
|
||||||
// LLAMA_LOG_INFO("%s %p %p\n", cname, w.a, w.b);
|
if (model_tensor->ne[0] != w.a->ne[0] || model_tensor->ne[1] != w.b->ne[1]) {
|
||||||
|
throw std::runtime_error("tensor '" + name + "' has incorrect shape");
|
||||||
|
}
|
||||||
|
if (w.a->ne[1] != w.b->ne[0]) {
|
||||||
|
throw std::runtime_error("lora_a tensor is not transposed (hint: adapter from \"finetune\" example is no longer supported)");
|
||||||
|
}
|
||||||
|
// save tensor to adapter
|
||||||
struct ggml_tensor * tensor_a = ggml_dup_tensor(dev_ctx, w.a);
|
struct ggml_tensor * tensor_a = ggml_dup_tensor(dev_ctx, w.a);
|
||||||
struct ggml_tensor * tensor_b = ggml_dup_tensor(dev_ctx, w.b);
|
struct ggml_tensor * tensor_b = ggml_dup_tensor(dev_ctx, w.b);
|
||||||
ggml_set_name(tensor_a, w.a->name);
|
ggml_set_name(tensor_a, w.a->name);
|
||||||
|
Loading…
Reference in New Issue
Block a user