Skip to content

Commit 07fd331

Browse files
Refactor revision handling: remove private attribute hack
1 parent 53bc613 commit 07fd331

2 files changed

Lines changed: 8 additions & 20 deletions

File tree

src/chronos/chronos2/pipeline.py

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,10 @@ class Chronos2Pipeline(BaseChronosPipeline):
4040
forecast_type: ForecastType = ForecastType.QUANTILES
4141
default_context_length: int = 2048
4242

43-
def __init__(self, model: Chronos2Model):
43+
def __init__(self, model: Chronos2Model, revision: str | None = None):
4444
super().__init__(inner_model=model)
4545
self.model = model
46-
46+
self.revision = revision
4747
@staticmethod
4848
def _get_prob_mass_per_quantile_level(quantile_levels: torch.Tensor) -> torch.Tensor:
4949
"""
@@ -195,7 +195,7 @@ def fit(
195195
model.load_state_dict(self.model.state_dict())
196196

197197
if finetune_mode == "lora":
198-
lora_revision = getattr(self.model.config, "_source_revision", None)
198+
lora_revision = self.revision
199199
if lora_config is None:
200200
lora_config = LoraConfig(
201201
r=8,
@@ -210,7 +210,6 @@ def fit(
210210
revision=lora_revision,
211211
)
212212
elif isinstance(lora_config, dict):
213-
lora_config.setdefault("revision", lora_revision)
214213
lora_config = LoraConfig(**lora_config)
215214
else:
216215
assert isinstance(lora_config, LoraConfig), (
@@ -1183,10 +1182,7 @@ def from_pretrained(cls, pretrained_model_name_or_path, *args, **kwargs):
11831182
model = AutoPeftModel.from_pretrained(pretrained_model_name_or_path, *args, **kwargs)
11841183
model = model.merge_and_unload()
11851184

1186-
if revision:
1187-
model.config._source_revision = revision
1188-
1189-
return cls(model=model)
1185+
return cls(model=model, revision=revision)
11901186

11911187
# Handle the case for the base model
11921188
config = AutoConfig.from_pretrained(pretrained_model_name_or_path, *args, **kwargs)
@@ -1201,10 +1197,7 @@ def from_pretrained(cls, pretrained_model_name_or_path, *args, **kwargs):
12011197

12021198
model = class_.from_pretrained(pretrained_model_name_or_path, *args, **kwargs)
12031199

1204-
if revision:
1205-
model.config._source_revision = revision
1206-
1207-
return cls(model=model)
1200+
return cls(model=model, revision=revision)
12081201

12091202
def save_pretrained(self, save_directory: str | Path, *args, **kwargs):
12101203
"""

test/test_chronos2.py

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1139,18 +1139,13 @@ def test_lora_config_uses_source_revision_from_instantiation(
11391139
pipeline: Chronos2Pipeline, tmpdir, source_revision
11401140
):
11411141
"""
1142-
Test that fit in 'lora' mode correctly uses the '_source_revision'
1143-
that was (notionally) stored in the model's config during instantiation.
1142+
Test that fit in 'lora' mode correctly uses the 'revision'
1143+
stored in the pipeline instance.
11441144
"""
11451145
output_dir = Path(tmpdir)
11461146
dummy_inputs = [torch.rand(100)]
11471147

1148-
# Manually set the source revision on the config to simulate
1149-
# it being set during from_pretrained
1150-
if source_revision:
1151-
pipeline.model.config._source_revision = source_revision
1152-
elif hasattr(pipeline.model.config, "_source_revision"):
1153-
delattr(pipeline.model.config, "_source_revision")
1148+
pipeline.revision = source_revision
11541149

11551150
pipeline.fit(
11561151
inputs=dummy_inputs,

0 commit comments

Comments
 (0)