Skip to content

Commit

Permalink
lora : raise error if lm_head is ignored (#9103)
Browse files Browse the repository at this point in the history
* lora : raise error if lm_head is ignored

* fix style

* clarify comment
  • Loading branch information
ngxson authored Sep 12, 2024
1 parent 2a82511 commit d4c3c10
Showing 1 changed file with 7 additions and 1 deletion.
8 changes: 7 additions & 1 deletion convert_lora_to_gguf.py
Original file line number Diff line number Diff line change
Expand Up @@ -363,7 +363,13 @@ def get_tensors(self) -> Iterator[tuple[str, Tensor]]:
yield (name, cast(torch.Tensor, LoraTorchTensor(tensor.A, tensor.B)))

def modify_tensors(self, data_torch: Tensor, name: str, bid: int | None) -> Iterable[tuple[str, Tensor]]:
dest = super().modify_tensors(data_torch, name, bid)
dest = list(super().modify_tensors(data_torch, name, bid))
# some archs may have the same tensor for lm_head and output (tie word embeddings)
# in this case, adapters targeting lm_head will fail when using llama-export-lora
# therefore, we ignore them for now
# see: https://github.com/ggerganov/llama.cpp/issues/9065
if name == "lm_head.weight" and len(dest) == 0:
raise ValueError("lm_head is present in adapter, but is ignored in base model")
for dest_name, dest_data in dest:
assert isinstance(dest_data, LoraTorchTensor)
lora_a, lora_b = dest_data.get_lora_A_B()
Expand Down

0 comments on commit d4c3c10

Please sign in to comment.