`HyperParameterTuningJob.create` rejects tuner tags on Python 3.14
Maintainer antworten meist innerhalb von 1 Tag
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Anfängerfreundlichkeit
- 72/100
- Issue-Typ
- Bug
- Klarheit
- Klar beschrieben
- Aktivitätsstatus
- Aktiv
- Tech-Stack
- python
- Bereich
- machine-learning
Rechercherichtung
Beginne mit der tags-Annotation an HyperParameterTuningJob.create im Ressourcenmodul von sagemaker-core und mit den Tag-Objekten, die in HyperparameterTuner.tune() erstellt werden. Der Fehler besteht darin, dass der unqualifizierte Name Tag unter Python 3.14 auf das Ressourcenmodell aufgelöst wird. Fertig ist es, wenn eine getaggte HPO-Anfrage unter Python 3.14 validiert wird und ein Regressionstest für diesen Fall besteht.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
PySDK Version
- PySDK V2 (2.x)
- PySDK V3 (3.x)
Describe the bug
Tagged HyperparameterTuner requests fail validation on Python 3.14.
Equivalent requests succeed on Python 3.12.
The tuner creates request tags as sagemaker.core.shapes.Tag.
On Python 3.14, HyperParameterTuningJob.create() resolves its tags
annotation as list[sagemaker.core.resources.Tag].
Both classes have the same key and value fields. However, they are separate
Pydantic models. Pydantic rejects the shapes model instead of converting it to
the generated resource model.
The failure occurs before the SDK calls SageMaker.
This is not a SageMaker v3.28 regression. The behavior also reproduces with the
v3.27 component set on Python 3.14.
To reproduce
Save this script as reproduce.py. It does not call a live AWS service.
import importlib.metadata
import inspect
import sys
from pydantic import TypeAdapter
from sagemaker.core.resources import HyperParameterTuningJob
from sagemaker.core.shapes import Tag
tags_annotation = inspect.signature(
HyperParameterTuningJob.create
).parameters["tags"].annotation
print("Python:", sys.version)
print("SageMaker:", importlib.metadata.version("sagemaker"))
print("SageMaker Core:", importlib.metadata.version("sagemaker-core"))
print("Resource annotation:", tags_annotation)
validated_tags = TypeAdapter(tags_annotation).validate_python(
[
Tag(
key="project",
value="hpo-tag-reproduction",
)
]
)
print("Validated tags:", validated_tags)
Run it with Python 3.12:
uvx --python 3.12 --from sagemaker==3.28.0 python reproduce.py
The script succeeds. The annotation resolves to
sagemaker.core.shapes.Tag.
Run it with Python 3.14:
uvx --python 3.14 --from sagemaker==3.28.0 python reproduce.py
The script fails. The annotation resolves to
sagemaker.core.resources.Tag.
The same mismatch occurs during HyperparameterTuner.tune(). The tuner creates
its request tags with this code:
from sagemaker.core.shapes import Tag
tag_objects = [
Tag(key=boto_tag["Key"], value=boto_tag["Value"])
for boto_tag in (_to_boto_tag(tag) for tag in self.tags)
]
Expected behavior
HyperParameterTuningJob.create() must accept the tag model produced by
HyperparameterTuner on every supported Python version.
Screenshots or logs
Python 3.14 produces this error:
Resource annotation: typing.List[sagemaker.core.resources.Tag] | None
Traceback (most recent call last):
...
pydantic_core._pydantic_core.ValidationError:
1 validation error for nullable[list[Tag]]
0
Input should be a valid dictionary or instance of Tag
[type=model_type,
input_value=Tag(key='project', value='hpo-tag-reproduction'),
input_type=Tag]
System information
- SageMaker Python SDK version: 3.28.0
- SageMaker Core version: 2.28.0
- SageMaker Train version: 1.28.0
- Framework name (eg. PyTorch) or algorithm (eg. KMeans): Framework-independent
- Framework version: Not applicable
- Python version: 3.14
- CPU or GPU: CPU
- Custom Docker image (Y/N): Reproduces before image selection
Additional context
Python 3.14 uses deferred annotation evaluation. The unqualified Tag name
resolves after sagemaker.core.resources.Tag exists in the module.
Earlier Python versions capture the imported sagemaker.core.shapes.Tag when
the function is defined.
A stable fix can import the public shape with an unambiguous alias:
from sagemaker.core.shapes import Tag as ShapeTag
def create(
# ...
tags: list[ShapeTag] | None = None,
):
...
Tests must exercise tagged HPO request validation on Python 3.14.
- Vorherrschende Sprache
- Python
- Sterne
- 2.3k
- Forks
- 1.3k
- Ø Merge
- 1 T. 14 Std.
- Gemergte PRs (30 T.)
- 62
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus aws/sagemaker-python-sdk
-
get_base_python_image_uri() returns URIs for unsupported Python versionsEvtl. vergeben @Fire162 hat das vor 5 Tagen übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 74/100
aws/sagemaker-python-sdk#6539 ·
Maintainer antworten meist innerhalb von 1 Tag
-
[Bug] ModelTrainer with no input channels emits InputDataConfig: [], which CreatePipeline rejects (min=1) — v2 omitted the keyEvtl. vergeben @sagemaker-bot hat das vor 34 Tagen übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
aws/sagemaker-python-sdk#6156 · 2 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
sagemaker-train should depend on mlflow-skinny, following sagemaker-mlflow 0.5.0Evtl. vergeben @mohamedzeidan2021 hat das vor 35 Tagen übernommen. Offen
Schwierigkeit 2/5 Ein halber Tag Anfängerfreundlichkeit 72/100
aws/sagemaker-python-sdk#6152 ·
Maintainer antworten meist innerhalb von 1 Tag
-
`ModelTrainer` bug with method to load hyperparameters from file for Amazon Nova RecipeEvtl. vergeben @sagemaker-bot hat das vor 34 Tagen übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
aws/sagemaker-python-sdk#5770 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
aws/sagemaker-python-sdk#5588 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in aws/sagemaker-python-sdk
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 62/100
earthtojake/text-to-cad#758 ·
Maintainer antworten meist innerhalb von 1 Tag
-
domain:upgrades enhancement needs-triage
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 66/100
gke-labs/kube-agents#4634 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 62/100
agardnerIT/opamp-server-py#116 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
Maintainer antworten meist innerhalb von 1 Tag
-
enhancement good first issue
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
elviskahoro/sdk-python-attio#144 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag