@@ -1808,6 +1808,12 @@ int llama_apply_lora_from_file(struct llama_context * ctx, const char * path_lor
1808
1808
ggml_context* lora_ctx = ggml_init (params);
1809
1809
std::unordered_map<std::string, struct ggml_tensor *> lora_tensors;
1810
1810
1811
+ // create a name -> tensor map of the model to accelerate lookups
1812
+ std::unordered_map<std::string, struct ggml_tensor *> model_tensors;
1813
+ for (auto & kv: model.tensors_by_name ) {
1814
+ model_tensors.insert (kv);
1815
+ }
1816
+
1811
1817
fprintf (stderr, " %s: " , __func__);
1812
1818
1813
1819
// read tensors and apply
@@ -1847,7 +1853,7 @@ int llama_apply_lora_from_file(struct llama_context * ctx, const char * path_lor
1847
1853
base_name.erase (pos);
1848
1854
// fprintf(stderr, "%s: %s => %s (lora type %s) ", __func__, name.c_str(),base_name.c_str(), lora_type.c_str());
1849
1855
1850
- if (model. tensors . find (base_name.data ()) == model. tensors .end ()) {
1856
+ if (model_tensors. find (base_name.data ()) == model_tensors .end ()) {
1851
1857
fprintf (stderr, " %s: unknown tensor '%s' in lora adapter\n " , __func__, name.data ());
1852
1858
return 1 ;
1853
1859
}
@@ -1886,7 +1892,7 @@ int llama_apply_lora_from_file(struct llama_context * ctx, const char * path_lor
1886
1892
if (lora_tensors.find (base_name + " .loraA" ) != lora_tensors.end () &&
1887
1893
lora_tensors.find (base_name + " .loraB" ) != lora_tensors.end ()) {
1888
1894
1889
- ggml_tensor * tensor = model. tensors [base_name];
1895
+ ggml_tensor * tensor = model_tensors [base_name];
1890
1896
ggml_tensor * loraA = lora_tensors[base_name + " .loraA" ];
1891
1897
ggml_tensor * loraB = lora_tensors[base_name + " .loraB" ];
1892
1898
0 commit comments