Skip to content

Commit 0d8999a

Browse files
committed
Add compatibility with #801
1 parent 4ae3167 commit 0d8999a

File tree

2 files changed

+10
-3
lines changed

2 files changed

+10
-3
lines changed

examples/common.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,7 @@ bool gpt_params_parse(int argc, char ** argv, gpt_params & params) {
151151
break;
152152
}
153153
params.lora_adapter = argv[i];
154+
params.use_mmap = false;
154155
} else if (arg == "-i" || arg == "--interactive") {
155156
params.interactive = true;
156157
} else if (arg == "--embedding") {
@@ -254,7 +255,7 @@ void gpt_print_usage(int /*argc*/, char ** argv, const gpt_params & params) {
254255
}
255256
fprintf(stderr, " --mtest compute maximum memory usage\n");
256257
fprintf(stderr, " --verbose-prompt print prompt before generation\n");
257-
fprintf(stderr, " --lora FNAME apply LoRA adapter\n");
258+
fprintf(stderr, " --lora FNAME apply LoRA adapter (implies --no-mmap)\n");
258259
fprintf(stderr, " -m FNAME, --model FNAME\n");
259260
fprintf(stderr, " model path (default: %s)\n", params.model.c_str());
260261
fprintf(stderr, "\n");

llama.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1800,6 +1800,12 @@ int llama_apply_lora_from_file(struct llama_context * ctx, const char * path_lor
18001800
ggml_context* lora_ctx = ggml_init(params);
18011801
std::unordered_map<std::string, struct ggml_tensor *> lora_tensors;
18021802

1803+
// create a name -> tensor map of the model to accelerate lookups
1804+
std::unordered_map<std::string, struct ggml_tensor*> model_tensors;
1805+
for (auto & kv: model.tensors_by_name) {
1806+
model_tensors.insert(kv);
1807+
}
1808+
18031809
fprintf(stderr, "%s: ", __func__);
18041810

18051811
// read tensors and apply
@@ -1839,7 +1845,7 @@ int llama_apply_lora_from_file(struct llama_context * ctx, const char * path_lor
18391845
base_name.erase(pos);
18401846
// fprintf(stderr, "%s: %s => %s (lora type %s) ", __func__, name.c_str(),base_name.c_str(), lora_type.c_str());
18411847

1842-
if (model.tensors.find(base_name.data()) == model.tensors.end()) {
1848+
if (model_tensors.find(base_name.data()) == model_tensors.end()) {
18431849
fprintf(stderr, "%s: unknown tensor '%s' in lora adapter\n", __func__, name.data());
18441850
return 1;
18451851
}
@@ -1878,7 +1884,7 @@ int llama_apply_lora_from_file(struct llama_context * ctx, const char * path_lor
18781884
if (lora_tensors.find(base_name + ".loraA") != lora_tensors.end() &&
18791885
lora_tensors.find(base_name + ".loraB") != lora_tensors.end()) {
18801886

1881-
ggml_tensor * tensor = model.tensors[base_name];
1887+
ggml_tensor * tensor = model_tensors[base_name];
18821888
ggml_tensor * loraA = lora_tensors[base_name + ".loraA"];
18831889
ggml_tensor * loraB = lora_tensors[base_name + ".loraB"];
18841890

0 commit comments

Comments
 (0)