aws / aws/sagemaker-python-sdk

`ModelTrainer` bug with method to load hyperparameters from file for Amazon Nova Recipe

Open Beginner friendly
#5,770 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
2.3k
Forks
1.3k
Avg merge
1d 22h
Merged PRs (30d)
35

Description

`**PySDK` Version**
- [ ] PySDK V2 (2.x)
- [x ] PySDK V3 (3.x)

**Describe the bug**
[Code](https://github.com/aws/sagemaker-python-sdk/blob/98683ac4cf5fcb0e734ff46ec046d32ade44494e/sagemaker-train/src/sagemaker/train/model_trainer.py#L1215-L1220) is using method `self._validate_and_load_hyperparameters_file` instead of self._validate_and_fetch_hyperparameters_file`:
```
if is_nova:
if hyperparameters and isinstance(hyperparameters, str):
hyperparameters = cls._validate_and_load_hyperparameters_file(hyperparameters) # bug
model_trainer_args["hyperparameters"].update(hyperparameters)
elif hyperparameters and isinstance(hyperparameters, dict):
model_trainer_args["hyperparameters"].update(hyperparameters)
```

**To reproduce**
```
from sagemaker.train.model_trainer import ModelTrainer
from sagemaker.train.configs import Compute

model_trainer = ModelTrainer.from_recipe(
training_image="327873000638.dkr.ecr.us-east-1.amazonaws.com/hyperpod-recipes:verl-v1.0.0-smtj",
training_recipe="training/nova/nova_1_0/nova_lite/CPT/nova_lite_1_0_p5x16_gpu_pretrain",
compute=Compute(instance_type="ml.m5.xlarge"),
hyperparameters="test",
)
```
```
│ │
│ 287 │ │ │ private_attributes = self.__dict__.get('__private_attributes__') │
│ 288 │ │ │ if private_attributes and item in private_attributes: │
│ 289 │ │ │ │ return private_attributes[item] │
│ ❱ 290 │ │ │ raise AttributeError(item) │
│ 291 │ │
│ 292 │ @classmethod │
│ 293 │ def __prepare__(cls, *args: Any, **kwargs: Any) -> dict[str, object]: │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
AttributeError: _validate_and_load_hyperparameters_file
```
**Expected behavior**
No `AttributeError` to be raised when using hyperparameter file (string).

Contributor guide

Open the contributing guide

Research direction

Start in sagemaker-train/src/sagemaker/train/model_trainer.py at the ModelTrainer.from_recipe logic around lines 1215-1220. Trace the string hyperparameters path and compare the referenced validation methods. Done means a hyperparameter file string no longer raises AttributeError for an Amazon Nova Recipe and is fetched through the intended method.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
machine-learning
Issue type
Bug
Difficulty
2/5
Estimated time
1-3 hours
Activity status
Quiet
Clarity
Clearly specified
Newbie friendliness
82/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.