Skip to content

Commit a652214

Browse files
Skip composite model test for transformers <v5
Transformers v4 uses list format for _tied_weights_keys which cannot properly represent independent weight tying within separate sub-models. The test requires v5+ dict format to correctly express this scenario.
1 parent d9177fb commit a652214

1 file changed

Lines changed: 3 additions & 8 deletions

File tree

tests/test_trainable_tokens.py

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424

2525
from peft import AutoPeftModel, LoraConfig, PeftModel, TrainableTokensConfig, get_peft_model
2626
from peft.tuners.trainable_tokens.layer import TrainableTokensLayer
27-
from peft.utils import TrainableTokensWrapper, get_peft_model_state_dict
27+
from peft.utils import TrainableTokensWrapper, get_peft_model_state_dict, is_transformers_ge_v5
2828

2929
from .testing_utils import hub_online_once
3030

@@ -1200,6 +1200,7 @@ def test_untied_model_dict_no_ensure(self, model_weight_untied, trainable_token_
12001200
# They should NOT share delta parameters (model doesn't have tied weights)
12011201
assert embed_adapter.trainable_tokens_delta is not lm_head_adapter.trainable_tokens_delta
12021202

1203+
@pytest.mark.skipif(not is_transformers_ge_v5, reason="Test requires transformers v5+ dict format for _tied_weights_keys")
12031204
def test_composite_model_multiple_embed_tokens_specific_targeting(self):
12041205
"""Test that users can specify full paths to disambiguate multiple embed_tokens layers.
12051206
@@ -1239,13 +1240,7 @@ def __init__(self):
12391240
# Add a config attribute for PEFT
12401241
self.config = config1
12411242

1242-
# Avoid mixing list-format (transformers <v5) and dict-format _tied_weights_keys.
1243-
# Set sub-models to None when they use list format, then use dict at composite level.
1244-
if isinstance(self.m1._tied_weights_keys, list):
1245-
self.m1._tied_weights_keys = None
1246-
self.m2._tied_weights_keys = None
1247-
1248-
# Dict format correctly represents independent tied weights within each sub-model
1243+
# Use dict format to correctly represent independent tied weights within each sub-model
12491244
self._tied_weights_keys = {
12501245
"m1.decoder.embed_tokens.weight": "m1.encoder.embed_tokens.weight",
12511246
"m2.decoder.embed_tokens.weight": "m2.encoder.embed_tokens.weight",

0 commit comments

Comments
 (0)