From d164c690cda7b8dadedbce6aa330937638944b2a Mon Sep 17 00:00:00 2001 From: Qubitium Date: Wed, 18 Mar 2026 09:42:12 +0000 Subject: [PATCH 1/2] add missing --- defuser/checkpoint_ops.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 defuser/checkpoint_ops.py diff --git a/defuser/checkpoint_ops.py b/defuser/checkpoint_ops.py new file mode 100644 index 0000000..b93670b --- /dev/null +++ b/defuser/checkpoint_ops.py @@ -0,0 +1,15 @@ +import torch +from transformers.core_model_loading import Chunk + + +class OwnedChunk(Chunk): + """Split fused tensors into independent chunks so save/load keeps both weights.""" + + @torch.no_grad + def convert( + self, input_dict: dict[str, torch.Tensor], source_patterns: list[str], target_patterns: list[str], **kwargs + ) -> dict[str, torch.Tensor]: + split = super().convert(input_dict, source_patterns, target_patterns, **kwargs) + # `torch.chunk()` returns views into shared storage, which can make safetensors + # drop one side of the split tensor during save. Clone each chunk to own storage. + return {name: tensor.contiguous().clone() for name, tensor in split.items()} From 5d424a4a72a39ef1039fa302770ae48e5b5fb9e3 Mon Sep 17 00:00:00 2001 From: Qubitium Date: Wed, 18 Mar 2026 09:42:27 +0000 Subject: [PATCH 2/2] add missing --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index dc9126b..1b16301 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -9,7 +9,7 @@ build-backend = "setuptools.build_meta" [project] name = "Defuser" -version = "0.0.13" +version = "0.0.14" description = "Model defuser helper for HF Transformers." readme = "README.md" requires-python = ">=3.9"